From ebdcd5186d8bb370bba6b82fb39bfa541469df4b Mon Sep 17 00:00:00 2001 From: "patrick.pdb" Date: Thu, 21 Sep 2023 10:08:05 -0400 Subject: [PATCH] '#1487 Improve exception treatment to save the error in geojson metadata, so it can be better processed in analysis gui. --- .../java/iped/geo/nominatim/NominatimTask.java | 18 +++++++++++++----- .../geo/nominatim/ui/NominatimTreeModel.java | 2 +- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/iped-geo/src/main/java/iped/geo/nominatim/NominatimTask.java b/iped-geo/src/main/java/iped/geo/nominatim/NominatimTask.java index a001c1c7e9..38c6886533 100644 --- a/iped-geo/src/main/java/iped/geo/nominatim/NominatimTask.java +++ b/iped-geo/src/main/java/iped/geo/nominatim/NominatimTask.java @@ -52,6 +52,8 @@ public class NominatimTask extends AbstractTask { public static final String NOMINATIM_ADDRESSTYPE_METADATA = "nominatim:addrestype"; public static final String NOMINATIM_SUBURB_METADATA = "nominatim:suburb"; + public static final String JSON_ERROR_PREFIX = "{\"error\""; + static int MAXTOTAL = 200; /* The http connection pool is static to be used application wide */ @@ -68,6 +70,8 @@ public class NominatimTask extends AbstractTask { private NominatimConfig nominatimConfig; + private Exception unresolvedException; + @Override public List> getConfigurables() { return Arrays.asList(new NominatimConfig()); @@ -114,6 +118,7 @@ public long getKeepAliveDuration(HttpResponse response, HttpContext context) { unresolvedServer = true; } } catch (Exception e) { + unresolvedException = e; unresolvedServer = true; } @@ -151,14 +156,10 @@ private Future executeQuery(String lat, String longit) { return content.toString(); } } - } catch (ClientProtocolException cpe) { - cpe.printStackTrace(); - LOGGER.warn(cpe.getMessage()); } catch (Exception e) { LOGGER.warn(e.getMessage()); - e.printStackTrace(); + return getErrorJson(e); } - return null; }); return f; @@ -199,9 +200,16 @@ protected void process(IItem evidence) throws Exception { } } + } else { + // add the error message to nominatim metadata + evidence.getMetadata().add(NOMINATIM_METADATA, getErrorJson(unresolvedException)); } } + private String getErrorJson(Exception unresolvedException2) { + return JSON_ERROR_PREFIX + " : \"" + unresolvedException.getMessage() + "\"}"; + } + private void processNominatimResult(IItem evidence, String content) { evidence.getMetadata().add(NOMINATIM_METADATA, content); diff --git a/iped-geo/src/main/java/iped/geo/nominatim/ui/NominatimTreeModel.java b/iped-geo/src/main/java/iped/geo/nominatim/ui/NominatimTreeModel.java index dbb12c3bd9..47a76532f3 100644 --- a/iped-geo/src/main/java/iped/geo/nominatim/ui/NominatimTreeModel.java +++ b/iped-geo/src/main/java/iped/geo/nominatim/ui/NominatimTreeModel.java @@ -143,7 +143,7 @@ public boolean hasUnableToGeoCode() { TermsEnum te = ssdv.termsEnum(); BytesRef br = te.next(); if (br != null) { - if (br.utf8ToString().startsWith("{\"error\"")) { + if (br.utf8ToString().startsWith(NominatimTask.JSON_ERROR_PREFIX)) { hasUnableToGeoCode = true; } else { hasUnableToGeoCode = false;