From 78fdead0924cffa94211b853fec34af104bfa04d Mon Sep 17 00:00:00 2001 From: Tor-Einar Skog <tor-einar.skog@nibio.no> Date: Thu, 6 Jun 2019 14:31:30 +0200 Subject: [PATCH] Apple fruit moth: Adding possibility of hiding an observation site to the public --- .../applefruitmoth/AppleFruitMothBean.java | 55 +++---------------- .../AppleFruitMothController.java | 1 + .../applefruitmoth/AppleFruitMothService.java | 11 ++-- .../applefruitmoth/ObservationSite.java | 16 ++++++ .../vips/logic/i18n/vipslogictexts.properties | 1 + .../logic/i18n/vipslogictexts_bs.properties | 1 + .../logic/i18n/vipslogictexts_hr.properties | 1 + .../logic/i18n/vipslogictexts_nb.properties | 1 + .../logic/i18n/vipslogictexts_sr.properties | 1 + .../i18n/vipslogictexts_zh_CN.properties | 1 + .../appleFruitMothStationForm.json | 5 ++ .../js/appleFruitMothObservationSiteMap.js | 2 +- .../js/appleFruitMothObservationSitesMap.js | 2 +- .../templates/appleFruitMothStationForm.ftl | 8 +++ 14 files changed, 52 insertions(+), 54 deletions(-) diff --git a/src/main/java/no/nibio/vips/logic/modules/applefruitmoth/AppleFruitMothBean.java b/src/main/java/no/nibio/vips/logic/modules/applefruitmoth/AppleFruitMothBean.java index 92c07b8a..eb017ef9 100755 --- a/src/main/java/no/nibio/vips/logic/modules/applefruitmoth/AppleFruitMothBean.java +++ b/src/main/java/no/nibio/vips/logic/modules/applefruitmoth/AppleFruitMothBean.java @@ -78,7 +78,8 @@ public class AppleFruitMothBean { return em.find(ObservationSite.class, observationSiteId); } - public Kml getObservationSitesKml(Integer season, Integer selectedObservationSiteId, String serverName) { + public Kml getObservationSitesKml(Integer season, Integer selectedObservationSiteId, String serverName, Boolean onlyPubliclyAvailable) { + onlyPubliclyAvailable = onlyPubliclyAvailable != null ? onlyPubliclyAvailable : true; String iconPath = Globals.PROTOCOL + "://" + serverName + "/public/images/"; // Initialization final Vec2 hotspot = new Vec2() @@ -175,6 +176,10 @@ public class AppleFruitMothBean { SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); for(ObservationSite site:sites) { + if(onlyPubliclyAvailable && !site.getPubliclyAvailable()) + { + continue; + } Integer warningStatus = 0; String remarks = "Varsel ikke oppdatert"; ObservationSiteSeasonCommonData commonData = site.getCommonDataForSeason(season); @@ -222,53 +227,7 @@ public class AppleFruitMothBean { return kml; } - /* - public Kml getObservationSitePointsKml(Integer observationSiteId, String serverName) { - - ObservationSite observationSite = em.find(ObservationSite.class, observationSiteId); - - String iconPath = Globals.PROTOCOL + "://" + serverName + "/public/images/"; - // Initialization - final Vec2 hotspot = new Vec2() - .withX(0.5) - .withXunits(Units.FRACTION) - .withY(0) - .withYunits(Units.FRACTION); - final Kml kml = KmlFactory.createKml(); - final Document document = kml.createAndSetDocument() - .withName("Rognebærmøllstasjon-punkter").withDescription("Oversikt over punkter for rognebærmøllstasjonen " + observationSite.getObservationSiteName()); - - // Adding icons for warning statuses - document.createAndAddStyle() - .withId("observation_site_point_icon") - .createAndSetIconStyle() - .withScale(1) - .withHotSpot(hotspot) - .createAndSetIcon() - .withHref(iconPath + "dot_blue.png"); - - Set<ObservationSitePoint> sitePoints = observationSite.getObservationSitePointSet(); - SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); - for(ObservationSitePoint sitePoint:sitePoints) - { - - final Placemark placemark = document.createAndAddPlacemark() - .withName(sitePoint.getPointName()) - .withStyleUrl("#observation_site_point_icon") - .withId(sitePoint.getObservationSitePointId().toString()); - - final Point point = placemark.createAndSetPoint(); - List<Coordinate> coord = point.createAndSetCoordinates(); - coord.add(new Coordinate( - sitePoint.getGisId().getGisGeom().getCoordinate().x, - sitePoint.getGisId().getGisGeom().getCoordinate().y, - 0 - )); - - } - return kml; - }*/ - + public ObservationSite storeObservationSite(ObservationSite observationSite) { return em.merge(observationSite); } diff --git a/src/main/java/no/nibio/vips/logic/modules/applefruitmoth/AppleFruitMothController.java b/src/main/java/no/nibio/vips/logic/modules/applefruitmoth/AppleFruitMothController.java index e9ee9169..0fa0defc 100755 --- a/src/main/java/no/nibio/vips/logic/modules/applefruitmoth/AppleFruitMothController.java +++ b/src/main/java/no/nibio/vips/logic/modules/applefruitmoth/AppleFruitMothController.java @@ -172,6 +172,7 @@ public class AppleFruitMothController extends HttpServlet { { Integer currentSeason = formValidation.getFormField("currentSeason").getValueAsInteger(); observationSite.setObservationSiteName(formValidation.getFormField("observationSiteName").getWebValue()); + observationSite.setPubliclyAvailable(formValidation.getFormField("publiclyAvailable").getWebValue() != null); ObservationSiteSeasonCommonData ossc = observationSite.getCommonDataForSeason(currentSeason); if(ossc == null) { diff --git a/src/main/java/no/nibio/vips/logic/modules/applefruitmoth/AppleFruitMothService.java b/src/main/java/no/nibio/vips/logic/modules/applefruitmoth/AppleFruitMothService.java index dbd2c570..bcc0d958 100755 --- a/src/main/java/no/nibio/vips/logic/modules/applefruitmoth/AppleFruitMothService.java +++ b/src/main/java/no/nibio/vips/logic/modules/applefruitmoth/AppleFruitMothService.java @@ -48,12 +48,14 @@ public class AppleFruitMothService { @GET @Path("observationsites/kml/") @Produces("application/vnd.google-earth.kml+xml;charset=utf-8") - public Response getObservationSitesKML() + public Response getObservationSitesKML( + @QueryParam("onlyPubliclyAvailable") Boolean onlyPubliclyAvailable + ) { Calendar cal = Calendar.getInstance(); cal.setTime(SystemTime.getSystemTime()); Integer season = cal.get(Calendar.YEAR); - return this.getObservationSitesKML(season, null); + return this.getObservationSitesKML(season, null, onlyPubliclyAvailable); } @GET @@ -61,10 +63,11 @@ public class AppleFruitMothService { @Produces("application/vnd.google-earth.kml+xml;charset=utf-8") public Response getObservationSitesKML( @PathParam("season") Integer season, - @QueryParam("selectedObservationSiteId") Integer selectedObservationSiteId + @QueryParam("selectedObservationSiteId") Integer selectedObservationSiteId, + @QueryParam("onlyPubliclyAvailable") Boolean onlyPubliclyAvailable ) { - Kml retVal = SessionControllerGetter.getAppleFruitMothBean().getObservationSitesKml(season, selectedObservationSiteId, ServletUtil.getServerName(httpServletRequest)); + Kml retVal = SessionControllerGetter.getAppleFruitMothBean().getObservationSitesKml(season, selectedObservationSiteId, ServletUtil.getServerName(httpServletRequest), onlyPubliclyAvailable); return Response.ok().entity(retVal).build(); } diff --git a/src/main/java/no/nibio/vips/logic/modules/applefruitmoth/ObservationSite.java b/src/main/java/no/nibio/vips/logic/modules/applefruitmoth/ObservationSite.java index 3e425dcd..845c2694 100755 --- a/src/main/java/no/nibio/vips/logic/modules/applefruitmoth/ObservationSite.java +++ b/src/main/java/no/nibio/vips/logic/modules/applefruitmoth/ObservationSite.java @@ -81,6 +81,8 @@ public class ObservationSite implements Serializable, Comparable { private Gis gisId; @Transient private Date lastUpdatedClusterCount; + @Column(name = "publicly_available") + private Boolean publiclyAvailable; public ObservationSite() { @@ -201,4 +203,18 @@ public class ObservationSite implements Serializable, Comparable { public void setLastUpdatedClusterCount(Date lastUpdatedClusterCount) { this.lastUpdatedClusterCount = lastUpdatedClusterCount; } + + /** + * @return the publiclyAvailable + */ + public Boolean getPubliclyAvailable() { + return publiclyAvailable; + } + + /** + * @param publiclyAvailable the publiclyAvailable to set + */ + public void setPubliclyAvailable(Boolean publiclyAvailable) { + this.publiclyAvailable = publiclyAvailable; + } } diff --git a/src/main/resources/no/nibio/vips/logic/i18n/vipslogictexts.properties b/src/main/resources/no/nibio/vips/logic/i18n/vipslogictexts.properties index c39e2025..dd351cf4 100755 --- a/src/main/resources/no/nibio/vips/logic/i18n/vipslogictexts.properties +++ b/src/main/resources/no/nibio/vips/logic/i18n/vipslogictexts.properties @@ -478,3 +478,4 @@ archiveUserId=Archive user defaultMapZoom=Default map zoom defaultMapCenter=Default map center organizationStored=Organization was stored +publiclyAvailable=Publicly available diff --git a/src/main/resources/no/nibio/vips/logic/i18n/vipslogictexts_bs.properties b/src/main/resources/no/nibio/vips/logic/i18n/vipslogictexts_bs.properties index e0460a5c..3dc73777 100755 --- a/src/main/resources/no/nibio/vips/logic/i18n/vipslogictexts_bs.properties +++ b/src/main/resources/no/nibio/vips/logic/i18n/vipslogictexts_bs.properties @@ -478,3 +478,4 @@ archiveUserId=Archive user defaultMapZoom=Default map zoom defaultMapCenter=Default map center organizationStored=Organization was stored +publiclyAvailable=Publicly available diff --git a/src/main/resources/no/nibio/vips/logic/i18n/vipslogictexts_hr.properties b/src/main/resources/no/nibio/vips/logic/i18n/vipslogictexts_hr.properties index f7e92b32..bdf26f28 100755 --- a/src/main/resources/no/nibio/vips/logic/i18n/vipslogictexts_hr.properties +++ b/src/main/resources/no/nibio/vips/logic/i18n/vipslogictexts_hr.properties @@ -477,3 +477,4 @@ archiveUserId=Archive user defaultMapZoom=Default map zoom defaultMapCenter=Default map center organizationStored=Organization was stored +publiclyAvailable=Publicly available diff --git a/src/main/resources/no/nibio/vips/logic/i18n/vipslogictexts_nb.properties b/src/main/resources/no/nibio/vips/logic/i18n/vipslogictexts_nb.properties index 298e9cd0..c27bc21b 100755 --- a/src/main/resources/no/nibio/vips/logic/i18n/vipslogictexts_nb.properties +++ b/src/main/resources/no/nibio/vips/logic/i18n/vipslogictexts_nb.properties @@ -478,3 +478,4 @@ archiveUserId=Arkivbruker defaultMapZoom=Standard zoomniv\u00e5 p\u00e5 kart defaultMapCenter=Standard kartsentrum organizationStored=Organisasjonen ble lagret +publiclyAvailable=Offentlig tilgjengelig diff --git a/src/main/resources/no/nibio/vips/logic/i18n/vipslogictexts_sr.properties b/src/main/resources/no/nibio/vips/logic/i18n/vipslogictexts_sr.properties index 910852b2..7e8b0fa0 100755 --- a/src/main/resources/no/nibio/vips/logic/i18n/vipslogictexts_sr.properties +++ b/src/main/resources/no/nibio/vips/logic/i18n/vipslogictexts_sr.properties @@ -478,3 +478,4 @@ archiveUserId=Archive user defaultMapZoom=Default map zoom defaultMapCenter=Default map center organizationStored=Organization was stored +publiclyAvailable=Publicly available diff --git a/src/main/resources/no/nibio/vips/logic/i18n/vipslogictexts_zh_CN.properties b/src/main/resources/no/nibio/vips/logic/i18n/vipslogictexts_zh_CN.properties index bb7cb605..4260156e 100755 --- a/src/main/resources/no/nibio/vips/logic/i18n/vipslogictexts_zh_CN.properties +++ b/src/main/resources/no/nibio/vips/logic/i18n/vipslogictexts_zh_CN.properties @@ -475,3 +475,4 @@ archiveUserId=Archive user defaultMapZoom=Default map zoom defaultMapCenter=Default map center organizationStored=Organization was stored +publiclyAvailable=Publicly available diff --git a/src/main/webapp/formdefinitions/appleFruitMothStationForm.json b/src/main/webapp/formdefinitions/appleFruitMothStationForm.json index e5e22d46..cec171ad 100755 --- a/src/main/webapp/formdefinitions/appleFruitMothStationForm.json +++ b/src/main/webapp/formdefinitions/appleFruitMothStationForm.json @@ -28,6 +28,11 @@ "dataType" : "STRING", "required" : true }, + { + "name" : "publiclyAvailable", + "dataType" : "STRING", + "required" : false + }, { "name" : "currentSeason", "dataType" : "INTEGER", diff --git a/src/main/webapp/js/appleFruitMothObservationSiteMap.js b/src/main/webapp/js/appleFruitMothObservationSiteMap.js index e57a2a1d..d859edea 100755 --- a/src/main/webapp/js/appleFruitMothObservationSiteMap.js +++ b/src/main/webapp/js/appleFruitMothObservationSiteMap.js @@ -54,7 +54,7 @@ function initMap(center, observationSiteId, currentSeason) var sitePointsLayer = new ol.layer.Vector({ source: new ol.source.Vector({ - url: "/rest/applefruitmoth/observationsites/kml/" + currentSeason + "/?selectedObservationSiteId=" + observationSiteId, + url: "/rest/applefruitmoth/observationsites/kml/" + currentSeason + "/?onlyPubliclyAvailable=false&selectedObservationSiteId=" + observationSiteId, format: new ol.format.KML({"extractAttributes":true}), projection: ol.proj.get('EPSG:3857') }) diff --git a/src/main/webapp/js/appleFruitMothObservationSitesMap.js b/src/main/webapp/js/appleFruitMothObservationSitesMap.js index dd2e3e5a..d6675744 100755 --- a/src/main/webapp/js/appleFruitMothObservationSitesMap.js +++ b/src/main/webapp/js/appleFruitMothObservationSitesMap.js @@ -32,7 +32,7 @@ var initMap = function(container, mapAttribution) forecastLayer = new ol.layer.Vector({ source: new ol.source.Vector({ - url: "/rest/applefruitmoth/observationsites/kml/", + url: "/rest/applefruitmoth/observationsites/kml/?onlyPubliclyAvailable=false", format: new ol.format.KML({"extractAttributes":true}), projection: ol.proj.get('EPSG:3857') }) diff --git a/src/main/webapp/templates/appleFruitMothStationForm.ftl b/src/main/webapp/templates/appleFruitMothStationForm.ftl index a5445f28..bb7604e8 100755 --- a/src/main/webapp/templates/appleFruitMothStationForm.ftl +++ b/src/main/webapp/templates/appleFruitMothStationForm.ftl @@ -54,6 +54,14 @@ <input type="text" class="form-control" name="observationSiteName" placeholder="${i18nBundle.observationSiteName}" value="${observationSite.observationSiteName!""}" onblur="validateField(this);" /> <span class="help-block" id="${formId}_observationSiteName_validation"></span> </div> + <div class="form-group"> + <div class="checkbox"> + <label> + <input type="checkbox" name="publiclyAvailable" value="true"<#if (observationSite.publiclyAvailable?has_content && observationSite.publiclyAvailable == true)> checked="checked"</#if>/> + ${i18nBundle.publiclyAvailable} + </label> + </div> + </div> <div class="form-group"> <label for="currentSeason">${i18nBundle.season}</label> <select class="form-control" name="currentSeason" onchange="if(confirm('${i18nBundle.appleFruitMothChangeSeasonConfirm}')){window.location.href='/applefruitmoth?action=viewObservationSite&observationSiteId=${observationSite.observationSiteId}¤tSeason=' + this.options[this.options.selectedIndex].value;}"> -- GitLab