use of org.codice.ddf.spatial.geocoding.GeoEntryExtractor.ExtractionCallback in project ddf by codice.
the class TestGeoNamesFileExtractor method testFileExtractionStreaming.
private void testFileExtractionStreaming(final String fileLocation) throws GeoEntryExtractionException, GeoNamesRemoteDownloadException, GeoEntryIndexingException {
final ExtractionCallback extractionCallback = mock(ExtractionCallback.class);
final ArgumentCaptor<GeoEntry> geoEntryArgumentCaptor = ArgumentCaptor.forClass(GeoEntry.class);
geoNamesFileExtractor.pushGeoEntriesToExtractionCallback(fileLocation, extractionCallback);
verify(extractionCallback, atLeastOnce()).updateProgress(anyInt());
verify(extractionCallback, times(3)).extracted(geoEntryArgumentCaptor.capture());
final List<GeoEntry> capturedGeoEntryList = geoEntryArgumentCaptor.getAllValues();
verifyGeoEntryList(capturedGeoEntryList);
}
use of org.codice.ddf.spatial.geocoding.GeoEntryExtractor.ExtractionCallback in project ddf by codice.
the class GazetteerUpdateCommandTest method testFeatureIndexing.
@Test
public void testFeatureIndexing() throws Exception {
String resource = "example.geojson";
final FeatureExtractor featureExtractor = spy(new FeatureExtractor() {
@Override
public void pushFeaturesToExtractionCallback(String resource, ExtractionCallback extractionCallback) throws FeatureExtractionException {
/* stub */
}
});
final FeatureIndexer featureIndexer = spy(new FeatureIndexer() {
@Override
public void updateIndex(String resource, FeatureExtractor featureExtractor, boolean create, IndexCallback callback) throws FeatureExtractionException, FeatureIndexingException {
/* stub */
}
});
gazetteerUpdateCommand.setResource(resource);
gazetteerUpdateCommand.setFeatureExtractor(featureExtractor);
gazetteerUpdateCommand.setFeatureIndexer(featureIndexer);
gazetteerUpdateCommand.executeWithSubject();
verify(featureIndexer, times(1)).updateIndex(eq(resource), eq(featureExtractor), eq(false), any(FeatureIndexer.IndexCallback.class));
}
use of org.codice.ddf.spatial.geocoding.GeoEntryExtractor.ExtractionCallback in project ddf by codice.
the class GazetteerUpdateCommandTest method testProgressOutput.
@Test
public void testProgressOutput() throws Exception {
final GeoEntryExtractor geoEntryExtractor = spy(new GeoEntryExtractor() {
@Override
public List<GeoEntry> getGeoEntries(final String resource, final ProgressCallback progressCallback) {
return null;
}
@Override
public void pushGeoEntriesToExtractionCallback(final String resource, final ExtractionCallback extractionCallback) {
extractionCallback.updateProgress(50);
assertThat(consoleInterceptor.getOutput(), containsString("50%"));
extractionCallback.updateProgress(100);
assertThat(consoleInterceptor.getOutput(), containsString("100%"));
}
@Override
public void setUrl(String url) {
return;
}
});
final GeoEntryExtractor geoEntryUrlExtractor = spy(new GeoEntryExtractor() {
@Override
public List<GeoEntry> getGeoEntries(final String resource, final ProgressCallback progressCallback) {
return null;
}
@Override
public void pushGeoEntriesToExtractionCallback(final String resource, final ExtractionCallback extractionCallback) {
extractionCallback.updateProgress(50);
assertThat(consoleInterceptor.getOutput(), containsString("50%"));
extractionCallback.updateProgress(100);
assertThat(consoleInterceptor.getOutput(), containsString("100%"));
}
@Override
public void setUrl(String url) {
return;
}
});
final GeoEntryIndexer geoEntryIndexer = spy(new GeoEntryIndexer() {
@Override
public void updateIndex(final List<GeoEntry> newEntries, final boolean create, final ProgressCallback progressCallback, final String entrySource) {
/* stub */
}
@Override
public void updateIndex(final String resource, final GeoEntryExtractor geoEntryExtractor, final boolean create, final ProgressCallback progressCallback) throws GeoNamesRemoteDownloadException, GeoEntryIndexingException, GeoEntryExtractionException {
final ExtractionCallback extractionCallback = new ExtractionCallback() {
@Override
public void extracted(final GeoEntry newEntry) {
// Not used in test
}
@Override
public void updateProgress(final int progress) {
progressCallback.updateProgress(progress);
}
};
geoEntryExtractor.pushGeoEntriesToExtractionCallback(resource, extractionCallback);
}
});
List<GeoEntryExtractor> geoEntryExtractors = new ArrayList<>();
geoEntryExtractors.add(geoEntryExtractor);
geoEntryExtractors.add(geoEntryUrlExtractor);
gazetteerUpdateCommand.setGeoEntryExtractor(geoEntryExtractor);
gazetteerUpdateCommand.setGeoEntryIndexer(geoEntryIndexer);
gazetteerUpdateCommand.setResource("test");
gazetteerUpdateCommand.executeWithSubject();
consoleInterceptor.resetSystemOut();
consoleInterceptor.closeBuffer();
}
use of org.codice.ddf.spatial.geocoding.GeoEntryExtractor.ExtractionCallback in project ddf by codice.
the class TestGeoNamesUpdateCommand method testProgressOutput.
@Test
public void testProgressOutput() throws IOException {
final GeoEntryExtractor geoEntryExtractor = spy(new GeoEntryExtractor() {
@Override
public List<GeoEntry> getGeoEntries(final String resource, final ProgressCallback progressCallback) {
return null;
}
@Override
public void pushGeoEntriesToExtractionCallback(final String resource, final ExtractionCallback extractionCallback) {
extractionCallback.updateProgress(50);
assertThat(consoleInterceptor.getOutput(), containsString("50%"));
extractionCallback.updateProgress(100);
assertThat(consoleInterceptor.getOutput(), containsString("100%"));
}
@Override
public void setUrl(String url) {
return;
}
});
final GeoEntryExtractor geoEntryUrlExtractor = spy(new GeoEntryExtractor() {
@Override
public List<GeoEntry> getGeoEntries(final String resource, final ProgressCallback progressCallback) {
return null;
}
@Override
public void pushGeoEntriesToExtractionCallback(final String resource, final ExtractionCallback extractionCallback) {
extractionCallback.updateProgress(50);
assertThat(consoleInterceptor.getOutput(), containsString("50%"));
extractionCallback.updateProgress(100);
assertThat(consoleInterceptor.getOutput(), containsString("100%"));
}
@Override
public void setUrl(String url) {
return;
}
});
final GeoEntryIndexer geoEntryIndexer = spy(new GeoEntryIndexer() {
@Override
public void updateIndex(final List<GeoEntry> newEntries, final boolean create, final ProgressCallback progressCallback) {
}
@Override
public void updateIndex(final String resource, final GeoEntryExtractor geoEntryExtractor, final boolean create, final ProgressCallback progressCallback) throws GeoNamesRemoteDownloadException, GeoEntryIndexingException, GeoEntryExtractionException {
final ExtractionCallback extractionCallback = new ExtractionCallback() {
@Override
public void extracted(final GeoEntry newEntry) {
}
@Override
public void updateProgress(final int progress) {
progressCallback.updateProgress(progress);
}
};
geoEntryExtractor.pushGeoEntriesToExtractionCallback(resource, extractionCallback);
}
});
List<GeoEntryExtractor> geoEntryExtractors = new ArrayList<GeoEntryExtractor>();
geoEntryExtractors.add(geoEntryExtractor);
geoEntryExtractors.add(geoEntryUrlExtractor);
geoNamesUpdateCommand.setGeoEntryExtractor(geoEntryExtractor);
geoNamesUpdateCommand.setGeoEntryIndexer(geoEntryIndexer);
geoNamesUpdateCommand.setResource("test");
geoNamesUpdateCommand.execute();
consoleInterceptor.resetSystemOut();
consoleInterceptor.closeBuffer();
}
use of org.codice.ddf.spatial.geocoding.GeoEntryExtractor.ExtractionCallback in project ddf by codice.
the class GeoNamesLuceneIndexer method updateIndex.
@Override
public void updateIndex(final String resource, final GeoEntryExtractor geoEntryExtractor, final boolean create, final ProgressCallback progressCallback) throws GeoEntryIndexingException, GeoEntryExtractionException, GeoNamesRemoteDownloadException {
Directory directory;
try {
directory = FSDirectory.open(Paths.get(indexLocation));
} catch (IOException e) {
throw new GeoEntryIndexingException("Couldn't open the directory for the index, " + indexLocation, e);
}
// Try-with-resources to ensure the IndexWriter always gets closed.
try (final IndexWriter indexWriter = createIndexWriter(create, directory)) {
final SpatialPrefixTree grid = new GeohashPrefixTree(SPATIAL_CONTEXT, GeoNamesLuceneConstants.GEOHASH_LEVELS);
final SpatialStrategy strategy = new RecursivePrefixTreeStrategy(grid, GeoNamesLuceneConstants.GEO_FIELD);
final ExtractionCallback extractionCallback = new ExtractionCallback() {
@Override
public void extracted(final GeoEntry newEntry) throws GeoEntryIndexingException {
try {
addDocument(indexWriter, newEntry, strategy);
} catch (IOException e) {
throw new GeoEntryIndexingException("Error writing to the index.", e);
}
}
@Override
public void updateProgress(final int progress) {
if (progressCallback != null) {
progressCallback.updateProgress(progress);
}
}
};
try {
geoEntryExtractor.pushGeoEntriesToExtractionCallback(resource, extractionCallback);
} catch (GeoEntryExtractionException e) {
// Need to roll back here before the IndexWriter is closed at the end of the try
// block.
indexWriter.rollback();
throw e;
}
} catch (IOException e) {
throw new GeoEntryIndexingException("Error writing to the index.", e);
}
}
Aggregations