@Override public <C> ContentHandle<C> newHandle(Class<C> type) { ContentHandle<C> handle = isHandled(type) ? (ContentHandle<C>) new JAXBHandle<C>(factoryContext) : null; return handle; } }
@Override public <C> ContentHandle<C> newHandle(Class<C> type) { ContentHandle<C> handle = isHandled(type) ? (ContentHandle<C>) new JAXBHandle<>(factoryContext) : null; return handle; } }
@Override public List<JobExecution> findJobExecutions(JobInstance jobInstance) { String uri = SPRING_BATCH_DIR + jobInstance.getId().toString() + ".xml"; XMLDocumentManager xmlDocMgr = databaseClient.newXMLDocumentManager(); JAXBHandle<MarkLogicJobInstance> handle = new JAXBHandle<>(jaxbContext()); MarkLogicJobInstance mji = xmlDocMgr.read(uri, handle).get(); List<JobExecution> jobExecutions = mji.getJobExecutions(); Collections.reverse(mji.getJobExecutions()); return jobExecutions; }
@Override public JobInstance getJobInstance(Long instanceId) { String uri = SPRING_BATCH_DIR + instanceId.toString() + ".xml"; XMLDocumentManager xmlDocMgr = databaseClient.newXMLDocumentManager(); DocumentDescriptor desc = xmlDocMgr.exists(uri); if (desc == null) { return null; } else { JAXBHandle<MarkLogicJobInstance> jaxbHandle = xmlDocMgr.read(uri, new JAXBHandle<MarkLogicJobInstance>(jaxbContext())); MarkLogicJobInstance mji = jaxbHandle.get(); return mji.getJobInstance(); } }
/** * Read document using JAXBHandle * * @param client * @param uri * @param type * @return * @throws JAXBException */ public JAXBHandle readDocumentUsingJAXBHandle(DatabaseClient client, String uri, String type) throws JAXBException { // create doc manager DocumentManager docMgr = null; docMgr = documentManagerSelector(client, docMgr, type); // create handle JAXBContext con = JAXBContext.newInstance(Product.class); JAXBHandle contentHandle = new JAXBHandle(con); // create doc id String readDocId = uri; System.out.println("Read " + readDocId + " from database"); docMgr.read(readDocId, contentHandle); return contentHandle; }
@Override public List<JobInstance> getJobInstances(String jobName, int start, int count) { QueryManager queryMgr = databaseClient.newQueryManager(); StringQueryDefinition querydef = queryMgr.newStringDefinition(SEARCH_OPTIONS_NAME); querydef.setCriteria("jobName: " + jobName + " AND sort:date"); logger.info(querydef.getCriteria()); SearchHandle results = queryMgr.search(querydef, new SearchHandle()); List<JobInstance> jobInstances = new ArrayList<>(); MatchDocumentSummary[] summaries = results.getMatchResults(); MarkLogicJobInstance mji; if (start+count > summaries.length) { return jobInstances; } for (int i = start; i < start+count; i++) { JAXBHandle<MarkLogicJobInstance> jaxbHandle = new JAXBHandle<>(jaxbContext()); summaries[i].getFirstSnippet(jaxbHandle); mji = jaxbHandle.get(); jobInstances.add(mji.getJobInstance()); } return jobInstances; }
MarkLogicJobInstance jobInstance; for (MatchDocumentSummary summary : summaries ) { JAXBHandle<MarkLogicJobInstance> jaxbHandle = new JAXBHandle<>(jaxbContext()); summary.getFirstSnippet(jaxbHandle); jobInstance = jaxbHandle.get();
@Override public JobExecution getJobExecution(Long executionId) { JobExecution jobExec = null; StructuredQueryBuilder qb = new StructuredQueryBuilder(SEARCH_OPTIONS_NAME); StructuredQueryDefinition querydef = qb.rangeConstraint("jobExecutionId", Operator.EQ, executionId.toString()); QueryManager queryMgr = databaseClient.newQueryManager(); SearchHandle results = queryMgr.search(querydef, new SearchHandle()); if (results.getTotalResults() > 0L) { MatchDocumentSummary[] summaries = results.getMatchResults(); JAXBHandle<MarkLogicJobInstance> handle = new JAXBHandle<>(jaxbContext()); MarkLogicJobInstance mji = summaries[0].getFirstSnippet(handle).get(); if (mji.getJobExecutions().size() >= 1) { for (JobExecution je : mji.getJobExecutions()) { if (je.getId().equals(executionId)) { jobExec = je; } } } } return jobExec; }
@Override public Set<JobExecution> findRunningJobExecutions(String jobName) { StructuredQueryBuilder qb = new StructuredQueryBuilder(SEARCH_OPTIONS_NAME); StructuredQueryDefinition querydef = qb.and(qb.valueConstraint("jobName", jobName)); logger.info(querydef.serialize()); QueryManager queryMgr = databaseClient.newQueryManager(); SearchHandle results = queryMgr.search(querydef, new SearchHandle()); Set<JobExecution> jobExecutions = new HashSet<>(); for ( MatchDocumentSummary summary : results.getMatchResults() ) { JAXBHandle<MarkLogicJobInstance> handle = new JAXBHandle<>(jaxbContext()); summary.getFirstSnippet(handle); MarkLogicJobInstance mji = handle.get(); for (JobExecution je : mji.getJobExecutions()) { if (je.getStatus().isRunning() && je.getEndTime() == null) { jobExecutions.add(je); } } } return jobExecutions; }
@Override public List<JobInstance> findJobInstancesByName(String jobName, int start, int count) { List<JobInstance> jobInstances = new ArrayList<>(); QueryManager queryMgr = databaseClient.newQueryManager(); StructuredQueryBuilder qb = new StructuredQueryBuilder(SEARCH_OPTIONS_NAME); StructuredQueryDefinition querydef = qb.and( qb.valueConstraint("jobName", jobName), qb.collection(COLLECTION_JOB_INSTANCE) ); queryMgr.setPageLength((long) count); SearchHandle results = queryMgr.search(querydef, new SearchHandle(), start); MatchDocumentSummary[] summaries = results.getMatchResults(); for (MatchDocumentSummary summary : summaries ) { JAXBHandle<MarkLogicJobInstance> jaxbHandle = new JAXBHandle<>(jaxbContext()); summary.getFirstSnippet(jaxbHandle); MarkLogicJobInstance mji = jaxbHandle.get(); jobInstances.add(mji.getJobInstance()); } return jobInstances; }
/** * Write document using JAXBHandle with metadata * * @param client * @param product * @param uri * @param metadataHandle * @param type * @throws JAXBException */ public void writeDocumentUsingJAXBHandle(DatabaseClient client, Product product, String uri, DocumentMetadataHandle metadataHandle, String type) throws JAXBException { // set jaxb context JAXBContext context = JAXBContext.newInstance(Product.class); // create doc manager DocumentManager docMgr = null; docMgr = documentManagerSelector(client, docMgr, type); // create an identifier for the document String docId = uri + product.getName() + ".xml"; // create a handle on the content JAXBHandle contentHandle = new JAXBHandle(context); contentHandle.set(product); // write the doc docMgr.write(docId, metadataHandle, contentHandle); System.out.println("Write " + docId + " to the database"); }
@Override public void saveJobExecution(JobExecution jobExecution) { validateJobExecution(jobExecution); jobExecution.incrementVersion(); jobExecution.setId(incrementer.nextLongValue()); XMLDocumentManager xmlDocMgr = databaseClient.newXMLDocumentManager(); String uri = SPRING_BATCH_DIR + jobExecution.getJobInstance().getId().toString() + ".xml"; DocumentDescriptor desc = xmlDocMgr.exists(uri); JAXBHandle<MarkLogicJobInstance> handle = new JAXBHandle<>(jaxbContext()); xmlDocMgr.read(uri, handle); MarkLogicJobInstance mji = handle.get(); mji.addJobExecution(jobExecution); //Set document metadata DocumentMetadataHandle jobInstanceMetadata = new DocumentMetadataHandle(); jobInstanceMetadata.getCollections().add(COLLECTION_JOB_INSTANCE); xmlDocMgr.write(desc, jobInstanceMetadata, handle); logger.info("insert JobExecution:" + uri + "," + desc.getVersion()); }
JAXBHandle objectHandle = new JAXBHandle(context); JAXBHandle<Refers> objectHandle2 = new JAXBHandle<>(context);
writeset.add(docId[0], new JAXBHandle<Product>(context).with(product1)); writeset.add(docId[1], new JAXBHandle<Product>(context).with(product2)); writeset.add(docId[2], new JAXBHandle<Product>(context).with(product3));
JAXBHandle<MarkLogicJobInstance> handle = new JAXBHandle<>(jaxbContext()); xmlDocMgr.read(uri, handle); MarkLogicJobInstance mji = handle.get();
DocumentWriteSet writeset = docMgr.newWriteSet(); writeset.add(docId[0], new JAXBHandle<Product>(context).with(product1)); writeset.add(docId[1], new JAXBHandle<Product>(context).with(product2)); writeset.add(docId[2], new JAXBHandle<Product>(context).with(product3));
JAXBHandle jaxbH = new JAXBHandle(jaxbContext).with(refers);
validateClosingHandleClosesUnderlyingStream(new JacksonParserHandle(), "null"); validateClosingHandleClosesUnderlyingStream( new JAXBHandle<>(context), "<city><population>0</population></city>"); validateClosingHandleClosesUnderlyingStream(new JDOMHandle(), "<xml/>"); validateClosingHandleClosesUnderlyingStream(