Search in sources :

Example 1 with GeoEntryIndexingException

use of org.codice.ddf.spatial.geocoding.GeoEntryIndexingException in project ddf by codice.

the class Geocoding method updateIndex.

private boolean updateIndex(String resource, boolean createIndex) {
    final ProgressCallback progressCallback = new ProgressCallback() {

        @Override
        public void updateProgress(final int progress) {
            setProgress(progress);
        }
    };
    LOGGER.trace("Updating GeoNames Index...");
    try {
        geoEntryIndexer.updateIndex(resource, geoEntryExtractor, createIndex, progressCallback);
        LOGGER.trace("\nDone Updating GeoNames Index.");
        LOGGER.debug("Done Updating GeoNames Index with : {}", resource);
        return true;
    } catch (GeoEntryExtractionException e) {
        LOGGER.debug("Error extracting GeoNames data from resource {}", resource, e);
        return false;
    } catch (GeoEntryIndexingException e) {
        LOGGER.debug("Error indexing GeoNames data", e);
        return false;
    } catch (GeoNamesRemoteDownloadException e) {
        LOGGER.debug("Error downloading resource from remote source {}", resource, e);
        return false;
    }
}
Also used : GeoNamesRemoteDownloadException(org.codice.ddf.spatial.geocoding.GeoNamesRemoteDownloadException) GeoEntryExtractionException(org.codice.ddf.spatial.geocoding.GeoEntryExtractionException) ProgressCallback(org.codice.ddf.spatial.geocoding.ProgressCallback) GeoEntryIndexingException(org.codice.ddf.spatial.geocoding.GeoEntryIndexingException)

Example 2 with GeoEntryIndexingException

use of org.codice.ddf.spatial.geocoding.GeoEntryIndexingException in project ddf by codice.

the class TestGeoNamesUpdateCommand method testExceptionDuringIndexing.

@Test
public void testExceptionDuringIndexing() throws GeoNamesRemoteDownloadException, GeoEntryExtractionException, GeoEntryIndexingException {
    final String errorText = "Indexing error text";
    final GeoEntryExtractor geoEntryExtractor = mock(GeoEntryExtractor.class);
    final GeoEntryIndexer geoEntryIndexer = mock(GeoEntryIndexer.class);
    final GeoEntryIndexingException geoEntryIndexingException = new GeoEntryIndexingException(errorText);
    doThrow(geoEntryIndexingException).when(geoEntryIndexer).updateIndex(anyString(), any(GeoEntryExtractor.class), anyBoolean(), any(ProgressCallback.class));
    geoNamesUpdateCommand.setGeoEntryIndexer(geoEntryIndexer);
    geoNamesUpdateCommand.setGeoEntryExtractor(geoEntryExtractor);
    geoNamesUpdateCommand.setResource("temp");
    geoNamesUpdateCommand.execute();
    assertThat(consoleInterceptor.getOutput(), containsString(errorText));
    consoleInterceptor.resetSystemOut();
}
Also used : GeoEntryIndexer(org.codice.ddf.spatial.geocoding.GeoEntryIndexer) ProgressCallback(org.codice.ddf.spatial.geocoding.ProgressCallback) Matchers.anyString(org.mockito.Matchers.anyString) Matchers.containsString(org.hamcrest.Matchers.containsString) GeoEntryExtractor(org.codice.ddf.spatial.geocoding.GeoEntryExtractor) GeoEntryIndexingException(org.codice.ddf.spatial.geocoding.GeoEntryIndexingException) Test(org.junit.Test)

Example 3 with GeoEntryIndexingException

use of org.codice.ddf.spatial.geocoding.GeoEntryIndexingException in project ddf by codice.

the class TestGeoNamesLuceneIndexerExceptions method testExceptionWhenAddingDocumentByExtractor.

@Test
public void testExceptionWhenAddingDocumentByExtractor() throws GeoEntryIndexingException, GeoEntryExtractionException, GeoNamesRemoteDownloadException, IOException {
    configureMocks();
    geoNamesLuceneIndexer.setIndexLocation(ABSOLUTE_PATH + TEST_PATH + "index");
    try {
        final GeoEntryExtractor geoEntryExtractor = 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) throws GeoEntryExtractionException {
                extractionCallback.updateProgress(0);
                try {
                    extractionCallback.extracted(GEO_ENTRY);
                } catch (GeoEntryIndexingException e) {
                    throw new GeoEntryExtractionException("Unable to add entry.", e);
                }
            }

            @Override
            public void setUrl(String url) {
                return;
            }
        };
        geoNamesLuceneIndexer.updateIndex("", geoEntryExtractor, true, null);
        fail("Should have thrown a GeoEntryExtractionException; extractionCallback.extract() threw " + "a GeoEntryIndexingException because addDocument() threw an " + "IOException.");
    } catch (GeoEntryExtractionException e) {
        assertThat(e.getCause(), instanceOf(GeoEntryIndexingException.class));
    }
}
Also used : GeoEntry(org.codice.ddf.spatial.geocoding.GeoEntry) GeoEntryExtractionException(org.codice.ddf.spatial.geocoding.GeoEntryExtractionException) ProgressCallback(org.codice.ddf.spatial.geocoding.ProgressCallback) GeoEntryExtractor(org.codice.ddf.spatial.geocoding.GeoEntryExtractor) GeoEntryIndexingException(org.codice.ddf.spatial.geocoding.GeoEntryIndexingException) Test(org.junit.Test)

Example 4 with GeoEntryIndexingException

use of org.codice.ddf.spatial.geocoding.GeoEntryIndexingException in project ddf by codice.

the class GeoNamesFileExtractor method pushGeoEntriesToExtractionCallback.

@Override
public void pushGeoEntriesToExtractionCallback(final String resource, final ExtractionCallback extractionCallback) throws GeoEntryExtractionException, GeoNamesRemoteDownloadException {
    if (extractionCallback == null) {
        throw new IllegalArgumentException("You must pass a non-null callback.");
    }
    InputStream fileInputStream = getInputStreamFromResource(resource, extractionCallback);
    try (InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream, StandardCharsets.UTF_8);
        BufferedReader reader = new BufferedReader(inputStreamReader)) {
        double bytesRead = 0.0;
        for (String line; (line = reader.readLine()) != null; ) {
            extractionCallback.extracted(extractGeoEntry(line));
            bytesRead += line.getBytes(StandardCharsets.UTF_8).length;
            extractionCallback.updateProgress((int) (50 + (bytesRead / fileSize) * 50));
        }
        extractionCallback.updateProgress(100);
    } catch (IOException e) {
        throw new GeoEntryExtractionException("Unable to open stream for " + resource, e);
    } catch (IndexOutOfBoundsException | NumberFormatException e) {
        throw new GeoEntryExtractionException(resource + " does not follow the " + "expected GeoNames file format.", e);
    } catch (GeoEntryIndexingException e) {
        throw new GeoEntryExtractionException("Unable to extract GeoEntry from " + resource + ".", e);
    }
}
Also used : GeoEntryExtractionException(org.codice.ddf.spatial.geocoding.GeoEntryExtractionException) InputStreamReader(java.io.InputStreamReader) ZipInputStream(java.util.zip.ZipInputStream) FileInputStream(java.io.FileInputStream) InputStream(java.io.InputStream) BufferedReader(java.io.BufferedReader) IOException(java.io.IOException) GeoEntryIndexingException(org.codice.ddf.spatial.geocoding.GeoEntryIndexingException)

Example 5 with GeoEntryIndexingException

use of org.codice.ddf.spatial.geocoding.GeoEntryIndexingException in project ddf by codice.

the class GeoNamesUpdateCommand method execute.

@Override
public Object execute() {
    final PrintStream console = System.out;
    final ProgressCallback progressCallback = new ProgressCallback() {

        @Override
        public void updateProgress(final int progress) {
            console.printf("\r%d%%", progress);
            console.flush();
        }
    };
    console.println("Updating...");
    try {
        geoEntryIndexer.updateIndex(resource, geoEntryExtractor, create, progressCallback);
        console.println("\nDone.");
    } catch (GeoEntryExtractionException e) {
        LOGGER.debug("Error extracting GeoNames data from resource {}", resource, e);
        console.printf("Could not extract GeoNames data from resource %s.%n" + "Message: %s%n" + "Check the logs for more details.%n", resource, e.getMessage());
    } catch (GeoEntryIndexingException e) {
        LOGGER.debug("Error indexing GeoNames data", e);
        console.printf("Could not index the GeoNames data.%n" + "Message: %s%n" + "Check the logs for more details.%n", e.getMessage());
    } catch (GeoNamesRemoteDownloadException e) {
        LOGGER.debug("Error downloading resource from remote source {}", resource, e);
        console.printf("Could not download the GeoNames file %s.%n  Message: %s%n" + "Check the logs for more details.%n", resource, e.getMessage());
    }
    return null;
}
Also used : GeoNamesRemoteDownloadException(org.codice.ddf.spatial.geocoding.GeoNamesRemoteDownloadException) PrintStream(java.io.PrintStream) GeoEntryExtractionException(org.codice.ddf.spatial.geocoding.GeoEntryExtractionException) ProgressCallback(org.codice.ddf.spatial.geocoding.ProgressCallback) GeoEntryIndexingException(org.codice.ddf.spatial.geocoding.GeoEntryIndexingException)

Aggregations

GeoEntryIndexingException (org.codice.ddf.spatial.geocoding.GeoEntryIndexingException)8 GeoEntryExtractionException (org.codice.ddf.spatial.geocoding.GeoEntryExtractionException)7 ProgressCallback (org.codice.ddf.spatial.geocoding.ProgressCallback)6 GeoEntryExtractor (org.codice.ddf.spatial.geocoding.GeoEntryExtractor)4 Test (org.junit.Test)4 GeoEntry (org.codice.ddf.spatial.geocoding.GeoEntry)3 GeoNamesRemoteDownloadException (org.codice.ddf.spatial.geocoding.GeoNamesRemoteDownloadException)3 IOException (java.io.IOException)2 List (java.util.List)2 ExtractionCallback (org.codice.ddf.spatial.geocoding.GeoEntryExtractor.ExtractionCallback)2 GeoEntryIndexer (org.codice.ddf.spatial.geocoding.GeoEntryIndexer)2 Matchers.containsString (org.hamcrest.Matchers.containsString)2 Matchers.anyString (org.mockito.Matchers.anyString)2 BufferedReader (java.io.BufferedReader)1 FileInputStream (java.io.FileInputStream)1 InputStream (java.io.InputStream)1 InputStreamReader (java.io.InputStreamReader)1 PrintStream (java.io.PrintStream)1 ArrayList (java.util.ArrayList)1 ZipInputStream (java.util.zip.ZipInputStream)1