From e1b4ed29a25fe6ea2c85100a725f9dd83e35aa28 Mon Sep 17 00:00:00 2001 From: Tor-Einar Skog <tor-einar.skog@nibio.no> Date: Tue, 6 Jun 2023 15:21:13 +0200 Subject: [PATCH] Fix negative,non-broadcasted obs search [VIPSUTV-483] --- .../logic/controller/session/ObservationBean.java | 12 +++++++++--- .../java/no/nibio/vips/logic/entity/Observation.java | 2 +- .../nibio/vips/logic/service/ObservationService.java | 5 ++--- 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/src/main/java/no/nibio/vips/logic/controller/session/ObservationBean.java b/src/main/java/no/nibio/vips/logic/controller/session/ObservationBean.java index 9966a5b9..00d56b14 100755 --- a/src/main/java/no/nibio/vips/logic/controller/session/ObservationBean.java +++ b/src/main/java/no/nibio/vips/logic/controller/session/ObservationBean.java @@ -69,6 +69,8 @@ import no.nibio.vips.observationdata.ObservationDataSchema; import no.nibio.vips.observationdata.ObservationDataSchemaPK; import org.apache.commons.fileupload.FileItem; import org.apache.commons.io.FilenameUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.wololo.geojson.Feature; import org.wololo.geojson.FeatureCollection; import org.wololo.geojson.GeoJSONFactory; @@ -86,6 +88,8 @@ public class ObservationBean { PointOfInterestBean pointOfInterestBean; @EJB UserBean userBean; + + private static Logger LOGGER = LoggerFactory.getLogger(ObservationBean.class); public List<Observation> getObservations(Integer organizationId) { @@ -658,17 +662,18 @@ public class ObservationBean { sql += "AND is_positive = :isPositive \n"; parameters.put("isPositive", isPositive); } - + + LOGGER.debug(sql); + Query q = em.createNativeQuery(sql, Observation.class); // Setting the parameters one by one parameters.keySet().stream().forEach( - (key)->q.setParameter(key, parameters.get(key)) + (key)->{LOGGER.debug(key + ": " + parameters.get(key)); q.setParameter(key, parameters.get(key));} ); //Date start = new Date(); List<Observation> observations = q.getResultList(); - //System.out.println("Finding obs took " + (new Date().getTime() - start.getTime()) + " milliseconds"); //start = new Date(); @@ -688,6 +693,7 @@ public class ObservationBean { retVal = this.getObservationsWithLocations(retVal); //System.out.println("Finding locations took " + (new Date().getTime() - start.getTime()) + " milliseconds"); } + return retVal; diff --git a/src/main/java/no/nibio/vips/logic/entity/Observation.java b/src/main/java/no/nibio/vips/logic/entity/Observation.java index baee7c23..b9a40e51 100755 --- a/src/main/java/no/nibio/vips/logic/entity/Observation.java +++ b/src/main/java/no/nibio/vips/logic/entity/Observation.java @@ -588,7 +588,7 @@ public class Observation implements Serializable, no.nibio.vips.observation.Obse */ @Column(name = "location_is_private") public Boolean getLocationIsPrivate() { - return locationIsPrivate; + return locationIsPrivate != null ? locationIsPrivate : false; } /** 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 99c31f85..70692949 100755 --- a/src/main/java/no/nibio/vips/logic/service/ObservationService.java +++ b/src/main/java/no/nibio/vips/logic/service/ObservationService.java @@ -202,7 +202,6 @@ public class ObservationService { return null; } }).collect(Collectors.toList()); - //o.setObservationDataSchema(observationBean.getObservationDataSchema(observer.getOrganizationId().getOrganizationId(), o.getOrganismId())); return Response.ok().entity(observations).build(); } @@ -775,7 +774,7 @@ public class ObservationService { { return filteredObservations; } - List<Observation> retVal = filteredObservations.stream().filter(obs->obs.getBroadcastMessage()).collect(Collectors.toList()); + List<Observation> retVal = filteredObservations.stream().filter(obs->obs.getBroadcastMessage() || (isPositive == null || !isPositive)).collect(Collectors.toList()); //retVal.forEach(o->System.out.println(o.getObservationId())); retVal = this.maskObservations(retVal); //retVal.forEach(o->System.out.println(o.getObservationId())); @@ -800,7 +799,7 @@ public class ObservationService { // Placing all observations with a polygon service in the correct bucket. Map<PolygonService, List<Observation>> registeredPolygonServicesInObservationList = new HashMap<>(); - observations.stream().filter((obs) -> (!obs.getLocationIsPrivate() && obs.getPolygonService() != null)).forEachOrdered((obs) -> { + observations.stream().filter((obs) -> { return (!obs.getLocationIsPrivate() && obs.getPolygonService() != null);}).forEachOrdered((obs) -> { List<Observation> obsWithPolyServ = registeredPolygonServicesInObservationList.getOrDefault(obs.getPolygonService(), new ArrayList<>()); obsWithPolyServ.add(obs); registeredPolygonServicesInObservationList.put(obs.getPolygonService(), obsWithPolyServ); -- GitLab