From 50d48ced2c635424b80eec253a0493c8c63d0962 Mon Sep 17 00:00:00 2001 From: Tor-Einar Skog <tor-einar.skog@nibio.no> Date: Tue, 14 May 2019 13:16:18 +0200 Subject: [PATCH] Moving timezone config from code to system properties --- .../ForecastConfigurationController.java | 6 +++--- .../servlet/PointOfInterestController.java | 17 ++++++++-------- .../no/nibio/vips/logic/util/Globals.java | 17 ---------------- .../no/nibio/vips/logic/util/SystemTime.java | 20 ++++++++++++++++++- 4 files changed, 31 insertions(+), 29 deletions(-) diff --git a/src/main/java/no/nibio/vips/logic/controller/servlet/ForecastConfigurationController.java b/src/main/java/no/nibio/vips/logic/controller/servlet/ForecastConfigurationController.java index 97d605dc..3e1904b4 100755 --- a/src/main/java/no/nibio/vips/logic/controller/servlet/ForecastConfigurationController.java +++ b/src/main/java/no/nibio/vips/logic/controller/servlet/ForecastConfigurationController.java @@ -227,7 +227,7 @@ public class ForecastConfigurationController extends HttpServlet { request.setAttribute("forecastConfiguration", forecastConfiguration); request.setAttribute("formId", multipleNew ? "forecastConfigurationMultipleNewForm" : "forecastConfigurationForm"); request.setAttribute("multipleNew", multipleNew); - request.getSession().setAttribute("availableTimeZones", Globals.availableTimeZones); + request.getSession().setAttribute("availableTimeZones", SystemTime.getAvailableTimeZones()); request.getSession().setAttribute("defaultTimeZoneId", user.getOrganizationId().getDefaultTimeZone()); // All organisms used for parent organism list request.setAttribute("allCrops", em.createNamedQuery("Organism.findAllCrops").getResultList()); @@ -261,7 +261,7 @@ public class ForecastConfigurationController extends HttpServlet { request.setAttribute("weatherStationPointOfInterests", em.createNamedQuery("PointOfInterestWeatherStation.findByActivityAndOrganizationId").setParameter("active", Boolean.TRUE).setParameter("organizationId", user.getOrganizationId()).getResultList()); request.setAttribute("forecastConfiguration", forecastConfiguration); request.setAttribute("formId","forecastConfigurationForm"); - request.getSession().setAttribute("availableTimeZones", Globals.availableTimeZones); + request.getSession().setAttribute("availableTimeZones", SystemTime.getAvailableTimeZones()); request.getSession().setAttribute("defaultTimeZoneId", user.getOrganizationId().getDefaultTimeZone()); request.setAttribute("allCrops", em.createNamedQuery("Organism.findAllCrops").getResultList()); @@ -355,7 +355,7 @@ public class ForecastConfigurationController extends HttpServlet { request.setAttribute("vipsLogicUsers", em.createNamedQuery("VipsLogicUser.findAll").getResultList()); request.setAttribute("dateStart_dateFormat", formFields.get("dateStart").getDateFormat()); request.setAttribute("dateEnd_dateFormat", formFields.get("dateEnd").getDateFormat()); - request.getSession().setAttribute("availableTimeZones", Globals.availableTimeZones); + request.getSession().setAttribute("availableTimeZones", SystemTime.getAvailableTimeZones()); request.getSession().setAttribute("defaultTimeZoneId", user.getOrganizationId().getDefaultTimeZone()); request.setAttribute("modelInformations", em.createNamedQuery("ModelInformation.findAll").getResultList()); request.setAttribute("forecastConfiguration", forecastConfiguration); diff --git a/src/main/java/no/nibio/vips/logic/controller/servlet/PointOfInterestController.java b/src/main/java/no/nibio/vips/logic/controller/servlet/PointOfInterestController.java index 4e233a9e..20676a24 100755 --- a/src/main/java/no/nibio/vips/logic/controller/servlet/PointOfInterestController.java +++ b/src/main/java/no/nibio/vips/logic/controller/servlet/PointOfInterestController.java @@ -52,6 +52,7 @@ import no.nibio.vips.logic.entity.WeatherForecastProvider; import no.nibio.vips.logic.i18n.SessionLocaleUtil; import no.nibio.vips.gis.GISUtil; import no.nibio.vips.logic.util.Globals; +import no.nibio.vips.logic.util.SystemTime; import no.nibio.web.forms.FormField; import no.nibio.web.forms.FormValidation; import no.nibio.web.forms.FormValidationException; @@ -170,7 +171,7 @@ public class PointOfInterestController extends HttpServlet { { request.getSession().setAttribute("weatherStation", weatherStation); } - request.getSession().setAttribute("availableTimeZones", Globals.availableTimeZones); + request.getSession().setAttribute("availableTimeZones", SystemTime.getAvailableTimeZones()); request.getSession().setAttribute("defaultTimeZoneId", user.getOrganizationId().getDefaultTimeZone()); request.setAttribute("defaultMapCenter",user.getOrganizationId().getDefaultMapCenter()); request.setAttribute("defaultMapZoom", user.getOrganizationId().getDefaultMapZoom()); @@ -191,7 +192,7 @@ public class PointOfInterestController extends HttpServlet { request.setAttribute("defaultMapCenter",user.getOrganizationId().getDefaultMapCenter()); request.setAttribute("defaultMapZoom", user.getOrganizationId().getDefaultMapZoom()); request.getSession().setAttribute("dataSources", SessionControllerGetter.getPointOfInterestBean().getWeatherStationDataSources()); - request.getSession().setAttribute("availableTimeZones", Globals.availableTimeZones); + request.getSession().setAttribute("availableTimeZones", SystemTime.getAvailableTimeZones()); request.getSession().setAttribute("defaultTimeZoneId", user.getOrganizationId().getDefaultTimeZone()); request.getSession().setAttribute("availableCountries", em.createNamedQuery("Country.findAll").getResultList()); request.getSession().setAttribute("defaultCountryCode", user.getOrganizationId().getCountryCode().getCountryCode()); @@ -232,7 +233,7 @@ public class PointOfInterestController extends HttpServlet { request.setAttribute("defaultMapCenter",user.getOrganizationId().getDefaultMapCenter()); request.setAttribute("defaultMapZoom", user.getOrganizationId().getDefaultMapZoom()); request.getSession().setAttribute("dataSources", SessionControllerGetter.getPointOfInterestBean().getWeatherStationDataSources()); - request.getSession().setAttribute("availableTimeZones", Globals.availableTimeZones); + request.getSession().setAttribute("availableTimeZones", SystemTime.getAvailableTimeZones()); request.getSession().setAttribute("defaultTimeZoneId", user.getOrganizationId().getDefaultTimeZone()); request.getSession().setAttribute("availableCountries", em.createNamedQuery("Country.findAll").getResultList()); request.getSession().setAttribute("defaultCountryCode", user.getOrganizationId().getCountryCode().getCountryCode()); @@ -363,7 +364,7 @@ public class PointOfInterestController extends HttpServlet { request.setAttribute("defaultMapZoom", user.getOrganizationId().getDefaultMapZoom()); request.setAttribute("returnURL","weatherStation?organizationId=" + user.getOrganizationId().getOrganizationId()); request.getSession().setAttribute("dataSources", SessionControllerGetter.getPointOfInterestBean().getWeatherStationDataSources()); - request.getSession().setAttribute("availableTimeZones", Globals.availableTimeZones); + request.getSession().setAttribute("availableTimeZones", SystemTime.getAvailableTimeZones()); request.getSession().setAttribute("defaultTimeZoneId", user.getOrganizationId().getDefaultTimeZone()); request.getSession().setAttribute("availableCountries", em.createNamedQuery("Country.findAll").getResultList()); request.getSession().setAttribute("defaultCountryCode", user.getOrganizationId().getCountryCode().getCountryCode()); @@ -508,7 +509,7 @@ public class PointOfInterestController extends HttpServlet { { PointOfInterest poi = SessionControllerGetter.getPointOfInterestBean().getPointOfInterest(Integer.valueOf(pointOfInterestId)); request.getSession().setAttribute("poi", poi); - request.getSession().setAttribute("availableTimeZones", Globals.availableTimeZones); + request.getSession().setAttribute("availableTimeZones", SystemTime.getAvailableTimeZones()); request.getSession().setAttribute("defaultTimeZoneId", user.getOrganizationId().getDefaultTimeZone()); request.setAttribute("defaultMapCenter",user.getOrganizationId().getDefaultMapCenter()); request.setAttribute("defaultMapZoom", user.getOrganizationId().getDefaultMapZoom()); @@ -528,7 +529,7 @@ public class PointOfInterestController extends HttpServlet { request.setAttribute("returnIdCallback", request.getParameter("returnIdCallback") != null ? request.getParameter("returnIdCallback") :""); request.setAttribute("defaultMapCenter",user.getOrganizationId().getDefaultMapCenter()); request.setAttribute("defaultMapZoom", user.getOrganizationId().getDefaultMapZoom()); - request.getSession().setAttribute("availableTimeZones", Globals.availableTimeZones); + request.getSession().setAttribute("availableTimeZones", SystemTime.getAvailableTimeZones()); request.getSession().setAttribute("defaultTimeZoneId", user.getOrganizationId().getDefaultTimeZone()); request.getSession().setAttribute("weatherForecastProviders", em.createNamedQuery("WeatherForecastProvider.findAll").getResultList()); request.getSession().setAttribute("availableCountries", em.createNamedQuery("Country.findAll").getResultList()); @@ -568,7 +569,7 @@ public class PointOfInterestController extends HttpServlet { request.getSession().setAttribute("poi", poi); request.setAttribute("defaultMapCenter",user.getOrganizationId().getDefaultMapCenter()); request.setAttribute("defaultMapZoom", user.getOrganizationId().getDefaultMapZoom()); - request.getSession().setAttribute("availableTimeZones", Globals.availableTimeZones); + request.getSession().setAttribute("availableTimeZones", SystemTime.getAvailableTimeZones()); request.getSession().setAttribute("defaultTimeZoneId", user.getOrganizationId().getDefaultTimeZone()); request.getSession().setAttribute("weatherForecastProviders", em.createNamedQuery("WeatherForecastProvider.findAll").getResultList()); request.getSession().setAttribute("availableCountries", em.createNamedQuery("Country.findAll").getResultList()); @@ -727,7 +728,7 @@ public class PointOfInterestController extends HttpServlet { request.setAttribute("returnURL","poi?organizationId=" + user.getOrganizationId().getOrganizationId()); // Finding all external resources where entry is missing request.setAttribute("unreferencedExternalResources", SessionControllerGetter.getPointOfInterestBean().getUnusedExternalResourcesForPointOfInterest(poi)); - request.getSession().setAttribute("availableTimeZones", Globals.availableTimeZones); + request.getSession().setAttribute("availableTimeZones", SystemTime.getAvailableTimeZones()); request.getSession().setAttribute("defaultTimeZoneId", user.getOrganizationId().getDefaultTimeZone()); request.getSession().setAttribute("availableCountries", em.createNamedQuery("Country.findAll").getResultList()); request.getSession().setAttribute("defaultCountryCode", user.getOrganizationId().getCountryCode().getCountryCode()); diff --git a/src/main/java/no/nibio/vips/logic/util/Globals.java b/src/main/java/no/nibio/vips/logic/util/Globals.java index 611470bd..fa4bac9a 100755 --- a/src/main/java/no/nibio/vips/logic/util/Globals.java +++ b/src/main/java/no/nibio/vips/logic/util/Globals.java @@ -67,23 +67,6 @@ public class Globals { public static String defaultTimestampFormat = "yyyy-MM-dd HH:mm:ssXXX"; public static String defaultDateFormat = "yyyy-MM-dd"; - // TODO: Move out of code and into config - public static String[] availableTimeZones = { - "UTC", - "Etc/GMT-1", - "Europe/Copenhagen", - "Europe/Oslo", - "Europe/Sarajevo", - "Europe/Stockholm", - "Europe/Helsinki", - "Europe/Riga", - "Europe/Vilnius", - "Europe/Sofia", - "Europe/Zurich", - "America/Los_Angeles" - - }; - public static int DEFAULT_UUID_VALIDITY_DURATION_DAYS = 30; public static String PROTOCOL = System.getProperty("no.nibio.vips.logic.VIPSLOGIC_PROTOCOL"); diff --git a/src/main/java/no/nibio/vips/logic/util/SystemTime.java b/src/main/java/no/nibio/vips/logic/util/SystemTime.java index 06fb8b70..e0a545df 100755 --- a/src/main/java/no/nibio/vips/logic/util/SystemTime.java +++ b/src/main/java/no/nibio/vips/logic/util/SystemTime.java @@ -21,8 +21,11 @@ package no.nibio.vips.logic.util; import java.text.ParseException; import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Arrays; import java.util.Calendar; import java.util.Date; +import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; @@ -38,7 +41,7 @@ public final class SystemTime { private static Integer SYSTEM_TIME_OFFSET_MONTHS; private final static Calendar cal = Calendar.getInstance(); - + private static String[] availableTimeZones; public static Date getSystemTime() { if(SYSTEM_TIME_OFFSET_MONTHS == null) @@ -94,4 +97,19 @@ public final class SystemTime { } } + /** + * Using the system config "no.nibio.vips.logic.AVAILABLE_TIMEZONES" to + * generate the available timezones in lists in this VIPSLogic instance + * UTC is always included + * @return + */ + public static String[] getAvailableTimeZones(){ + if(SystemTime.availableTimeZones == null) + { + List<String> tmp = System.getProperty("no.nibio.vips.logic.AVAILABLE_TIMEZONES") != null ? new ArrayList(Arrays.asList(System.getProperty("no.nibio.vips.logic.AVAILABLE_TIMEZONES").split(","))) : new ArrayList<>(); + tmp.add("UTC"); + SystemTime.availableTimeZones = tmp.toArray(new String[tmp.size()]); + } + return SystemTime.availableTimeZones; + } } -- GitLab