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 92c07b8aae75114b2892e04652b4d70278160e34..eb017ef90a755032222d82ba827a8299dabaec6f 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 e9ee91698adcdecd1449f7ec47a9084b94876f6e..0fa0defcedac622cfd24fbe6f1c3747f26861df0 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 dbd2c57059dde9a5a33c250548f4f4d4e432d02d..bcc0d958222c07c70ec39899cf5efcdb9506da4d 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 3e425dcd7dd80a0846758d94cdec9e4e244f7b94..845c2694ba628b5bdd18c9981e67894752b57c51 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 c39e20255222ce706470b3d2537077fecb568572..dd351cf46dd10c7168938d3affd758ee7ce8d679 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 e0460a5c646641302ac139d8141df9d8264de1f4..3dc73777b4b2afa989d13a9da92a608f89d60015 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 f7e92b32aca946f125b0ce80918cd8a894312c8b..bdf26f2816f35826a00fea933247447e4b33bb08 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 298e9cd000ee7984350dd1122f7ade8b662a31f0..c27bc21b3eff8d98dfecab11ddc185fdc397125a 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 910852b29a4b4d136837c3b09689a1952ed354c9..7e8b0fa0b202d22079a6ebb3c682a773a32f7795 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 bb7cb6054e91a132ef91d5e4f0c3f4e0cbbba986..4260156ed403101d6a0b4655c02f9be7e1b863ca 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 e5e22d4611d28cf3d0df5684ebab85444a6618b5..cec171ad58c8eb8607190424cf90a06a34d14a2a 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 e57a2a1dc586b73576fa92fc372028c6b3f804b7..d859edea2bc0f074a316a928db4c07e606585dfa 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 dd2e3e5a139ba6b22bf04fa33d405b3905594850..d6675744544d360eb257553906692ffab665562e 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 a5445f28855a10731cf926bf431098b3523f9c21..bb7604e85e50a2d6375fdb149ff96679f6d98816 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;}">