ExportToWriterListener listener = new ExportToWriterListener(fileWriter); prepareExportToWriterListener(listener); listener.processEvent(queryBatch);
/** * Copies all of the applicable properties to the listener that have been set on this class. * * @param listener */ protected void prepareExportToWriterListener(ExportToWriterListener listener) { super.prepareExportListener(listener); if (includeXmlOutputListener) { listener.onGenerateOutput(new XmlOutputListener()); } if (recordPrefix != null) { listener.withRecordPrefix(recordPrefix); } if (recordSuffix != null) { listener.withRecordSuffix(recordSuffix); } }
ExportToWriterListener exportListener = new ExportToWriterListener(writer) .withRecordSuffix("\n") .withMetadataCategory(DocumentManager.Metadata.COLLECTIONS) .onGenerateOutput( record -> { String uri = record.getUri();
@Test public void testExportToWriterListenerException() { final AtomicInteger failureBatchCount = new AtomicInteger(); testListenerException( new ExportToWriterListener(new StringWriter()) .withTransform(new ServerTransform("thisTransformDoesntExist")) .onBatchFailure( (batch, throwable) -> failureBatchCount.incrementAndGet() ) ); // there should be one failure sent to the ExportToWriterListener // onBatchFailure listener since the transform is invalid assertEquals(1, failureBatchCount.get()); }
public ExportToFileJob() { super(); addRequiredJobProperty("exportPath", "The path of the file to which selected records are exported", value -> setExportFile(new File(value))); addJobProperty("fileHeader", "Optional content that should be written to the start of each file", value -> setFileHeader(value)); addJobProperty("fileFooter", "Optional content that should be written to the end of each file", value -> setFileFooter(value)); addJobProperty("recordPrefix", "Optional content to be written before each record is written", value -> getExportListener().withRecordPrefix(value)); addJobProperty("recordSuffix", "Optional content to be written after each record is written", value -> getExportListener().withRecordSuffix(value)); addJobProperty("transform", "Optional REST transform to apply to each record before it is written", value -> getExportListener().withTransform(new ServerTransform(value))); }
@Override public void processEvent(QueryBatch batch) { try ( DocumentPage docs = getDocs(batch) ) { synchronized(writer) { for ( DocumentRecord doc : docs ) { for ( BatchFailureListener<Batch<String>> listener : getFailureListeners() ) { try { listener.processFailure(batch, t); for ( BatchFailureListener<QueryBatch> queryBatchFailureListener : getBatchFailureListeners() ) { try { queryBatchFailureListener.processFailure(batch, t);
public void setExportFile(File exportFile) { this.exportFile = exportFile; File parentFile = this.exportFile.getParentFile(); if (parentFile != null) { parentFile.mkdirs(); } try { this.fileWriter = new FileWriter(exportFile); } catch (IOException ie) { throw new RuntimeException("Unable to open FileWriter on file: " + exportFile + "; cause: " + ie.getMessage(), ie); } this.exportToWriterListener = new ExportToWriterListener(fileWriter); this.addUrisReadyListener(exportToWriterListener); }
@Override protected void prepareQueryBatcher(QueryBatcher queryBatcher) { super.prepareQueryBatcher(queryBatcher); if (includeXmlOutputListener) { this.exportToWriterListener.onGenerateOutput(new XmlOutputListener()); } try { if (fileHeader != null) { fileWriter.write(fileHeader); fileWriter.write("\n"); } } catch (IOException e) { throw new RuntimeException(e); } }
/** * This implementation of initializeListener adds this instance of * ExportToWriterListener to the two RetryListener's in this QueryBatcher so they * will retry any batches that fail during the read request. */ @Override public void initializeListener(QueryBatcher queryBatcher) { HostAvailabilityListener hostAvailabilityListener = HostAvailabilityListener.getInstance(queryBatcher); if ( hostAvailabilityListener != null ) { BatchFailureListener<QueryBatch> retryListener = hostAvailabilityListener.initializeRetryListener(this); if ( retryListener != null ) onFailure(retryListener); } NoResponseListener noResponseListener = NoResponseListener.getInstance(queryBatcher); if ( noResponseListener != null ) { BatchFailureListener<QueryBatch> noResponseRetryListener = noResponseListener.initializeRetryListener(this); if ( noResponseRetryListener != null ) onFailure(noResponseRetryListener); } }