diff --git a/src/main/java/no/nibio/vips/logic/controller/session/ForecastBean.java b/src/main/java/no/nibio/vips/logic/controller/session/ForecastBean.java index ac8ba3e65918dc0bc359ba8959fc56981219cfd4..f292f8099a3b1863e11899ee54e4e5759876b0bb 100755 --- a/src/main/java/no/nibio/vips/logic/controller/session/ForecastBean.java +++ b/src/main/java/no/nibio/vips/logic/controller/session/ForecastBean.java @@ -446,8 +446,7 @@ public class ForecastBean { Integer instancesCompleted = 0; for (VipsCoreInstance vipsCoreInstance : vipsCoreInstances) { LOGGER.debug("Attempting to connect to " + vipsCoreInstance.getUri()); - try { - Client client = ClientBuilder.newClient(); + try (Client client = ClientBuilder.newClient()){ WebTarget target = client.target(vipsCoreInstance.getUri()); ResteasyWebTarget rTarget = (ResteasyWebTarget) target; ManagerResource resource = rTarget.proxy(ManagerResource.class); @@ -759,11 +758,12 @@ public class ForecastBean { * @return */ private ManagerResource getManagerResource(ModelInformation modelInformation) { - Client client = ClientBuilder.newClient(); - WebTarget target = client.target(modelInformation.getVipsCoreInstanceId().getUri()); - ResteasyWebTarget rTarget = (ResteasyWebTarget) target; - ManagerResource resource = rTarget.proxy(ManagerResource.class); - return resource; + try(Client client = ClientBuilder.newClient()){ + WebTarget target = client.target(modelInformation.getVipsCoreInstanceId().getUri()); + ResteasyWebTarget rTarget = (ResteasyWebTarget) target; + ManagerResource resource = rTarget.proxy(ManagerResource.class); + return resource; + } } public Kml getForecastsAggregateKml(List<Integer> organizationIds, List<Integer> cropOrganismIds, Date theDate, diff --git a/src/main/java/no/nibio/vips/logic/service/ObservationService.java b/src/main/java/no/nibio/vips/logic/service/ObservationService.java index 09f31ed6ec7594ce820482b1b121d09b9673aa93..41ff04066eeeb192ca26b043eb1c41040b6720c5 100755 --- a/src/main/java/no/nibio/vips/logic/service/ObservationService.java +++ b/src/main/java/no/nibio/vips/logic/service/ObservationService.java @@ -925,52 +925,55 @@ public class ObservationService { * @return The list of observations, with the locations masked with the selected polygon service */ private List<Observation> maskObservations(PolygonService polygonService, List<Observation> observations) { - //observations.forEach(o->System.out.println(o.getObservationId())); - Client client = ClientBuilder.newClient(); - WebTarget target = client.target(polygonService.getGisSearchUrlTemplate()); - List<ReferencedPoint> points = observations.stream() - .filter(obs -> (obs.getGeoinfos() != null && !obs.getGeoinfos().isEmpty()) || obs.getLocation() != null) - .map(obs -> { - ReferencedPoint rp = new ReferencedPoint(); - rp.setId(String.valueOf(obs.getObservationId())); - if (obs.getGeoinfos() != null) { - rp.setLon(obs.getGeoinfos().get(0).getGisGeom().getCoordinate().x); - rp.setLat(obs.getGeoinfos().get(0).getGisGeom().getCoordinate().y); - } else { - rp.setLon(obs.getLocation().getLongitude()); - rp.setLat(obs.getLocation().getLatitude()); - } - return rp; - }).collect(Collectors.toList()); - /*System.out.println("maskobservations - target.request() about to be called"); - ObjectMapper oMapper = new ObjectMapper(); - try { - System.out.println(oMapper.writeValueAsString(Entity.entity(points.toArray(new ReferencedPoint[points.size()]), MediaType.APPLICATION_JSON))); - } catch (JsonProcessingException ex) { - Logger.getLogger(ObservationService.class.getName()).log(Level.SEVERE, null, ex); - }*/ - PointMappingResponse response = target.request(MediaType.APPLICATION_JSON) - .post(Entity.entity(points.toArray(new ReferencedPoint[points.size()]), MediaType.APPLICATION_JSON), PointMappingResponse.class); - // We need to loop through the observations and find corresponding featurecollections and replace those - Map<Integer, Feature> indexedPolygons = new HashMap<>(); - for (Feature feature : response.getFeatureCollection().getFeatures()) { - indexedPolygons.put((Integer) feature.getProperties().get("id"), feature); - } - GISEntityUtil gisEntityUtil = new GISEntityUtil(); - for (Map mapping : response.getMapping()) { - Integer observationId = Integer.valueOf((String) mapping.get("id")); - Integer borderId = (Integer) mapping.get("borderid"); - observations.stream().filter((o) -> (o.getObservationId().equals(observationId))).forEachOrdered((o) -> { - Gis polygon = gisEntityUtil.getGisFromFeature(indexedPolygons.get(borderId)); - List<Gis> gis = new ArrayList<>(); - gis.add(polygon); - o.setGeoinfos(gis); - o.setLocation(null); - o.setLocationPointOfInterestId(null); - }); - } + try(Client client = ClientBuilder.newClient()) + { + //observations.forEach(o->System.out.println(o.getObservationId())); + + WebTarget target = client.target(polygonService.getGisSearchUrlTemplate()); + List<ReferencedPoint> points = observations.stream() + .filter(obs -> (obs.getGeoinfos() != null && !obs.getGeoinfos().isEmpty()) || obs.getLocation() != null) + .map(obs -> { + ReferencedPoint rp = new ReferencedPoint(); + rp.setId(String.valueOf(obs.getObservationId())); + if (obs.getGeoinfos() != null) { + rp.setLon(obs.getGeoinfos().get(0).getGisGeom().getCoordinate().x); + rp.setLat(obs.getGeoinfos().get(0).getGisGeom().getCoordinate().y); + } else { + rp.setLon(obs.getLocation().getLongitude()); + rp.setLat(obs.getLocation().getLatitude()); + } + return rp; + }).collect(Collectors.toList()); + /*System.out.println("maskobservations - target.request() about to be called"); + ObjectMapper oMapper = new ObjectMapper(); + try { + System.out.println(oMapper.writeValueAsString(Entity.entity(points.toArray(new ReferencedPoint[points.size()]), MediaType.APPLICATION_JSON))); + } catch (JsonProcessingException ex) { + Logger.getLogger(ObservationService.class.getName()).log(Level.SEVERE, null, ex); + }*/ + PointMappingResponse response = target.request(MediaType.APPLICATION_JSON) + .post(Entity.entity(points.toArray(new ReferencedPoint[points.size()]), MediaType.APPLICATION_JSON), PointMappingResponse.class); + // We need to loop through the observations and find corresponding featurecollections and replace those + Map<Integer, Feature> indexedPolygons = new HashMap<>(); + for (Feature feature : response.getFeatureCollection().getFeatures()) { + indexedPolygons.put((Integer) feature.getProperties().get("id"), feature); + } + GISEntityUtil gisEntityUtil = new GISEntityUtil(); + for (Map mapping : response.getMapping()) { + Integer observationId = Integer.valueOf((String) mapping.get("id")); + Integer borderId = (Integer) mapping.get("borderid"); + observations.stream().filter((o) -> (o.getObservationId().equals(observationId))).forEachOrdered((o) -> { + Gis polygon = gisEntityUtil.getGisFromFeature(indexedPolygons.get(borderId)); + List<Gis> gis = new ArrayList<>(); + gis.add(polygon); + o.setGeoinfos(gis); + o.setLocation(null); + o.setLocationPointOfInterestId(null); + }); + } - return observations; + return observations; + } } /** diff --git a/src/main/java/no/nibio/vips/logic/service/ObservationTimeSeriesService.java b/src/main/java/no/nibio/vips/logic/service/ObservationTimeSeriesService.java index f92c6340fa819562bc4da6357f286a70eb2549de..ef6257888e06d98ba8a2c48c490e86429399d515 100644 --- a/src/main/java/no/nibio/vips/logic/service/ObservationTimeSeriesService.java +++ b/src/main/java/no/nibio/vips/logic/service/ObservationTimeSeriesService.java @@ -134,31 +134,32 @@ public class ObservationTimeSeriesService { * @return The observation time series, with location masked with the provided polygon service */ private void maskLocation(PolygonService polygonService, ObservationTimeSeries observationTimeSeries) { - Client client = ClientBuilder.newClient(); - WebTarget target = client.target(polygonService.getGisSearchUrlTemplate()); - ReferencedPoint rp = new ReferencedPoint(); - rp.setId(String.valueOf(observationTimeSeries.getObservationTimeSeriesId())); - rp.setLon(observationTimeSeries.getLocationPointOfInterest().getLongitude()); - rp.setLat(observationTimeSeries.getLocationPointOfInterest().getLatitude()); + try(Client client = ClientBuilder.newClient()){ + WebTarget target = client.target(polygonService.getGisSearchUrlTemplate()); + ReferencedPoint rp = new ReferencedPoint(); + rp.setId(String.valueOf(observationTimeSeries.getObservationTimeSeriesId())); + rp.setLon(observationTimeSeries.getLocationPointOfInterest().getLongitude()); + rp.setLat(observationTimeSeries.getLocationPointOfInterest().getLatitude()); - ReferencedPoint[] pointArray = {rp}; - PointMappingResponse response = target.request(MediaType.APPLICATION_JSON).post(Entity.entity(pointArray, MediaType.APPLICATION_JSON), PointMappingResponse.class); - // We need to loop through the observations and find corresponding featurecollections and replace those - Map<Integer, Feature> indexedPolygons = new HashMap<>(); - for (Feature feature : response.getFeatureCollection().getFeatures()) { - indexedPolygons.put((Integer) feature.getProperties().get("id"), feature); - } - GISEntityUtil gisEntityUtil = new GISEntityUtil(); - for (Map mapping : response.getMapping()) { - Integer observationTimeSeriesId = Integer.valueOf((String) mapping.get("id")); - if (observationTimeSeries.getObservationTimeSeriesId().equals(observationTimeSeriesId)) { - Integer borderId = (Integer) mapping.get("borderid"); - Gis polygon = gisEntityUtil.getGisFromFeature(indexedPolygons.get(borderId)); - List<Gis> gis = new ArrayList<>(); - gis.add(polygon); - observationTimeSeries.setGeoInfoList(gis); - observationTimeSeries.setLocationPointOfInterest(null); - observationTimeSeries.setLocationPointOfInterestId(null); + ReferencedPoint[] pointArray = {rp}; + PointMappingResponse response = target.request(MediaType.APPLICATION_JSON).post(Entity.entity(pointArray, MediaType.APPLICATION_JSON), PointMappingResponse.class); + // We need to loop through the observations and find corresponding featurecollections and replace those + Map<Integer, Feature> indexedPolygons = new HashMap<>(); + for (Feature feature : response.getFeatureCollection().getFeatures()) { + indexedPolygons.put((Integer) feature.getProperties().get("id"), feature); + } + GISEntityUtil gisEntityUtil = new GISEntityUtil(); + for (Map mapping : response.getMapping()) { + Integer observationTimeSeriesId = Integer.valueOf((String) mapping.get("id")); + if (observationTimeSeries.getObservationTimeSeriesId().equals(observationTimeSeriesId)) { + Integer borderId = (Integer) mapping.get("borderid"); + Gis polygon = gisEntityUtil.getGisFromFeature(indexedPolygons.get(borderId)); + List<Gis> gis = new ArrayList<>(); + gis.add(polygon); + observationTimeSeries.setGeoInfoList(gis); + observationTimeSeries.setLocationPointOfInterest(null); + observationTimeSeries.setLocationPointOfInterestId(null); + } } } } diff --git a/src/test/java/no/nibio/vips/logic/entity/rest/PointMappingRequestTest.java b/src/test/java/no/nibio/vips/logic/entity/rest/PointMappingRequestTest.java index d0ea65c47482c1029673bc6abdfb4deb04b87292..5b62e2df13454958f59fc682ee9156a0bb0818d2 100644 --- a/src/test/java/no/nibio/vips/logic/entity/rest/PointMappingRequestTest.java +++ b/src/test/java/no/nibio/vips/logic/entity/rest/PointMappingRequestTest.java @@ -102,16 +102,16 @@ public class PointMappingRequestTest { ReferencedPoint[] instance = points.toArray(new ReferencedPoint[points.size()]); - Client client = ClientBuilder.newClient(); - WebTarget target = client.target("https://proxy1.nibio.no/municipality_cache_ws/pointmapping/1/4326"); + try(Client client = ClientBuilder.newClient()) { + WebTarget target = client.target("https://proxy1.nibio.no/municipality_cache_ws/pointmapping/1/4326"); - //PointMappingResponse response = - PointMappingResponse response = target.request(MediaType.APPLICATION_JSON) - .post(Entity.entity(instance, MediaType.APPLICATION_JSON), PointMappingResponse.class);//.toString(); - client.close(); - //System.out.println(((Polygon)response.getFeatureCollection().getFeatures()[0].getGeometry()).getCoordinates()[0].length); - - assertNotNull(response); + //PointMappingResponse response = + PointMappingResponse response = target.request(MediaType.APPLICATION_JSON) + .post(Entity.entity(instance, MediaType.APPLICATION_JSON), PointMappingResponse.class);//.toString(); + //System.out.println(((Polygon)response.getFeatureCollection().getFeatures()[0].getGeometry()).getCoordinates()[0].length); + + assertNotNull(response); + } //System.out.println(Entity.entity(instance, MediaType.APPLICATION_JSON)); //System.out.println(target.request(MediaType.APPLICATION_JSON)