diff --git a/pom.xml b/pom.xml index 02eb8ea3d39b469a5e5155a30d697eb0fdb93f0f..f55fad85eb9f12edab90ec682e0f97d865fe2568 100755 --- a/pom.xml +++ b/pom.xml @@ -19,10 +19,6 @@ <id>jitpack.io</id> <url>https://jitpack.io</url> </repository> - <repository> - <id>mvnrepository.com</id> - <url>https://mvnrepository.com</url> - </repository> <repository> <id>bedatadriven</id> <name>bedatadriven public repo</name> @@ -85,19 +81,19 @@ <dependency> <groupId>org.jboss.resteasy</groupId> <artifactId>resteasy-jaxrs</artifactId> - <version>3.6.3.Final</version> + <version>3.15.3.Final</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.jboss.resteasy</groupId> <artifactId>resteasy-client</artifactId> - <version>3.6.3.Final</version> + <version>4.7.4.Final</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.jboss.resteasy</groupId> <artifactId>resteasy-jackson2-provider</artifactId> - <version>3.6.3.Final</version> + <version>4.7.4.Final</version> <scope>provided</scope> </dependency> <dependency> @@ -119,13 +115,13 @@ <dependency> <groupId>org.reflections</groupId> <artifactId>reflections</artifactId> - <version>0.9.9</version> + <version>0.10.2</version> <type>jar</type> </dependency> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> - <version>4.5</version> + <version>4.5.13</version> <type>jar</type> <scope>provided</scope> </dependency> @@ -138,53 +134,47 @@ <dependency> <groupId>commons-lang</groupId> <artifactId>commons-lang</artifactId> - <version>2.5</version> + <version>2.6</version> <type>jar</type> </dependency> <dependency> <groupId>de.micromata.jak</groupId> <artifactId>JavaAPIforKml</artifactId> - <version>2.2.0</version> + <version>2.2.1</version> </dependency> <!-- https://mvnrepository.com/artifact/net.postgis/postgis-jdbc --> <dependency> <groupId>net.postgis</groupId> <artifactId>postgis-jdbc</artifactId> - <version>2.2.2</version> + <version>2.5.1</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-annotations</artifactId> - <version>2.9.8</version> + <version>2.13.1</version> <scope>provided</scope> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> - <version>2.9.8</version> + <version>2.13.1</version> <scope>provided</scope> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> - <version>2.9.8</version> - </dependency> - <dependency> - <groupId>log4j</groupId> - <artifactId>log4j</artifactId> - <version>1.2.14</version> - <type>jar</type> + <version>2.13.1</version> </dependency> <dependency> <groupId>org.passay</groupId> <artifactId>passay</artifactId> - <version>1.1.0</version> + <version>1.6.1</version> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> - <version>5.4.24.Final</version> + <version>5.6.3.Final</version> <exclusions> <exclusion> <groupId>org.dom4j</groupId> @@ -195,50 +185,50 @@ <dependency> <groupId>org.postgresql</groupId> <artifactId>postgresql</artifactId> - <version>42.2.18</version> + <version>42.3.1</version> <scope>provided</scope> </dependency> <dependency> <groupId>com.fasterxml.jackson.dataformat</groupId> <artifactId>jackson-dataformat-csv</artifactId> - <version>2.9.8</version> + <version>2.13.1</version> <type>jar</type> </dependency> <dependency> <groupId>com.fasterxml.jackson.datatype</groupId> <artifactId>jackson-datatype-jsr310</artifactId> - <version>2.9.8</version> + <version>2.13.1</version> <type>jar</type> </dependency> <dependency> <groupId>org.locationtech.jts</groupId> <artifactId>jts-core</artifactId> - <version>1.16.1</version> + <version>1.18.2</version> <type>jar</type> </dependency> <dependency> <groupId>org.wololo</groupId> <artifactId>jts2geojson</artifactId> - <version>0.14.1</version> + <version>0.16.1</version> </dependency> <dependency> <groupId>javax</groupId> <artifactId>javaee-web-api</artifactId> - <version>8.0</version> + <version>8.0.1</version> <type>jar</type> <scope>provided</scope> </dependency> <dependency> <groupId>javax</groupId> <artifactId>javaee-api</artifactId> - <version>8.0</version> + <version>8.0.1</version> <type>jar</type> <scope>provided</scope> </dependency> <dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> - <version>2.3.24-incubating</version> + <version>2.3.31</version> </dependency> <dependency> <groupId>it.sauronsoftware.cron4j</groupId> @@ -263,12 +253,12 @@ <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> - <version>1.3.1</version> + <version>1.4</version> </dependency> <dependency> <groupId>com.ibm.icu</groupId> <artifactId>icu4j</artifactId> - <version>52.1</version> + <version>70.1</version> </dependency> <!--dependency> @@ -280,17 +270,17 @@ <dependency> <groupId>org.openjdk.jol</groupId> <artifactId>jol-core</artifactId> - <version>0.9</version> + <version>0.16</version> </dependency> <dependency> <groupId>org.geotools</groupId> <artifactId>gt-api</artifactId> - <version>20.3</version> + <version>20.5</version> </dependency> <dependency> <groupId>org.geotools</groupId> <artifactId>gt-epsg-hsql</artifactId> - <version>20.3</version> + <version>20.5</version> </dependency> <dependency> <groupId>com.webcohesion.enunciate</groupId> @@ -315,16 +305,16 @@ <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> - <version>2.0.2</version> + <version>3.8.1</version> <configuration> - <source>10</source> - <target>10</target> + <source>11</source> + <target>11</target> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> - <version>2.0.2</version> + <version>3.3.2</version> <configuration> <webResources> <resource> @@ -349,7 +339,7 @@ <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> - <version>2.10</version> + <version>2.22.2</version> <configuration> <argLine>-Xmx6048m</argLine> </configuration> diff --git a/src/main/java/no/nibio/vips/logic/authenticate/AuthenticationFilter.java b/src/main/java/no/nibio/vips/logic/authenticate/AuthenticationFilter.java index abfc6264317ca6c93772cdc9c1d0455b09f50526..76ad91784fece34063773465153c4e552cd931dd 100755 --- a/src/main/java/no/nibio/vips/logic/authenticate/AuthenticationFilter.java +++ b/src/main/java/no/nibio/vips/logic/authenticate/AuthenticationFilter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014 NIBIO <http://www.nibio.no/>. + * Copyright (c) 2022 NIBIO <http://www.nibio.no/>. * * This file is part of VIPSLogic. * VIPSLogic is free software: you can redistribute it and/or modify @@ -23,10 +23,12 @@ package no.nibio.vips.logic.authenticate; import java.io.IOException; import java.net.URLEncoder; import java.util.UUID; +import javax.ejb.EJB; import javax.servlet.*; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import no.nibio.vips.logic.controller.session.UserBean; import no.nibio.vips.logic.entity.VipsLogicUser; import no.nibio.vips.logic.util.Globals; import no.nibio.vips.logic.util.SessionControllerGetter; @@ -34,10 +36,13 @@ import no.nibio.vips.util.ServletUtil; /** * Ensures that user accessing a restricted resource is actually logged in. Redirects to login page if not - * @copyright 2013 <a href="http://www.nibio.no">NIBIO</a> + * @copyright 2013-2022 <a href="http://www.nibio.no">NIBIO</a> * @author Tor-Einar Skog <tor-einar.skog@nibio.no> */ public class AuthenticationFilter implements Filter{ + + @EJB + UserBean userBean; // The URLs that do not require login private String[] unprivilegedURLs; @@ -72,7 +77,7 @@ public class AuthenticationFilter implements Filter{ Cookie remembered = ServletUtil.getCookie(httpRequest, "rememberedUser"); if(remembered != null) { - VipsLogicUser user = SessionControllerGetter.getUserBean().findVipsLogicUser(UUID.fromString(remembered.getValue())); + VipsLogicUser user = userBean.findVipsLogicUser(UUID.fromString(remembered.getValue())); if(user != null) { httpRequest.getSession().setAttribute("user", user); diff --git a/src/main/java/no/nibio/vips/logic/controller/servlet/CropCategoryController.java b/src/main/java/no/nibio/vips/logic/controller/servlet/CropCategoryController.java index deeb40443f7383e1e6aa0804e1af4df15511ad18..3789c3cecc3f3b00a0b3f6e6868738178f73d0ed 100755 --- a/src/main/java/no/nibio/vips/logic/controller/servlet/CropCategoryController.java +++ b/src/main/java/no/nibio/vips/logic/controller/servlet/CropCategoryController.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016 NIBIO <http://www.nibio.no/>. + * Copyright (c) 2022 NIBIO <http://www.nibio.no/>. * * This file is part of VIPSLogic. * VIPSLogic is free software: you can redistribute it and/or modify @@ -24,10 +24,13 @@ import java.io.PrintWriter; import java.util.HashMap; import java.util.List; import java.util.Map; +import javax.ejb.EJB; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import no.nibio.vips.logic.controller.session.OrganismBean; +import no.nibio.vips.logic.controller.session.UserBean; import no.nibio.vips.logic.entity.CropCategory; import no.nibio.vips.logic.entity.Organism; import no.nibio.vips.logic.entity.Organization; @@ -41,11 +44,17 @@ import no.nibio.web.forms.FormValidationException; import no.nibio.web.forms.FormValidator; /** - * @copyright 2016 <a href="http://www.bioforsk.no/">Bioforsk</a> + * @copyright 2016-2022 <a href="http://www.bioforsk.no/">Bioforsk</a> * @author Tor-Einar Skog <tor-einar.skog@bioforsk.no> */ public class CropCategoryController extends HttpServlet { + @EJB + UserBean userBean; + + @EJB + OrganismBean organismBean; + /** * Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods. * @param request servlet request @@ -63,19 +72,19 @@ public class CropCategoryController extends HttpServlet { if(action == null) { Organization currentOrganization = user.isSuperUser() && request.getParameter("organizationId") != null ? - SessionControllerGetter.getUserBean().getOrganization(Integer.valueOf(request.getParameter("organizationId"))) + userBean.getOrganization(Integer.valueOf(request.getParameter("organizationId"))) : user.getOrganizationId(); if(user.isSuperUser()) { - List<Organization> allOrganizations = SessionControllerGetter.getUserBean().getTopLevelOrganizations(); + List<Organization> allOrganizations = userBean.getTopLevelOrganizations(); request.setAttribute("allOrganizations", allOrganizations); } - List<CropCategory> cropCategories = SessionControllerGetter.getOrganismBean().getCropCategories(currentOrganization.getOrganizationId()); + List<CropCategory> cropCategories = organismBean.getCropCategories(currentOrganization.getOrganizationId()); request.setAttribute("organization", currentOrganization); request.setAttribute("cropCategories", cropCategories); - List<Organism> cropList = SessionControllerGetter.getOrganismBean().getAllCrops(); + List<Organism> cropList = organismBean.getAllCrops(); Map<String, Organism> allCrops = new HashMap<>(); for(Organism crop:cropList) { @@ -94,9 +103,9 @@ public class CropCategoryController extends HttpServlet { { Integer cropCategoryId = formValidation.getFormField("cropCategoryId").getValueAsInteger(); List<Integer> cropCategoryCropOrganismIds = FormUtil.getIdsFromMultipleSelect(formValidation.getFormField("cropCategoryCropOrganismIds").getWebValues()); - CropCategory cropCategory = SessionControllerGetter.getOrganismBean().getCropCategory(cropCategoryId); + CropCategory cropCategory = organismBean.getCropCategory(cropCategoryId); cropCategory.setCropOrganismIds(cropCategoryCropOrganismIds.toArray(new Integer[cropCategoryCropOrganismIds.size()])); - SessionControllerGetter.getOrganismBean().storeCropCategory(cropCategory); + organismBean.storeCropCategory(cropCategory); response.sendRedirect(new StringBuilder(Globals.PROTOCOL + "://").append(ServletUtil.getServerName(request)).append("/organism/cropcategory?messageKey=cropCategoryUpdated").toString()); } 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 92568c8866de3a3c9a483d2eea0fb1df3f009ffe..ddd0bf7896461a221d88e3aaf6f920d218528703 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 @@ -29,6 +29,7 @@ import java.util.Collections; import java.util.Date; import java.util.List; import java.util.Map; +import javax.ejb.EJB; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import javax.servlet.ServletException; @@ -36,6 +37,7 @@ import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import no.nibio.vips.logic.controller.session.ForecastBean; +import no.nibio.vips.logic.controller.session.OrganismBean; import no.nibio.vips.logic.controller.session.UserBean; import no.nibio.vips.logic.entity.ForecastConfiguration; import no.nibio.vips.logic.entity.ModelInformation; @@ -62,6 +64,15 @@ public class ForecastConfigurationController extends HttpServlet { @PersistenceContext(unitName="VIPSLogic-PU") EntityManager em; + + @EJB + ForecastBean forecastBean; + + @EJB + UserBean userBean; + + @EJB + OrganismBean organismBean; /** * Processes requests for both HTTP <code>GET</code> and <code>POST</code> @@ -78,8 +89,6 @@ public class ForecastConfigurationController extends HttpServlet { String action = request.getParameter("action"); VipsLogicUser user = (VipsLogicUser) request.getSession().getAttribute("user"); - ForecastBean forecastBean = SessionControllerGetter.getForecastBean(); - UserBean userBean = SessionControllerGetter.getUserBean(); // Default: View list of forecast configurations // for SUPERUSERS and ORGANIZATION ADMINS @@ -233,8 +242,8 @@ public class ForecastConfigurationController extends HttpServlet { request.setAttribute("allCrops", em.createNamedQuery("Organism.findAllCrops").getResultList()); request.setAttribute("allPests", em.createNamedQuery("Organism.findAllPests").getResultList()); // Hierarchy categories - request.setAttribute("hierarchyCategories", SessionControllerGetter.getOrganismBean().getHierarchyCategoryNames(SessionLocaleUtil.getCurrentLocale(request))); - request.setAttribute("modelInformations", SessionControllerGetter.getForecastBean().getBatchableModels()); + request.setAttribute("hierarchyCategories", organismBean.getHierarchyCategoryNames(SessionLocaleUtil.getCurrentLocale(request))); + request.setAttribute("modelInformations", forecastBean.getBatchableModels()); request.setAttribute("messageKey", request.getParameter("messageKey")); request.getRequestDispatcher("/forecastConfigurationForm.ftl").forward(request, response); @@ -267,7 +276,7 @@ public class ForecastConfigurationController extends HttpServlet { request.setAttribute("allCrops", em.createNamedQuery("Organism.findAllCrops").getResultList()); request.setAttribute("allPests", em.createNamedQuery("Organism.findAllPests").getResultList()); // Hierarchy categories - request.setAttribute("hierarchyCategories", SessionControllerGetter.getOrganismBean().getHierarchyCategoryNames(SessionLocaleUtil.getCurrentLocale(request))); + request.setAttribute("hierarchyCategories", organismBean.getHierarchyCategoryNames(SessionLocaleUtil.getCurrentLocale(request))); request.setAttribute("modelInformations", em.createNamedQuery("ModelInformation.findAll").getResultList()); request.setAttribute("messageKey", request.getParameter("messageKey")); request.getRequestDispatcher("/forecastConfigurationForm.ftl").forward(request, response); diff --git a/src/main/java/no/nibio/vips/logic/controller/servlet/LoginController.java b/src/main/java/no/nibio/vips/logic/controller/servlet/LoginController.java index 8c169a334ec470129cd3655e3b3555279826dadb..ef89b33385608638c4100df90deef47ab99d77a3 100755 --- a/src/main/java/no/nibio/vips/logic/controller/servlet/LoginController.java +++ b/src/main/java/no/nibio/vips/logic/controller/servlet/LoginController.java @@ -38,23 +38,24 @@ import java.util.Arrays; import java.util.HashMap; import java.util.Map; import java.util.UUID; +import javax.ejb.EJB; import javax.servlet.ServletException; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.ws.rs.core.Response; +import no.nibio.vips.logic.controller.session.UserBean; import no.nibio.vips.logic.entity.UserAuthenticationType; import no.nibio.vips.logic.entity.UserUuid; import no.nibio.vips.logic.entity.VipsLogicUser; import no.nibio.vips.logic.i18n.SessionLocaleUtil; import no.nibio.vips.logic.util.Globals; -import no.nibio.vips.logic.util.SessionControllerGetter; import no.nibio.vips.util.ServletUtil; /** * Logs a user in or out - * @copyright 2013-2015 <a href="http://www.nibio.no/">NIBIO</a> + * @copyright 2013-2022 <a href="http://www.nibio.no/">NIBIO</a> * @author Tor-Einar Skog <tor-einar.skog@nibio.no> */ public class LoginController extends HttpServlet { @@ -62,6 +63,9 @@ public class LoginController extends HttpServlet { private static final String RETURN_UUID_PARAMETER_NAME = "returnUUID"; + @EJB + UserBean userBean; + /** * Processes requests for both HTTP * <code>GET</code> and @@ -116,7 +120,7 @@ public class LoginController extends HttpServlet { Payload payload = idToken.getPayload(); // Try to find the user - VipsLogicUser user = SessionControllerGetter.getUserBean().getUser(payload.getSubject(), UserAuthenticationType.TYPE_OPENID_GOOGLE); + VipsLogicUser user = userBean.getUser(payload.getSubject(), UserAuthenticationType.TYPE_OPENID_GOOGLE); if(user != null) { request.getSession().setAttribute("user", user); @@ -156,7 +160,7 @@ public class LoginController extends HttpServlet { { rememberedUser.setMaxAge(0); response.addCookie(rememberedUser); - SessionControllerGetter.getUserBean().deleteUserUuid(UUID.fromString(rememberedUser.getValue())); + userBean.deleteUserUuid(UUID.fromString(rememberedUser.getValue())); } request.setAttribute("messageKey","logoutsuccess"); request.getRequestDispatcher("/login.ftl").forward(request, response); @@ -188,7 +192,7 @@ public class LoginController extends HttpServlet { creds.put("username", username); creds.put("password", password); - VipsLogicUser user = SessionControllerGetter.getUserBean().authenticateUser(creds); + VipsLogicUser user = userBean.authenticateUser(creds); if(user != null && user.getUserStatusId().equals(Globals.USER_STATUS_APPROVED)) { @@ -277,7 +281,7 @@ public class LoginController extends HttpServlet { creds.put("username", username); creds.put("password", password); - VipsLogicUser user = SessionControllerGetter.getUserBean().authenticateUser(creds); + VipsLogicUser user = userBean.authenticateUser(creds); PrintWriter out = response.getWriter(); if(user != null && user.getUserStatusId().equals(Globals.USER_STATUS_APPROVED)) { @@ -371,7 +375,7 @@ public class LoginController extends HttpServlet { request.getSession().removeAttribute("rememberUser"); if(returnUUID || (rememberUser != null && rememberUser.equals("on"))) { - UserUuid uUUID = SessionControllerGetter.getUserBean().createAndPersistUserUuid(user); + UserUuid uUUID = userBean.createAndPersistUserUuid(user); if(rememberUser != null && rememberUser.equals("on")) { Cookie rememberedUser = new Cookie("rememberedUser", uUUID.getUserUuidPK().getUserUuid().toString()); @@ -388,7 +392,7 @@ public class LoginController extends HttpServlet { { rememberedUser.setMaxAge(0); response.addCookie(rememberedUser); - SessionControllerGetter.getUserBean().deleteUserUuid(UUID.fromString(rememberedUser.getValue())); + userBean.deleteUserUuid(UUID.fromString(rememberedUser.getValue())); } return null; } diff --git a/src/main/java/no/nibio/vips/logic/controller/servlet/MessageController.java b/src/main/java/no/nibio/vips/logic/controller/servlet/MessageController.java index 2cbc6d43c5e0de93e693227603f30e61648db46f..b1987c845e02258db823c0eb4e8e14256706e3f5 100755 --- a/src/main/java/no/nibio/vips/logic/controller/servlet/MessageController.java +++ b/src/main/java/no/nibio/vips/logic/controller/servlet/MessageController.java @@ -27,6 +27,7 @@ import java.util.Calendar; import java.util.Date; import java.util.List; import java.util.Map; +import javax.ejb.EJB; import javax.persistence.EntityManager; import javax.persistence.NoResultException; import javax.persistence.PersistenceContext; @@ -35,12 +36,14 @@ import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import no.nibio.vips.i18n.LanguageUtil; +import no.nibio.vips.logic.controller.session.MessageBean; +import no.nibio.vips.logic.controller.session.UserBean; import no.nibio.vips.logic.entity.Message; import no.nibio.vips.logic.entity.MessageLocale; import no.nibio.vips.logic.entity.MessageTag; import no.nibio.vips.logic.entity.VipsLogicUser; import no.nibio.vips.logic.i18n.SessionLocaleUtil; +import no.nibio.vips.logic.messaging.MessagingBean; import no.nibio.vips.logic.util.Globals; import no.nibio.vips.logic.util.SessionControllerGetter; import no.nibio.vips.logic.util.SystemTime; @@ -56,7 +59,7 @@ import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload; /** - * @copyright 2014 <a href="http://www.nibio.no/">NIBIO</a> + * @copyright 2014-2022 <a href="http://www.nibio.no/">NIBIO</a> * @author Tor-Einar Skog <tor-einar.skog@nibio.no> */ public class MessageController extends HttpServlet { @@ -64,6 +67,15 @@ public class MessageController extends HttpServlet { @PersistenceContext(unitName="VIPSLogic-PU") EntityManager em; + @EJB + MessageBean messageBean; + + @EJB + UserBean userBean; + + @EJB + MessagingBean messagingBean; + /** * Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods. * @param request servlet request @@ -92,11 +104,11 @@ public class MessageController extends HttpServlet { List<Message> messages; if(user.isSuperUser()) { - messages = SessionControllerGetter.getMessageBean().getFilteredMessages(null,null,datePubStart, datePubEnd); + messages = messageBean.getFilteredMessages(null,null,datePubStart, datePubEnd); } else { - messages = SessionControllerGetter.getMessageBean().getFilteredMessages(user.getOrganizationId().getOrganizationId(),null, datePubStart, datePubEnd); + messages = messageBean.getFilteredMessages(user.getOrganizationId().getOrganizationId(),null, datePubStart, datePubEnd); } request.setAttribute("messages", messages); request.setAttribute("selectedMessageTags", em.createNamedQuery("MessageTag.findAll", MessageTag.class).getResultList()); @@ -115,8 +127,8 @@ public class MessageController extends HttpServlet { // If no tags are selected, ALL tags are selected List<Integer> selectedMessageTags = request.getParameterValues("filterMessageTags") != null ? FormUtil.getIdsFromMultipleSelect(request.getParameterValues("filterMessageTags")) - : SessionControllerGetter.getMessageBean().getAllMessageTagIds(); - Map<String, List<MessageTag>> messageTags = SessionControllerGetter.getMessageBean() + : messageBean.getAllMessageTagIds(); + Map<String, List<MessageTag>> messageTags = messageBean .getFilterMessageTags(selectedMessageTags); request.setAttribute("selectedMessageTags", messageTags.get("selected")); request.setAttribute("notSelectedMessageTags", messageTags.get("notSelected")); @@ -140,11 +152,11 @@ public class MessageController extends HttpServlet { List<Message> messages; if(user.isSuperUser()) { - messages = SessionControllerGetter.getMessageBean().getFilteredMessages(null,selectedMessageTags, datePubStart, datePubEnd); + messages = messageBean.getFilteredMessages(null,selectedMessageTags, datePubStart, datePubEnd); } else { - messages = SessionControllerGetter.getMessageBean().getFilteredMessages(user.getOrganizationId().getOrganizationId(),selectedMessageTags, datePubStart, datePubEnd); + messages = messageBean.getFilteredMessages(user.getOrganizationId().getOrganizationId(),selectedMessageTags, datePubStart, datePubEnd); } request.setAttribute("datePubStart", datePubStart); request.setAttribute("datePubEnd", datePubEnd); @@ -212,7 +224,7 @@ public class MessageController extends HttpServlet { tags.removeAll(message.getMessageTagSet()); request.setAttribute("unusedTags", tags); request.setAttribute("messageKey", request.getParameter("messageKey")); - request.setAttribute("organizations", SessionControllerGetter.getUserBean().getOrganizations()); + request.setAttribute("organizations", userBean.getOrganizations()); request.setAttribute("allCropCategoryIds", em.createNamedQuery("CropCategory.findByOrganizationId").setParameter("organizationId",user.getOrganizationId().getOrganizationId()).getResultList()); request.getRequestDispatcher("/messageForm.ftl").forward(request, response); } @@ -239,7 +251,7 @@ public class MessageController extends HttpServlet { : SessionLocaleUtil.getCurrentLocale(request).getLanguage() ); request.setAttribute("unusedTags", em.createNamedQuery("MessageTag.findAll").getResultList()); - request.setAttribute("organizations", SessionControllerGetter.getUserBean().getOrganizations()); + request.setAttribute("organizations", userBean.getOrganizations()); request.setAttribute("allCropCategoryIds", em.createNamedQuery("CropCategory.findByOrganizationId").setParameter("organizationId",user.getOrganizationId().getOrganizationId()).getResultList()); request.getRequestDispatcher("/messageForm.ftl").forward(request, response); } @@ -287,19 +299,19 @@ public class MessageController extends HttpServlet { if(formValidation.isValid()) { // Store the message - Message message = SessionControllerGetter.getMessageBean().storeMessage(formValidation.getFormFields(), user); + Message message = messageBean.storeMessage(formValidation.getFormFields(), user); // New messages should be sent to subscribers if(formValidation.getFormField("messageId").getValueAsInteger() < 0) { - SessionControllerGetter.getMessagingBean().sendUniversalMessage(message); + messagingBean.sendUniversalMessage(message); } // Delete the current illustration String deleteIllustration = formValidation.getFormField("deleteIllustration").getWebValue(); if(deleteIllustration != null && deleteIllustration.equals("true")) { - message = SessionControllerGetter.getMessageBean().deleteMessageIllustration(message); + message = messageBean.deleteMessageIllustration(message); } // Store the new illustration (replaces former illustration if not already deleted) if(items != null) @@ -308,12 +320,12 @@ public class MessageController extends HttpServlet { { if(!item.isFormField() && item.getSize() > 0) { - message = SessionControllerGetter.getMessageBean().storeMessageIllustration(message, item); + message = messageBean.storeMessageIllustration(message, item); } } } // If an illustration is attached to the message, update the caption - SessionControllerGetter.getMessageBean().updateMessageIllustrationCaption(message, + messageBean.updateMessageIllustrationCaption(message, formValidation.getFormField("messageIllustrationCaptionLocale").getWebValue(), formValidation.getFormField("locale").getWebValue() ); @@ -369,7 +381,7 @@ public class MessageController extends HttpServlet { try { Integer messageId = Integer.valueOf(request.getParameter("messageId")); - SessionControllerGetter.getMessageBean().deleteMessage(messageId); + messageBean.deleteMessage(messageId); // Redirect to list response.sendRedirect(new StringBuilder(Globals.PROTOCOL + "://") .append(ServletUtil.getServerName(request)) diff --git a/src/main/java/no/nibio/vips/logic/controller/servlet/NotificationSubscriptionController.java b/src/main/java/no/nibio/vips/logic/controller/servlet/NotificationSubscriptionController.java index fed4cf5e3d1b73db48bf8ae3ba2cf537457a1400..d0cd5c29532f496e217a588ab949a7f896fe7aaa 100755 --- a/src/main/java/no/nibio/vips/logic/controller/servlet/NotificationSubscriptionController.java +++ b/src/main/java/no/nibio/vips/logic/controller/servlet/NotificationSubscriptionController.java @@ -20,14 +20,16 @@ package no.nibio.vips.logic.controller.servlet; import freemarker.core.ParseException; import java.io.IOException; -import java.util.Collections; import java.util.List; +import javax.ejb.EJB; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import no.nibio.vips.logic.controller.session.OrganismBean; +import no.nibio.vips.logic.controller.session.PointOfInterestBean; import no.nibio.vips.logic.controller.session.UserBean; import no.nibio.vips.logic.entity.CropCategory; import no.nibio.vips.logic.entity.VipsLogicRole; @@ -35,14 +37,14 @@ import no.nibio.vips.logic.entity.VipsLogicUser; import no.nibio.vips.logic.i18n.SessionLocaleUtil; import no.nibio.vips.logic.messaging.ForecastEventNotificationSubscription; import no.nibio.vips.logic.messaging.MessageNotificationSubscription; +import no.nibio.vips.logic.messaging.MessagingBean; import no.nibio.vips.logic.messaging.ObservationNotificationSubscription; import no.nibio.vips.logic.util.Globals; -import no.nibio.vips.logic.util.SessionControllerGetter; import no.nibio.vips.util.ServletUtil; import no.nibio.web.forms.FormUtil; /** - * @copyright 2016 <a href="http://www.nibio.no/">NIBIO</a> + * @copyright 2016-2022 <a href="http://www.nibio.no/">NIBIO</a> * @author Tor-Einar Skog <tor-einar.skog@nibio.no> */ @@ -52,6 +54,18 @@ public class NotificationSubscriptionController extends HttpServlet { @PersistenceContext(unitName="VIPSLogic-PU") EntityManager em; + @EJB + UserBean userBean; + + @EJB + MessagingBean messagingBean; + + @EJB + OrganismBean organismBean; + + @EJB + PointOfInterestBean pointOfInterestBean; + /** * Processes requests for both HTTP <code>GET</code> and <code>POST</code> * methods. @@ -66,7 +80,6 @@ public class NotificationSubscriptionController extends HttpServlet { String action = request.getParameter("action"); VipsLogicUser user = (VipsLogicUser) request.getSession().getAttribute("user"); - UserBean userBean = SessionControllerGetter.getUserBean(); try { @@ -94,22 +107,22 @@ public class NotificationSubscriptionController extends HttpServlet { { viewUser = em.find(VipsLogicUser.class, user.getUserId()); } - ObservationNotificationSubscription observationNotificationSubscription = SessionControllerGetter.getMessagingBean().getObservationNotificationSubscription(viewUser.getUserId()); + ObservationNotificationSubscription observationNotificationSubscription = messagingBean.getObservationNotificationSubscription(viewUser.getUserId()); request.setAttribute("observationNotificationSubscription", observationNotificationSubscription); - MessageNotificationSubscription messageNotificationSubscription = SessionControllerGetter.getMessagingBean().getMessageNotificationSubscription(viewUser.getUserId()); + MessageNotificationSubscription messageNotificationSubscription = messagingBean.getMessageNotificationSubscription(viewUser.getUserId()); request.setAttribute("messageNotificationSubscription",messageNotificationSubscription); - ForecastEventNotificationSubscription forecastEventNotificationSubscription = SessionControllerGetter.getMessagingBean().getForecastEventNotificationSubscription(viewUser.getUserId()); + ForecastEventNotificationSubscription forecastEventNotificationSubscription = messagingBean.getForecastEventNotificationSubscription(viewUser.getUserId()); request.setAttribute("forecastEventNotificationSubscription",forecastEventNotificationSubscription); request.setAttribute("viewUser", viewUser); - List<CropCategory> allCropCategories = SessionControllerGetter.getOrganismBean() + List<CropCategory> allCropCategories = organismBean .sortCropCategoryByLocalName( em.createNamedQuery("CropCategory.findByOrganizationId").setParameter("organizationId", viewUser.getOrganizationId().getOrganizationId()).getResultList(), SessionLocaleUtil.getCurrentLocale(request).getLanguage() ); request.setAttribute("allCropCategories", allCropCategories); request.setAttribute("messageTagSet", em.createNamedQuery("MessageTag.findAll").getResultList()); - request.setAttribute("weatherStationIds", SessionControllerGetter.getPointOfInterestBean().getWeatherstationsForOrganization(viewUser.getOrganizationId(), true)); - request.setAttribute("universalMessageFormats", SessionControllerGetter.getMessagingBean().getAllUniversalMessageFormats()); + request.setAttribute("weatherStationIds", pointOfInterestBean.getWeatherstationsForOrganization(viewUser.getOrganizationId(), true)); + request.setAttribute("universalMessageFormats", messagingBean.getAllUniversalMessageFormats()); request.setAttribute("messageKey", request.getParameter("messageKey")); request.getRequestDispatcher("/notificationSubscriptionForm.ftl").forward(request, response); } @@ -130,20 +143,20 @@ public class NotificationSubscriptionController extends HttpServlet { mSubscription.setCropCategoryIds(FormUtil.getIdsFromMultipleSelect(request.getParameterValues("messageN_cropCategoryIds"))); mSubscription.setMessageTagIds(FormUtil.getIdsFromMultipleSelect(request.getParameterValues("messageN_messageTagIds"))); mSubscription.setUserId(viewUser.getUserId()); - SessionControllerGetter.getMessagingBean().storeMessageNotificationSubscription(mSubscription); + messagingBean.storeMessageNotificationSubscription(mSubscription); ForecastEventNotificationSubscription fSubscription = new ForecastEventNotificationSubscription(); fSubscription.setUniversalMessageFormatId(Integer.valueOf(request.getParameter("forecastN_universalMessageFormatId"))); fSubscription.setCropCategoryIds(FormUtil.getIdsFromMultipleSelect(request.getParameterValues("forecastN_cropCategoryIds"))); fSubscription.setWeatherStationIds(FormUtil.getIdsFromMultipleSelect(request.getParameterValues("forecastN_weatherStationIds"))); fSubscription.setUserId(viewUser.getUserId()); - SessionControllerGetter.getMessagingBean().storeForecastEventNotificationSubscription(fSubscription); + messagingBean.storeForecastEventNotificationSubscription(fSubscription); ObservationNotificationSubscription oSubscription = new ObservationNotificationSubscription(); oSubscription.setUniversalMessageFormatId(Integer.valueOf(request.getParameter("observationN_universalMessageFormatId"))); oSubscription.setCropCategoryIds(FormUtil.getIdsFromMultipleSelect(request.getParameterValues("observationN_cropCategoryIds"))); oSubscription.setUserId(viewUser.getUserId()); - SessionControllerGetter.getMessagingBean().storeObservationNotificationSubscription(oSubscription); + messagingBean.storeObservationNotificationSubscription(oSubscription); // Redirect to form with confirmation message response.sendRedirect(new StringBuilder(Globals.PROTOCOL + "://") diff --git a/src/main/java/no/nibio/vips/logic/controller/servlet/ObservationController.java b/src/main/java/no/nibio/vips/logic/controller/servlet/ObservationController.java index 84fc06f83aeb5251fc18679a1c41eaf6b9649afc..c49849aa6a2051c61a14e20cadbea3c72f8366e8 100755 --- a/src/main/java/no/nibio/vips/logic/controller/servlet/ObservationController.java +++ b/src/main/java/no/nibio/vips/logic/controller/servlet/ObservationController.java @@ -33,6 +33,7 @@ import java.util.Map; import java.util.Set; import java.util.TimeZone; import java.util.stream.Collectors; +import javax.ejb.EJB; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import javax.servlet.ServletContext; @@ -40,6 +41,10 @@ import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import no.nibio.vips.logic.controller.session.ObservationBean; +import no.nibio.vips.logic.controller.session.OrganismBean; +import no.nibio.vips.logic.controller.session.PointOfInterestBean; +import no.nibio.vips.logic.controller.session.UserBean; import no.nibio.vips.logic.entity.Observation; import no.nibio.vips.logic.entity.ObservationFormShortcut; import no.nibio.vips.logic.entity.ObservationMethod; @@ -50,6 +55,7 @@ import no.nibio.vips.logic.entity.PolygonService; import no.nibio.vips.logic.entity.VipsLogicRole; import no.nibio.vips.logic.entity.VipsLogicUser; import no.nibio.vips.logic.i18n.SessionLocaleUtil; +import no.nibio.vips.logic.messaging.MessagingBean; import no.nibio.vips.logic.util.Globals; import no.nibio.vips.logic.util.SessionControllerGetter; import no.nibio.vips.logic.util.SystemTime; @@ -67,12 +73,24 @@ import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload; /** - * @copyright 2014-2017 <a href="http://www.nibio.no/">NIBIO</a> + * @copyright 2014-2022 <a href="http://www.nibio.no/">NIBIO</a> * @author Tor-Einar Skog <tor-einar.skog@nibio.no> */ public class ObservationController extends HttpServlet { @PersistenceContext(unitName="VIPSLogic-PU") EntityManager em; + + @EJB + UserBean userBean; + @EJB + ObservationBean observationBean; + @EJB + MessagingBean messagingBean; + @EJB + OrganismBean organismBean; + @EJB + PointOfInterestBean pointOfInterestBean; + /** * Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods. * @param request servlet request @@ -89,15 +107,15 @@ public class ObservationController extends HttpServlet { List<OrganizationGroup> organizationGroups = null; if(user.isSuperUser()) { - organizationGroups = SessionControllerGetter.getUserBean().getOrganizationGroups(); + organizationGroups = userBean.getOrganizationGroups(); } else if(user.isOrganizationAdmin()) { - organizationGroups = SessionControllerGetter.getUserBean().getOrganizationGroups(user.getOrganizationId()); + organizationGroups = userBean.getOrganizationGroups(user.getOrganizationId()); } else { - organizationGroups = SessionControllerGetter.getUserBean().getOrganizationGroups(user); + organizationGroups = userBean.getOrganizationGroups(user); } // Default: View observation list // for everyone @@ -179,16 +197,16 @@ public class ObservationController extends HttpServlet { } // First: Get observations for organization or user - if(viewOthersObservations && SessionControllerGetter.getUserBean().authorizeUser(user, + if(viewOthersObservations && userBean.authorizeUser(user, VipsLogicRole.OBSERVATION_AUTHORITY, VipsLogicRole.ORGANIZATION_ADMINISTRATOR, VipsLogicRole.SUPERUSER)) { - observations = SessionControllerGetter.getObservationBean().getObservations(user.getOrganizationId().getOrganizationId(), timeOfObservationFrom, timeOfObservationTo); + observations = observationBean.getObservations(user.getOrganizationId().getOrganizationId(), timeOfObservationFrom, timeOfObservationTo); } else { - observations = SessionControllerGetter.getObservationBean().getObservationsForUser(user, timeOfObservationFrom, timeOfObservationTo); + observations = observationBean.getObservationsForUser(user, timeOfObservationFrom, timeOfObservationTo); } // Then: Filter on other criteria @@ -218,7 +236,7 @@ public class ObservationController extends HttpServlet { final Set<Integer> ogi = organizationGroupId; observations = observations.stream() .filter((Observation obs) -> { - List<Integer> availableOrganizationGroupIds = SessionControllerGetter.getObservationBean().getOrganizationGroupIds(obs); + List<Integer> availableOrganizationGroupIds = observationBean.getOrganizationGroupIds(obs); if(availableOrganizationGroupIds != null && ! availableOrganizationGroupIds.isEmpty()) { if (availableOrganizationGroupIds.stream().anyMatch((gId) -> (ogi.contains(gId)))) { @@ -231,15 +249,15 @@ public class ObservationController extends HttpServlet { } // Check for form shortcuts - List<ObservationFormShortcut> shortcuts = SessionControllerGetter.getObservationBean().getObservationFormShortcuts(user.getOrganizationId()); + List<ObservationFormShortcut> shortcuts = observationBean.getObservationFormShortcuts(user.getOrganizationId()); Collections.sort(observations); Collections.reverse(observations); //observations.forEach(o->System.out.println(o)); List<Organism> allPests = em.createNamedQuery("Organism.findAllPests").getResultList(); request.setAttribute("shortcuts", shortcuts); - request.setAttribute("allPests", SessionControllerGetter.getOrganismBean().sortOrganismsByLocalName(allPests, SessionLocaleUtil.getCurrentLocale(request).getLanguage())); - request.setAttribute("hierarchyCategories", SessionControllerGetter.getOrganismBean().getHierarchyCategoryNames(SessionLocaleUtil.getCurrentLocale(request))); + request.setAttribute("allPests", organismBean.sortOrganismsByLocalName(allPests, SessionLocaleUtil.getCurrentLocale(request).getLanguage())); + request.setAttribute("hierarchyCategories", organismBean.getHierarchyCategoryNames(SessionLocaleUtil.getCurrentLocale(request))); request.setAttribute("timeOfObservationFrom", userDefinedFrom ? timeOfObservationFrom : null); request.setAttribute("timeOfObservationTo", userDefinedTo ? timeOfObservationTo : null); request.setAttribute("selectedPestOrganismId", pestOrganismId); @@ -248,8 +266,8 @@ public class ObservationController extends HttpServlet { request.setAttribute("organizationGroups", organizationGroups); request.setAttribute("organizationGroupId", organizationGroupId); request.setAttribute("observations", observations); - request.setAttribute("userHasObserverPrivilege", SessionControllerGetter.getUserBean().authorizeUser(user, VipsLogicRole.OBSERVER, VipsLogicRole.ORGANIZATION_ADMINISTRATOR, VipsLogicRole.SUPERUSER)); - request.setAttribute("userIsObservationAuthority", SessionControllerGetter.getUserBean().authorizeUser(user, VipsLogicRole.OBSERVATION_AUTHORITY, VipsLogicRole.ORGANIZATION_ADMINISTRATOR, VipsLogicRole.SUPERUSER)); + request.setAttribute("userHasObserverPrivilege", userBean.authorizeUser(user, VipsLogicRole.OBSERVER, VipsLogicRole.ORGANIZATION_ADMINISTRATOR, VipsLogicRole.SUPERUSER)); + request.setAttribute("userIsObservationAuthority", userBean.authorizeUser(user, VipsLogicRole.OBSERVATION_AUTHORITY, VipsLogicRole.ORGANIZATION_ADMINISTRATOR, VipsLogicRole.SUPERUSER)); // If this is a redirect from a controller, with a message to be passed on request.setAttribute("messageKey", request.getParameter("messageKey")); request.getRequestDispatcher("/observationList.ftl").forward(request, response); @@ -258,7 +276,7 @@ public class ObservationController extends HttpServlet { // Authorization: ORGANIZATION ADMIN, OBSERVER or SUPERUSER else if(action.equals("newObservationForm")) { - if(SessionControllerGetter.getUserBean().authorizeUser(user, VipsLogicRole.OBSERVER, VipsLogicRole.OBSERVATION_AUTHORITY, VipsLogicRole.ORGANIZATION_ADMINISTRATOR, VipsLogicRole.SUPERUSER)) + if(userBean.authorizeUser(user, VipsLogicRole.OBSERVER, VipsLogicRole.OBSERVATION_AUTHORITY, VipsLogicRole.ORGANIZATION_ADMINISTRATOR, VipsLogicRole.SUPERUSER)) { try { @@ -276,7 +294,7 @@ public class ObservationController extends HttpServlet { Integer organismId = Integer.valueOf(request.getParameter("organismId")); observation.setOrganism(em.find(Organism.class, organismId)); // If pest has been selected, include only associated crops - allCrops = SessionControllerGetter.getOrganismBean().getPestCrops(organismId); + allCrops = organismBean.getPestCrops(organismId); } else { @@ -284,7 +302,7 @@ public class ObservationController extends HttpServlet { } // Get the polygonServices - List<PolygonService> polygonServices = SessionControllerGetter.getObservationBean().getPolygonServicesForOrganization(user.getOrganization_id()); + List<PolygonService> polygonServices = observationBean.getPolygonServicesForOrganization(user.getOrganization_id()); request.setAttribute("observation", observation); request.setAttribute("polygonServices", polygonServices); @@ -295,20 +313,20 @@ public class ObservationController extends HttpServlet { ); request.setAttribute("hideObservationFormMap", request.getParameter("hideObservationFormMap") != null ? request.getParameter("hideObservationFormMap").equals("true") : false); request.setAttribute("noBroadcast", request.getParameter("noBroadcast") != null); - request.setAttribute("mapLayers", SessionControllerGetter.getUserBean().getMapLayerJSONForUser(user)); + request.setAttribute("mapLayers", userBean.getMapLayerJSONForUser(user)); request.setAttribute("defaultMapCenter",user.getOrganizationId().getDefaultMapCenter()); request.setAttribute("defaultMapZoom", user.getOrganizationId().getDefaultMapZoom()); - request.setAttribute("locationPointOfInterests", SessionControllerGetter.getPointOfInterestBean().getRelevantPointOfInterestsForUser(user)); + request.setAttribute("locationPointOfInterests", pointOfInterestBean.getRelevantPointOfInterestsForUser(user)); List<Organism> allPests = em.createNamedQuery("Organism.findAllPests").getResultList(); - request.setAttribute("allPests", SessionControllerGetter.getOrganismBean().sortOrganismsByLocalName(allPests, SessionLocaleUtil.getCurrentLocale(request).getLanguage())); - request.setAttribute("allCrops", SessionControllerGetter.getOrganismBean().sortOrganismsByLocalName(allCrops, SessionLocaleUtil.getCurrentLocale(request).getLanguage())); + request.setAttribute("allPests", organismBean.sortOrganismsByLocalName(allPests, SessionLocaleUtil.getCurrentLocale(request).getLanguage())); + request.setAttribute("allCrops", organismBean.sortOrganismsByLocalName(allCrops, SessionLocaleUtil.getCurrentLocale(request).getLanguage())); request.setAttribute("selectedOrganizationGroupIds", new ArrayList<>()); // Hierarchy categories - request.setAttribute("hierarchyCategories", SessionControllerGetter.getOrganismBean().getHierarchyCategoryNames(SessionLocaleUtil.getCurrentLocale(request))); + request.setAttribute("hierarchyCategories", organismBean.getHierarchyCategoryNames(SessionLocaleUtil.getCurrentLocale(request))); request.setAttribute("observationMethods", em.createNamedQuery("ObservationMethod.findAll", ObservationMethod.class).getResultList()); request.setAttribute("organizationGroups", organizationGroups); request.setAttribute("editAccess", "W"); // User always has edit access to new observation - if(SessionControllerGetter.getUserBean().authorizeUser(user, VipsLogicRole.OBSERVATION_AUTHORITY, VipsLogicRole.ORGANIZATION_ADMINISTRATOR, VipsLogicRole.SUPERUSER)) + if(userBean.authorizeUser(user, VipsLogicRole.OBSERVATION_AUTHORITY, VipsLogicRole.ORGANIZATION_ADMINISTRATOR, VipsLogicRole.SUPERUSER)) { request.setAttribute("statusTypeIds", em.createNamedQuery("ObservationStatusType.findAll").getResultList()); } @@ -328,31 +346,31 @@ public class ObservationController extends HttpServlet { // Authorization: ORGANIZATION ADMIN, OBSERVER or SUPERUSER else if(action.equals("editObservationForm")) { - if(SessionControllerGetter.getUserBean().authorizeUser(user, VipsLogicRole.OBSERVER, VipsLogicRole.ORGANIZATION_ADMINISTRATOR, VipsLogicRole.SUPERUSER)) + if(userBean.authorizeUser(user, VipsLogicRole.OBSERVER, VipsLogicRole.ORGANIZATION_ADMINISTRATOR, VipsLogicRole.SUPERUSER)) { try { Integer observationId = Integer.valueOf(request.getParameter("observationId")); - Observation observation = SessionControllerGetter.getObservationBean().getObservation(observationId);//em.find(Observation.class, observationId); - List<PolygonService> polygonServices = SessionControllerGetter.getObservationBean().getPolygonServicesForOrganization(user.getOrganization_id()); + Observation observation = observationBean.getObservation(observationId);//em.find(Observation.class, observationId); + List<PolygonService> polygonServices = observationBean.getPolygonServicesForOrganization(user.getOrganization_id()); request.setAttribute("locationVisibilityFormValue", this.getLocationVisibilityFormValue(observation)); request.setAttribute("observation", observation); request.setAttribute("polygonServices", polygonServices); request.setAttribute("noBroadcast", request.getParameter("noBroadcast") != null); - request.setAttribute("mapLayers", SessionControllerGetter.getUserBean().getMapLayerJSONForUser(user)); + request.setAttribute("mapLayers", userBean.getMapLayerJSONForUser(user)); //System.out.println(observation.getGeoinfo()); request.setAttribute("defaultMapCenter",user.getOrganizationId().getDefaultMapCenter()); request.setAttribute("defaultMapZoom", user.getOrganizationId().getDefaultMapZoom()); List<Organism> allPests = em.createNamedQuery("Organism.findAllPests").getResultList(); - request.setAttribute("allPests", SessionControllerGetter.getOrganismBean().sortOrganismsByLocalName(allPests, SessionLocaleUtil.getCurrentLocale(request).getLanguage())); + request.setAttribute("allPests", organismBean.sortOrganismsByLocalName(allPests, SessionLocaleUtil.getCurrentLocale(request).getLanguage())); List<Organism> allCrops = em.createNamedQuery("Organism.findAllCrops").getResultList(); - request.setAttribute("allCrops", SessionControllerGetter.getOrganismBean().sortOrganismsByLocalName(allCrops, SessionLocaleUtil.getCurrentLocale(request).getLanguage())); - request.setAttribute("selectedOrganizationGroupIds", SessionControllerGetter.getObservationBean().getOrganizationGroupIds(observation)); + request.setAttribute("allCrops", organismBean.sortOrganismsByLocalName(allCrops, SessionLocaleUtil.getCurrentLocale(request).getLanguage())); + request.setAttribute("selectedOrganizationGroupIds", observationBean.getOrganizationGroupIds(observation)); // Hierarchy categories - request.setAttribute("hierarchyCategories", SessionControllerGetter.getOrganismBean().getHierarchyCategoryNames(SessionLocaleUtil.getCurrentLocale(request))); + request.setAttribute("hierarchyCategories", organismBean.getHierarchyCategoryNames(SessionLocaleUtil.getCurrentLocale(request))); request.setAttribute("observationMethods", em.createNamedQuery("ObservationMethod.findAll", ObservationMethod.class).getResultList()); request.setAttribute("organizationGroups", organizationGroups); - if(SessionControllerGetter.getUserBean().authorizeUser(user, VipsLogicRole.OBSERVATION_AUTHORITY, VipsLogicRole.ORGANIZATION_ADMINISTRATOR, VipsLogicRole.SUPERUSER)) + if(userBean.authorizeUser(user, VipsLogicRole.OBSERVATION_AUTHORITY, VipsLogicRole.ORGANIZATION_ADMINISTRATOR, VipsLogicRole.SUPERUSER)) { request.setAttribute("statusTypeIds", em.createNamedQuery("ObservationStatusType.findAll").getResultList()); } @@ -388,7 +406,7 @@ public class ObservationController extends HttpServlet { // Authorization: ORGANIZATION ADMIN, OBSERVER or SUPERUSER else if(action.equals("observationFormSubmit")) { - if(SessionControllerGetter.getUserBean().authorizeUser(user, VipsLogicRole.OBSERVER, VipsLogicRole.ORGANIZATION_ADMINISTRATOR, VipsLogicRole.SUPERUSER)) + if(userBean.authorizeUser(user, VipsLogicRole.OBSERVER, VipsLogicRole.ORGANIZATION_ADMINISTRATOR, VipsLogicRole.SUPERUSER)) { try { @@ -456,7 +474,7 @@ public class ObservationController extends HttpServlet { boolean sendNotification = false; // Storing approval status - if(SessionControllerGetter.getUserBean().authorizeUser(user, VipsLogicRole.OBSERVATION_AUTHORITY, VipsLogicRole.ORGANIZATION_ADMINISTRATOR, VipsLogicRole.SUPERUSER)) + if(userBean.authorizeUser(user, VipsLogicRole.OBSERVATION_AUTHORITY, VipsLogicRole.ORGANIZATION_ADMINISTRATOR, VipsLogicRole.SUPERUSER)) { Integer statusTypeId = formValidation.getFormField("statusTypeId").getValueAsInteger(); if( @@ -494,14 +512,14 @@ public class ObservationController extends HttpServlet { observation.setGeoinfo(formValidation.getFormField("geoInfo").getWebValue()); } - observation = SessionControllerGetter.getObservationBean().storeObservation(observation); + observation = observationBean.storeObservation(observation); // Image handling // Delete the current illustration String deleteIllustration = formValidation.getFormField("deleteIllustration").getWebValue(); if(deleteIllustration != null && deleteIllustration.equals("true")) { - observation = SessionControllerGetter.getObservationBean().deleteObservationIllustration(observation); + observation = observationBean.deleteObservationIllustration(observation); } // Store the new illustration (replaces former illustration if not already deleted) @@ -511,13 +529,13 @@ public class ObservationController extends HttpServlet { { if(!item.isFormField() && item.getSize() > 0) { - observation = SessionControllerGetter.getObservationBean().storeObservationIllustration(observation, item); + observation = observationBean.storeObservationIllustration(observation, item); } } } // Checking for organization groups - SessionControllerGetter.getObservationBean().storeOrganizationGroupObservationIds(observation, formValidation.getFormField("organizationGroupId").getWebValues()); + observationBean.storeOrganizationGroupObservationIds(observation, formValidation.getFormField("organizationGroupId").getWebValues()); // All transactions finished, we can send notifications // if conditions are met @@ -525,7 +543,7 @@ public class ObservationController extends HttpServlet { (System.getProperty("DISABLE_MESSAGING_SYSTEM") != null && System.getProperty("DISABLE_MESSAGING_SYSTEM").equals("true")) ) { - SessionControllerGetter.getMessagingBean().sendUniversalMessage(observation); + messagingBean.sendUniversalMessage(observation); } // Redirect to form @@ -544,7 +562,7 @@ public class ObservationController extends HttpServlet { List<Organism> allOrganisms = em.createNamedQuery("Organism.findAll").getResultList(); request.setAttribute("allOrganisms", allOrganisms); // Hierarchy categories - request.setAttribute("hierarchyCategories", SessionControllerGetter.getOrganismBean().getHierarchyCategoryNames(SessionLocaleUtil.getCurrentLocale(request))); + request.setAttribute("hierarchyCategories", organismBean.getHierarchyCategoryNames(SessionLocaleUtil.getCurrentLocale(request))); request.setAttribute("observationMethods", em.createNamedQuery("ObservationMethod.findAll", ObservationMethod.class).getResultList()); request.getRequestDispatcher("/observationForm.ftl").forward(request, response); } @@ -568,12 +586,12 @@ public class ObservationController extends HttpServlet { // Authorization: ORGANIZATION ADMIN, OBSERVER or SUPERUSER else if(action.equals("deleteObservation")) { - if(SessionControllerGetter.getUserBean().authorizeUser(user, VipsLogicRole.OBSERVER, VipsLogicRole.ORGANIZATION_ADMINISTRATOR, VipsLogicRole.SUPERUSER)) + if(userBean.authorizeUser(user, VipsLogicRole.OBSERVER, VipsLogicRole.ORGANIZATION_ADMINISTRATOR, VipsLogicRole.SUPERUSER)) { try { Integer observationId = Integer.valueOf(request.getParameter("observationId")); - SessionControllerGetter.getObservationBean().deleteObservation(observationId); + observationBean.deleteObservation(observationId); // Redirect to list response.sendRedirect(new StringBuilder(Globals.PROTOCOL + "://") @@ -596,7 +614,7 @@ public class ObservationController extends HttpServlet { else if(request.getServletPath().endsWith("/map")) { // Only for superusers, organizationadmins and observation authorities - if(SessionControllerGetter.getUserBean().authorizeUser(user, + if(userBean.authorizeUser(user, VipsLogicRole.SUPERUSER, VipsLogicRole.ORGANIZATION_ADMINISTRATOR, VipsLogicRole.OBSERVATION_AUTHORITY) ) { @@ -609,7 +627,7 @@ public class ObservationController extends HttpServlet { formValidation.getFormField("organizationId").getValueAsInteger() :user.getOrganizationId().getOrganizationId(); organization = em.find(Organization.class, organizationId); - request.setAttribute("organizations", SessionControllerGetter.getUserBean().getOrganizations()); + request.setAttribute("organizations", userBean.getOrganizations()); request.setAttribute("organizationId", organizationId); } diff --git a/src/main/java/no/nibio/vips/logic/controller/servlet/OrganismController.java b/src/main/java/no/nibio/vips/logic/controller/servlet/OrganismController.java index 6f887f7b8e790ace23664afd2d173c30c0c8f85f..4fe1f614cbe676b64cde796709a16c2b94eafc11 100755 --- a/src/main/java/no/nibio/vips/logic/controller/servlet/OrganismController.java +++ b/src/main/java/no/nibio/vips/logic/controller/servlet/OrganismController.java @@ -20,17 +20,18 @@ package no.nibio.vips.logic.controller.servlet; import java.io.IOException; -import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; +import javax.ejb.EJB; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import no.nibio.vips.logic.controller.session.OrganismBean; import no.nibio.vips.logic.entity.CropPest; import no.nibio.vips.logic.entity.Organism; import no.nibio.vips.logic.entity.OrganismExternalResource; @@ -38,7 +39,6 @@ import no.nibio.vips.logic.entity.OrganismExternalResourcePK; import no.nibio.vips.logic.entity.VipsLogicUser; import no.nibio.vips.logic.i18n.SessionLocaleUtil; import no.nibio.vips.logic.util.Globals; -import no.nibio.vips.logic.util.SessionControllerGetter; import no.nibio.vips.util.ExceptionUtil; import no.nibio.vips.util.ServletUtil; import no.nibio.web.forms.FormField; @@ -48,13 +48,16 @@ import no.nibio.web.forms.FormValidationException; import no.nibio.web.forms.FormValidator; /** - * @copyright 2016 <a href="http://www.nibio.no/">NIBIO</a> + * @copyright 2016-2022 <a href="http://www.nibio.no/">NIBIO</a> * @author Tor-Einar Skog <tor-einar.skog@nibio.no> */ public class OrganismController extends HttpServlet { @PersistenceContext(unitName="VIPSLogic-PU") EntityManager em; + + @EJB + OrganismBean organismBean; /** * Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods. @@ -80,12 +83,12 @@ public class OrganismController extends HttpServlet { ) { organism = new Organism(); - organism.setChildOrganisms(SessionControllerGetter.getOrganismBean().getTopLevelOrganisms()); + organism.setChildOrganisms(organismBean.getTopLevelOrganisms()); } else { Integer organismId = Integer.valueOf(request.getParameter("organismId")); - organism = SessionControllerGetter.getOrganismBean().getOrganismAndChildrenTwoLevels(organismId); + organism = organismBean.getOrganismAndChildrenTwoLevels(organismId); } request.setAttribute("organism", organism); // Check if any of the child organisms has trade name @@ -119,27 +122,27 @@ public class OrganismController extends HttpServlet { { List<Organism> allCrops = em.createNamedQuery("Organism.findAllCrops").getResultList(); - Map<String,Organism> allPestsMapped = SessionControllerGetter.getOrganismBean().getAllPestsMapped(); - Map<String, CropPest> cropPestsMap = SessionControllerGetter.getOrganismBean().getCropPestsMapped(); + Map<String,Organism> allPestsMapped = organismBean.getAllPestsMapped(); + Map<String, CropPest> cropPestsMap = organismBean.getCropPestsMapped(); request.setAttribute("allCrops", - SessionControllerGetter.getOrganismBean().sortOrganismsByLocalName( + organismBean.sortOrganismsByLocalName( allCrops, SessionLocaleUtil.getCurrentLocale(request).getLanguage()) ); request.setAttribute("allPestsMapped", allPestsMapped); request.setAttribute("cropPestsMap", cropPestsMap); - request.setAttribute("hierarchyCategories", SessionControllerGetter.getOrganismBean().getHierarchyCategoryNames(SessionLocaleUtil.getCurrentLocale(request))); + request.setAttribute("hierarchyCategories", organismBean.getHierarchyCategoryNames(SessionLocaleUtil.getCurrentLocale(request))); request.getRequestDispatcher("/cropList.ftl").forward(request, response); } else if(action.equals("listPests")) { List<Organism> allPests = em.createNamedQuery("Organism.findAllPests").getResultList(); request.setAttribute("allPests", - SessionControllerGetter.getOrganismBean().sortOrganismsByLocalName( + organismBean.sortOrganismsByLocalName( allPests, SessionLocaleUtil.getCurrentLocale(request).getLanguage()) ); - request.setAttribute("hierarchyCategories", SessionControllerGetter.getOrganismBean().getHierarchyCategoryNames(SessionLocaleUtil.getCurrentLocale(request))); + request.setAttribute("hierarchyCategories", organismBean.getHierarchyCategoryNames(SessionLocaleUtil.getCurrentLocale(request))); request.getRequestDispatcher("/pestList.ftl").forward(request, response); } else if(action.equals("viewOrganism")) @@ -151,7 +154,7 @@ public class OrganismController extends HttpServlet { request.setAttribute("organism", organism); // Hierarchy categories - request.setAttribute("hierarchyCategories", SessionControllerGetter.getOrganismBean().getHierarchyCategoryNames(SessionLocaleUtil.getCurrentLocale(request))); + request.setAttribute("hierarchyCategories", organismBean.getHierarchyCategoryNames(SessionLocaleUtil.getCurrentLocale(request))); request.setAttribute("parentOrganism", organism.getParentOrganismId() != null ? em.find(Organism.class, organism.getParentOrganismId()) : null); request.getRequestDispatcher("/organismDetails.ftl").forward(request, response); } @@ -177,15 +180,15 @@ public class OrganismController extends HttpServlet { request.setAttribute("organism", organism); if(organism.getIsCrop()) { - request.setAttribute("cropCategories", SessionControllerGetter.getOrganismBean().getCropCategories(user.getOrganizationId().getOrganizationId())); + request.setAttribute("cropCategories", organismBean.getCropCategories(user.getOrganizationId().getOrganizationId())); } // All organisms used for parent organism list List<Organism> allOrganisms = em.createNamedQuery("Organism.findAll").getResultList(); request.setAttribute("allOrganisms", allOrganisms); // Hierarchy categories - request.setAttribute("hierarchyCategories", SessionControllerGetter.getOrganismBean().getHierarchyCategoryNames(SessionLocaleUtil.getCurrentLocale(request))); + request.setAttribute("hierarchyCategories", organismBean.getHierarchyCategoryNames(SessionLocaleUtil.getCurrentLocale(request))); // Finding all external resources where entry is missing - request.setAttribute("unreferencedExternalResources", SessionControllerGetter.getOrganismBean().getUnusedExternalResourcesForOrganism(organism)); + request.setAttribute("unreferencedExternalResources", organismBean.getUnusedExternalResourcesForOrganism(organism)); request.getRequestDispatcher("/organismForm.ftl").forward(request, response); } catch(NullPointerException | NumberFormatException ex) @@ -207,10 +210,10 @@ public class OrganismController extends HttpServlet { request.setAttribute("organism", organism); request.setAttribute("allOrganisms", em.createNamedQuery("Organism.findAll").getResultList()); // Hierarchy categories - request.setAttribute("hierarchyCategories", SessionControllerGetter.getOrganismBean().getHierarchyCategoryNames(SessionLocaleUtil.getCurrentLocale(request))); + request.setAttribute("hierarchyCategories", organismBean.getHierarchyCategoryNames(SessionLocaleUtil.getCurrentLocale(request))); // Finding all external resources where entry is missing - request.setAttribute("unreferencedExternalResources", SessionControllerGetter.getOrganismBean().getUnusedExternalResourcesForOrganism(organism)); + request.setAttribute("unreferencedExternalResources", organismBean.getUnusedExternalResourcesForOrganism(organism)); request.getRequestDispatcher("/organismForm.ftl").forward(request, response); } @@ -235,7 +238,7 @@ public class OrganismController extends HttpServlet { organism.setHierarchyCategoryId(formValidation.getFormField("hierarchyCategoryId").getValueAsInteger()); organism.setParentOrganismId(formValidation.getFormField("parentOrganismId").getValueAsInteger()); - organism = SessionControllerGetter.getOrganismBean().storeOrganismWithLocalName( + organism = organismBean.storeOrganismWithLocalName( organism, formValidation.getFormField("localName").getWebValue(), SessionLocaleUtil.getCurrentLocale(request) @@ -250,7 +253,7 @@ public class OrganismController extends HttpServlet { cropCategoryIds.add(Integer.valueOf(idStr)); } } - SessionControllerGetter.getOrganismBean().storeOrganismCropCategories(user.getOrganizationId().getOrganizationId(), organism, cropCategoryIds); + organismBean.storeOrganismCropCategories(user.getOrganizationId().getOrganizationId(), organism, cropCategoryIds); //System.out.println(formValidation.getFormFields().toString()); if(formValidation.getMultipleMapFormFields().get("externalResourceIdentifier") != null) @@ -268,7 +271,7 @@ public class OrganismController extends HttpServlet { OrganismExternalResourcePK pk = new OrganismExternalResourcePK(organism.getOrganismId(), externalResourceId); organismExternalResource.setOrganismExternalResourcePK(pk); organismExternalResource.setResourceIdentifier(identifierField.getWebValue()); - SessionControllerGetter.getOrganismBean().storeOrganismExternalResource(organismExternalResource); + organismBean.storeOrganismExternalResource(organismExternalResource); } } // Need to refresh organism after storing the external resources @@ -276,13 +279,13 @@ public class OrganismController extends HttpServlet { request.setAttribute("organism", refreshedOrganism); if(refreshedOrganism.getIsCrop()) { - request.setAttribute("cropCategories", SessionControllerGetter.getOrganismBean().getCropCategories(user.getOrganizationId().getOrganizationId())); + request.setAttribute("cropCategories", organismBean.getCropCategories(user.getOrganizationId().getOrganizationId())); } request.setAttribute("allOrganisms", em.createNamedQuery("Organism.findAll").getResultList()); // Hierarchy categories - request.setAttribute("hierarchyCategories", SessionControllerGetter.getOrganismBean().getHierarchyCategoryNames(SessionLocaleUtil.getCurrentLocale(request))); + request.setAttribute("hierarchyCategories", organismBean.getHierarchyCategoryNames(SessionLocaleUtil.getCurrentLocale(request))); // Finding all external resources where entry is missing - request.setAttribute("unreferencedExternalResources", SessionControllerGetter.getOrganismBean().getUnusedExternalResourcesForOrganism(refreshedOrganism)); + request.setAttribute("unreferencedExternalResources", organismBean.getUnusedExternalResourcesForOrganism(refreshedOrganism)); request.setAttribute("messageKey", organismId > 0 ? "organismUpdated" : "organismRegistered"); request.getRequestDispatcher("/organismForm.ftl").forward(request, response); } @@ -291,7 +294,7 @@ public class OrganismController extends HttpServlet { request.setAttribute("formValidation", formValidation); request.setAttribute("organism", organism); // Finding all external resources where entry is missing - request.setAttribute("unreferencedExternalResources", SessionControllerGetter.getOrganismBean().getUnusedExternalResourcesForOrganism(organism)); + request.setAttribute("unreferencedExternalResources", organismBean.getUnusedExternalResourcesForOrganism(organism)); request.getRequestDispatcher("/organismForm.ftl").forward(request, response); } } @@ -319,7 +322,7 @@ public class OrganismController extends HttpServlet { Integer organismId = Integer.valueOf(request.getParameter("organismId")); Organism organism = em.find(Organism.class, organismId); String parentOrganismId = organism.getParentOrganismId() != null ? String.valueOf(organism.getParentOrganismId()) : "null"; - if(SessionControllerGetter.getOrganismBean().deleteOrganism(organismId)) + if(organismBean.deleteOrganism(organismId)) { // Route back to where we were with confirmation message response.sendRedirect(new StringBuilder(Globals.PROTOCOL + "://").append(ServletUtil.getServerName(request)).append("/organism?action=listChildOrganisms&organismId=").append(parentOrganismId).append("&messageKey=organismDeleted").toString()); @@ -358,10 +361,10 @@ public class OrganismController extends HttpServlet { if(cropOrganismId != null && cropOrganismId > 0) { request.setAttribute("cropOrganismId", cropOrganismId); - CropPest cropPest = SessionControllerGetter.getOrganismBean().getCropPest(cropOrganismId); + CropPest cropPest = organismBean.getCropPest(cropOrganismId); request.setAttribute("cropPest", cropPest); } - request.setAttribute("hierarchyCategories", SessionControllerGetter.getOrganismBean().getHierarchyCategoryNames(SessionLocaleUtil.getCurrentLocale(request))); + request.setAttribute("hierarchyCategories", organismBean.getHierarchyCategoryNames(SessionLocaleUtil.getCurrentLocale(request))); request.setAttribute("messageKey", request.getParameter("messageKey")); request.getRequestDispatcher("/cropPestForm.ftl").forward(request, response); } @@ -387,7 +390,7 @@ public class OrganismController extends HttpServlet { cropPest.setIncludeAllChildCrops(includeAllChildCrops); cropPest.setPestOrganismIds(pestOrganismIds); - SessionControllerGetter.getOrganismBean().storeCropPest(cropPest); + organismBean.storeCropPest(cropPest); response.sendRedirect(new StringBuilder(Globals.PROTOCOL + "://").append(ServletUtil.getServerName(request)).append("/organism?action=editCropPest&cropOrganismId=").append(cropOrganismId).append("&messageKey=cropPestUpdated").toString()); } diff --git a/src/main/java/no/nibio/vips/logic/controller/servlet/OrganizationController.java b/src/main/java/no/nibio/vips/logic/controller/servlet/OrganizationController.java index 68f30fcbefa199f806de82884ecc2dadf561afaa..d139855447a5e7fb2de7c8d0105ae684ca0d28be 100644 --- a/src/main/java/no/nibio/vips/logic/controller/servlet/OrganizationController.java +++ b/src/main/java/no/nibio/vips/logic/controller/servlet/OrganizationController.java @@ -23,26 +23,30 @@ import java.io.IOException; import java.util.Collections; import java.util.List; import java.util.TimeZone; +import javax.ejb.EJB; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import no.nibio.vips.gis.GISUtil; import no.nibio.vips.gis.LonLatStringFormatException; +import no.nibio.vips.logic.controller.session.UserBean; import no.nibio.vips.logic.entity.Organization; import no.nibio.vips.logic.entity.VipsLogicUser; import no.nibio.vips.logic.util.Globals; -import no.nibio.vips.logic.util.SessionControllerGetter; import no.nibio.vips.util.ServletUtil; import no.nibio.web.forms.FormValidation; import no.nibio.web.forms.FormValidationException; import no.nibio.web.forms.FormValidator; /** - * @copyright 2019 <a href="http://www.bioforsk.no/">Bioforsk</a> - * @author Tor-Einar Skog <tor-einar.skog@bioforsk.no> + * @copyright 2019-2022 <a href="http://www.nibio.no/">NIBIO</a> + * @author Tor-Einar Skog <tor-einar.skog@nibio.no> */ public class OrganizationController extends HttpServlet { + + @EJB + UserBean userBean; /** * Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods. @@ -66,7 +70,7 @@ public class OrganizationController extends HttpServlet { // the user is a member if(action == null && user.isSuperUser()) { - List<Organization> organizations = SessionControllerGetter.getUserBean().getTopLevelOrganizations(); + List<Organization> organizations = userBean.getTopLevelOrganizations(); request.setAttribute("organizations", organizations); request.getRequestDispatcher("/organizationList.ftl").forward(request, response); } @@ -76,8 +80,8 @@ public class OrganizationController extends HttpServlet { List<VipsLogicUser> organizationUsers; try { - organization = SessionControllerGetter.getUserBean().getOrganization(Integer.valueOf(request.getParameter("organizationId"))); - organizationUsers = SessionControllerGetter.getUserBean().getUsersByOrganization(organization.getOrganizationId()); + organization = userBean.getOrganization(Integer.valueOf(request.getParameter("organizationId"))); + organizationUsers = userBean.getUsersByOrganization(organization.getOrganizationId()); Collections.sort(organizationUsers); } catch(NumberFormatException ex) @@ -95,7 +99,7 @@ public class OrganizationController extends HttpServlet { request.setAttribute("messageKey", request.getParameter("messageKey") != null ? request.getParameter("messageKey") : null); request.setAttribute("organizationUsers", organizationUsers); - request.setAttribute("countries", SessionControllerGetter.getUserBean().getCountries()); + request.setAttribute("countries", userBean.getCountries()); request.setAttribute("timeZones", TimeZone.getAvailableIDs()); request.setAttribute("organization", organization); request.getRequestDispatcher("/organizationForm.ftl").forward(request, response); @@ -106,7 +110,7 @@ public class OrganizationController extends HttpServlet { { Integer organizationId = Integer.valueOf(request.getParameter("organizationId")); Organization organization = organizationId > 0 ? - SessionControllerGetter.getUserBean().getOrganization(organizationId) + userBean.getOrganization(organizationId) : new Organization(); FormValidation formValidation = FormValidator.validateForm("organizationForm", request, getServletContext()); @@ -116,13 +120,13 @@ public class OrganizationController extends HttpServlet { organization.setAddress1(formValidation.getFormField("address1").getWebValue()); organization.setAddress2(formValidation.getFormField("address2").getWebValue()); organization.setPostalCode(formValidation.getFormField("postalCode").getWebValue()); - organization.setCountryCode(SessionControllerGetter.getUserBean().getCountry(formValidation.getFormField("countryCode").getWebValue())); + organization.setCountryCode(userBean.getCountry(formValidation.getFormField("countryCode").getWebValue())); organization.setCity(formValidation.getFormField("city").getWebValue()); organization.setDefaultLocale(formValidation.getFormField("defaultLocale").getWebValue()); organization.setDefaultTimeZone(formValidation.getFormField("defaultTimeZone").getWebValue()); organization.setVipswebUrl(formValidation.getFormField("vipswebUrl").getWebValue()); Integer archiveUserId = formValidation.getFormField("archiveUserId").getValueAsInteger(); - organization.setArchiveUser(archiveUserId > 0 ? SessionControllerGetter.getUserBean().getVipsLogicUser(archiveUserId) : null); + organization.setArchiveUser(archiveUserId > 0 ? userBean.getVipsLogicUser(archiveUserId) : null); organization.setDefaultVipsCoreUserId( formValidation.getFormField("defaultVipsCoreUserId").isEmpty() ? null @@ -139,7 +143,7 @@ public class OrganizationController extends HttpServlet { : new GISUtil().getJtsPointFromString(formValidation.getFormField("defaultMapCenter").getWebValue()) ); - organization = SessionControllerGetter.getUserBean().storeOrganization(organization); + organization = userBean.storeOrganization(organization); response.sendRedirect( Globals.PROTOCOL + "://" + ServletUtil.getServerName(request) diff --git a/src/main/java/no/nibio/vips/logic/controller/servlet/OrganizationGroupController.java b/src/main/java/no/nibio/vips/logic/controller/servlet/OrganizationGroupController.java index 3609acda8d9b3cb691e099adbfbb99668f9af1f4..cbca3e4299f56ef1b857f36f2ec646a952744919 100755 --- a/src/main/java/no/nibio/vips/logic/controller/servlet/OrganizationGroupController.java +++ b/src/main/java/no/nibio/vips/logic/controller/servlet/OrganizationGroupController.java @@ -20,26 +20,31 @@ package no.nibio.vips.logic.controller.servlet; import java.io.IOException; import java.util.List; +import javax.ejb.EJB; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import no.nibio.vips.logic.controller.session.UserBean; import no.nibio.vips.logic.entity.Organization; import no.nibio.vips.logic.entity.OrganizationGroup; import no.nibio.vips.logic.entity.VipsLogicUser; import no.nibio.vips.logic.util.Globals; -import no.nibio.vips.logic.util.SessionControllerGetter; import no.nibio.vips.util.ServletUtil; import no.nibio.web.forms.FormValidation; import no.nibio.web.forms.FormValidationException; import no.nibio.web.forms.FormValidator; /** - * - * @author treinar + * @copyright 2022 <a href="http://www.nibio.no/">NIBIO</a> + * @author Tor-Einar Skog <tor-einar.skog@nibio.no> */ public class OrganizationGroupController extends HttpServlet { + + @EJB + UserBean userBean; + /** * Processes requests for both HTTP <code>GET</code> and <code>POST</code> * methods. @@ -64,13 +69,13 @@ public class OrganizationGroupController extends HttpServlet { Organization organization = user.getOrganizationId(); if(user.isSuperUser() && request.getParameter("organizationId") != null) { - organization = SessionControllerGetter.getUserBean().getOrganization(Integer.valueOf(request.getParameter("organizationId"))); + organization = userBean.getOrganization(Integer.valueOf(request.getParameter("organizationId"))); } - groups = SessionControllerGetter.getUserBean().getOrganizationGroups(organization); + groups = userBean.getOrganizationGroups(organization); } else { - groups = SessionControllerGetter.getUserBean().getOrganizationGroups(user); + groups = userBean.getOrganizationGroups(user); } request.setAttribute("organizationGroups", groups); request.setAttribute("messageKey",request.getParameter("messageKey")); @@ -82,13 +87,13 @@ public class OrganizationGroupController extends HttpServlet { { // TODO: Restrict group access based on user privileges Integer organizationGroupId = Integer.valueOf(request.getParameter("organizationGroupId")); - OrganizationGroup oGroup = organizationGroupId > 0 ? SessionControllerGetter.getUserBean().getOrganizationGroup(organizationGroupId) + OrganizationGroup oGroup = organizationGroupId > 0 ? userBean.getOrganizationGroup(organizationGroupId) : new OrganizationGroup(); request.setAttribute("messageKey",request.getParameter("messageKey")); request.setAttribute("organizationGroup", oGroup); - request.setAttribute("users", SessionControllerGetter.getUserBean().getUsers(user.getOrganizationId())); - request.setAttribute("memberIds", SessionControllerGetter.getUserBean().getOrganizationGroupMemberIds(oGroup)); + request.setAttribute("users", userBean.getUsers(user.getOrganizationId())); + request.setAttribute("memberIds", userBean.getOrganizationGroupMemberIds(oGroup)); request.getRequestDispatcher("organizationGroupForm.ftl").forward(request, response); } catch(NullPointerException | NumberFormatException ex) @@ -102,7 +107,7 @@ public class OrganizationGroupController extends HttpServlet { { Integer organizationGroupId = Integer.valueOf(request.getParameter("organizationGroupId")); OrganizationGroup oGroup = organizationGroupId > 0 ? - SessionControllerGetter.getUserBean().getOrganizationGroup(organizationGroupId) + userBean.getOrganizationGroup(organizationGroupId) :new OrganizationGroup(); // Validate form fields (except uploaded file) @@ -121,7 +126,7 @@ public class OrganizationGroupController extends HttpServlet { } // Store the organizationGroup - oGroup = SessionControllerGetter.getUserBean().storeOrganizationGroup(oGroup, formValidation.getFormField("organizationGroupUserIds").getWebValues()); + oGroup = userBean.storeOrganizationGroup(oGroup, formValidation.getFormField("organizationGroupUserIds").getWebValues()); response.sendRedirect( Globals.PROTOCOL + "://" + ServletUtil.getServerName(request) @@ -141,11 +146,11 @@ public class OrganizationGroupController extends HttpServlet { if(user.isOrganizationAdmin() || user.isSuperUser()) { Integer organizationGroupId = Integer.valueOf(request.getParameter("organizationGroupId")); - OrganizationGroup oGroup = SessionControllerGetter.getUserBean().getOrganizationGroup(organizationGroupId); + OrganizationGroup oGroup = userBean.getOrganizationGroup(organizationGroupId); String messageKey = ""; if(oGroup != null) { - SessionControllerGetter.getUserBean().deleteOrganizationGroup(oGroup); + userBean.deleteOrganizationGroup(oGroup); messageKey = "organizationGroupDeleted"; } @@ -168,13 +173,13 @@ public class OrganizationGroupController extends HttpServlet { if(user.isSuperUser() || user.isOrganizationAdmin()) { Integer userId = Integer.valueOf(request.getParameter("userId")); - viewUser = SessionControllerGetter.getUserBean().getVipsLogicUser(userId); + viewUser = userBean.getVipsLogicUser(userId); } else { viewUser = user; } - List<OrganizationGroup> userGroups = SessionControllerGetter.getUserBean().getOrganizationGroups(viewUser); + List<OrganizationGroup> userGroups = userBean.getOrganizationGroups(viewUser); request.setAttribute("viewUser", user); request.setAttribute("userGroups", userGroups); request.getRequestDispatcher("userOrganizationGroupsList.ftl").forward(request, response); 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 f829adbef049020735e1c595390dd289eab2d645..97ce9d8d1830d1755b1a2a53491ac2df9599b6dd 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 @@ -28,6 +28,7 @@ import java.util.Collections; import java.util.List; import java.util.Map; import java.util.Objects; +import javax.ejb.EJB; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import javax.servlet.ServletException; @@ -45,16 +46,16 @@ import no.nibio.vips.logic.entity.PointOfInterestWeatherStation; import no.nibio.vips.logic.entity.VipsLogicRole; import no.nibio.vips.logic.entity.VipsLogicUser; import no.nibio.vips.logic.entity.WeatherStationDataSource; -import no.nibio.vips.logic.util.SessionControllerGetter; import no.nibio.vips.util.ExceptionUtil; import no.nibio.vips.util.ServletUtil; 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.controller.session.ForecastBean; +import no.nibio.vips.logic.controller.session.ObservationBean; +import no.nibio.vips.logic.controller.session.PointOfInterestBean; +import no.nibio.vips.logic.controller.session.UserBean; import no.nibio.vips.logic.entity.Observation; -import no.nibio.vips.logic.entity.PointOfInterestType; -import no.nibio.vips.logic.entity.PointOfInterestTypeFarm; -import no.nibio.vips.logic.entity.PointOfInterestTypeField; import no.nibio.vips.logic.entity.helpers.PointOfInterestFactory; import no.nibio.vips.logic.util.Globals; import no.nibio.vips.logic.util.SystemTime; @@ -66,12 +67,23 @@ import org.apache.http.client.utils.URIBuilder; /** * Handles transactions for POIs - * @copyright 2013-2019 <a href="http://www.nibio.no/">NIBIO</a> + * @copyright 2013-2022 <a href="http://www.nibio.no/">NIBIO</a> * @author Tor-Einar Skog <tor-einar.skog@nibio.no> */ public class PointOfInterestController extends HttpServlet { @PersistenceContext(unitName="VIPSLogic-PU") EntityManager em; + + @EJB + PointOfInterestBean pointOfInterestBean; + @EJB + UserBean userBean; + @EJB + ForecastBean forecastBean; + @EJB + ObservationBean observationBean; + + /** * Processes requests for both HTTP * <code>GET</code> and @@ -116,24 +128,24 @@ public class PointOfInterestController extends HttpServlet { :user.getOrganizationId().getOrganizationId(); if(organizationId.equals(-1)) { - activeWeatherStations = SessionControllerGetter.getPointOfInterestBean().getAllWeatherStations(true); - inactiveWeatherStations = SessionControllerGetter.getPointOfInterestBean().getAllWeatherStations(false); + activeWeatherStations = pointOfInterestBean.getAllWeatherStations(true); + inactiveWeatherStations = pointOfInterestBean.getAllWeatherStations(false); } else { organization = em.find(Organization.class, organizationId); - activeWeatherStations = SessionControllerGetter.getPointOfInterestBean().getWeatherstationsForOrganization(organization, true); - inactiveWeatherStations = SessionControllerGetter.getPointOfInterestBean().getWeatherstationsForOrganization(organization, false); + activeWeatherStations = pointOfInterestBean.getWeatherstationsForOrganization(organization, true); + inactiveWeatherStations = pointOfInterestBean.getWeatherstationsForOrganization(organization, false); } - request.setAttribute("organizations", SessionControllerGetter.getUserBean().getOrganizations()); + request.setAttribute("organizations", userBean.getOrganizations()); request.setAttribute("organizationId", organizationId); } else { organization = user.getOrganizationId(); - activeWeatherStations = SessionControllerGetter.getPointOfInterestBean().getWeatherstationsForOrganization(organization,true); - inactiveWeatherStations = SessionControllerGetter.getPointOfInterestBean().getWeatherstationsForOrganization(organization, false); + activeWeatherStations = pointOfInterestBean.getWeatherstationsForOrganization(organization,true); + inactiveWeatherStations = pointOfInterestBean.getWeatherstationsForOrganization(organization, false); request.setAttribute("organizationId", organization.getOrganizationId()); } @@ -159,7 +171,7 @@ public class PointOfInterestController extends HttpServlet { // Single view else { - PointOfInterest weatherStation = SessionControllerGetter.getPointOfInterestBean().getPointOfInterest(Integer.valueOf(pointOfInterestId)); + PointOfInterest weatherStation = pointOfInterestBean.getPointOfInterest(Integer.valueOf(pointOfInterestId)); if(weatherStation instanceof PointOfInterestWeatherStation) { PointOfInterestWeatherStation stationWithDataSource = (PointOfInterestWeatherStation) weatherStation; @@ -187,7 +199,7 @@ public class PointOfInterestController extends HttpServlet { } else if(action.equals("newWeatherStationForm")) { - if(SessionControllerGetter.getUserBean().authorizeUser(user, VipsLogicRole.ORGANIZATION_ADMINISTRATOR, VipsLogicRole.SUPERUSER)) + if(userBean.authorizeUser(user, VipsLogicRole.ORGANIZATION_ADMINISTRATOR, VipsLogicRole.SUPERUSER)) { try { @@ -195,14 +207,14 @@ public class PointOfInterestController extends HttpServlet { request.getSession().setAttribute("weatherStation", weatherStation); request.setAttribute("defaultMapCenter",user.getOrganizationId().getDefaultMapCenter()); request.setAttribute("defaultMapZoom", user.getOrganizationId().getDefaultMapZoom()); - request.getSession().setAttribute("dataSources", SessionControllerGetter.getPointOfInterestBean().getWeatherStationDataSources()); + request.getSession().setAttribute("dataSources", pointOfInterestBean.getWeatherStationDataSources()); 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()); request.getSession().setAttribute("weatherForecastProviders", em.createNamedQuery("WeatherForecastProvider.findAll").getResultList()); // Finding all external resources where entry is missing - request.setAttribute("unreferencedExternalResources", SessionControllerGetter.getPointOfInterestBean().getUnusedExternalResourcesForPointOfInterest(weatherStation)); + request.setAttribute("unreferencedExternalResources", pointOfInterestBean.getUnusedExternalResourcesForPointOfInterest(weatherStation)); if(user.isSuperUser()) { @@ -227,7 +239,7 @@ public class PointOfInterestController extends HttpServlet { // Authorization: ORGANIZATION ADMIN or SUPERUSER else if(action.equals("editWeatherStationForm")) { - if(SessionControllerGetter.getUserBean().authorizeUser(user, VipsLogicRole.ORGANIZATION_ADMINISTRATOR, VipsLogicRole.SUPERUSER)) + if(userBean.authorizeUser(user, VipsLogicRole.ORGANIZATION_ADMINISTRATOR, VipsLogicRole.SUPERUSER)) { try { @@ -236,14 +248,14 @@ public class PointOfInterestController extends HttpServlet { request.getSession().setAttribute("weatherStation", weatherStation); request.setAttribute("defaultMapCenter",user.getOrganizationId().getDefaultMapCenter()); request.setAttribute("defaultMapZoom", user.getOrganizationId().getDefaultMapZoom()); - request.getSession().setAttribute("dataSources", SessionControllerGetter.getPointOfInterestBean().getWeatherStationDataSources()); + request.getSession().setAttribute("dataSources", pointOfInterestBean.getWeatherStationDataSources()); 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()); request.getSession().setAttribute("weatherForecastProviders", em.createNamedQuery("WeatherForecastProvider.findAll").getResultList()); // Finding all external resources where entry is missing - request.setAttribute("unreferencedExternalResources", SessionControllerGetter.getPointOfInterestBean().getUnusedExternalResourcesForPointOfInterest(weatherStation)); + request.setAttribute("unreferencedExternalResources", pointOfInterestBean.getUnusedExternalResourcesForPointOfInterest(weatherStation)); request.setAttribute("messageKey", request.getParameter("messageKey")); if(user.isSuperUser()) { @@ -267,7 +279,7 @@ public class PointOfInterestController extends HttpServlet { // Authorization: ORGANIZATION ADMIN or SUPERUSER else if(action.equals("weatherStationFormSubmit")) { - if(SessionControllerGetter.getUserBean().authorizeUser(user, VipsLogicRole.ORGANIZATION_ADMINISTRATOR, VipsLogicRole.SUPERUSER)) + if(userBean.authorizeUser(user, VipsLogicRole.ORGANIZATION_ADMINISTRATOR, VipsLogicRole.SUPERUSER)) { try { @@ -327,7 +339,7 @@ public class PointOfInterestController extends HttpServlet { weatherStation.setUserId(user); } // Store - weatherStation = SessionControllerGetter.getPointOfInterestBean().storeWeatherStation(weatherStation); + weatherStation = pointOfInterestBean.storeWeatherStation(weatherStation); Map<String, FormField> externalResourceIdentifiers = formValidation.getMultipleMapFormFields().get("externalResourceIdentifier"); if(externalResourceIdentifiers != null) @@ -339,7 +351,7 @@ public class PointOfInterestController extends HttpServlet { if(identifierField.getWebValue() == null || identifierField.getWebValue().isEmpty()) { // We delete existing if unset - SessionControllerGetter.getPointOfInterestBean().deletePointOfInterestExternalResource(weatherStation.getPointOfInterestId(), externalResourceId); + pointOfInterestBean.deletePointOfInterestExternalResource(weatherStation.getPointOfInterestId(), externalResourceId); } else { @@ -348,7 +360,7 @@ public class PointOfInterestController extends HttpServlet { PointOfInterestExternalResourcePK pk = new PointOfInterestExternalResourcePK(weatherStation.getPointOfInterestId(), externalResourceId); poiExternalResource.setPointOfInterestExternalResourcePK(pk); poiExternalResource.setResourceIdentifier(identifierField.getWebValue()); - SessionControllerGetter.getPointOfInterestBean().storePointOfInterestExternalResource(poiExternalResource); + pointOfInterestBean.storePointOfInterestExternalResource(poiExternalResource); } } } @@ -367,7 +379,7 @@ public class PointOfInterestController extends HttpServlet { request.setAttribute("defaultMapCenter",user.getOrganizationId().getDefaultMapCenter()); request.setAttribute("defaultMapZoom", user.getOrganizationId().getDefaultMapZoom()); request.setAttribute("returnURL","weatherStation?organizationId=" + user.getOrganizationId().getOrganizationId()); - request.getSession().setAttribute("dataSources", SessionControllerGetter.getPointOfInterestBean().getWeatherStationDataSources()); + request.getSession().setAttribute("dataSources", pointOfInterestBean.getWeatherStationDataSources()); request.getSession().setAttribute("availableTimeZones", SystemTime.getAvailableTimeZones()); request.getSession().setAttribute("defaultTimeZoneId", user.getOrganizationId().getDefaultTimeZone()); request.getSession().setAttribute("availableCountries", em.createNamedQuery("Country.findAll").getResultList()); @@ -387,13 +399,13 @@ public class PointOfInterestController extends HttpServlet { } else if(action.equals("deleteWeatherStationPreview")) { - if(SessionControllerGetter.getUserBean().authorizeUser(user, VipsLogicRole.ORGANIZATION_ADMINISTRATOR, VipsLogicRole.SUPERUSER)) + if(userBean.authorizeUser(user, VipsLogicRole.ORGANIZATION_ADMINISTRATOR, VipsLogicRole.SUPERUSER)) { try { Integer pointOfInterestId = Integer.valueOf(request.getParameter("pointOfInterestId")); PointOfInterestWeatherStation weatherStation = em.find(PointOfInterestWeatherStation.class, pointOfInterestId); - List<ForecastConfiguration> forecastConfigurations = SessionControllerGetter.getForecastBean().getForecastConfigurationsByWeatherStation(weatherStation); + List<ForecastConfiguration> forecastConfigurations = forecastBean.getForecastConfigurationsByWeatherStation(weatherStation); // If no strings attached, delete immediately if(forecastConfigurations.isEmpty()) { @@ -405,7 +417,7 @@ public class PointOfInterestController extends HttpServlet { } else { - Map<String, ModelInformation> modelInformationMap = SessionControllerGetter.getForecastBean().getIndexedModelInformation(); + Map<String, ModelInformation> modelInformationMap = forecastBean.getIndexedModelInformation(); request.setAttribute("returnURL","weatherStation?action=editWeatherStationForm&pointOfInterestId=" + pointOfInterestId); request.setAttribute("weatherStation", weatherStation); request.setAttribute("forecastConfigurations", forecastConfigurations); @@ -425,13 +437,13 @@ public class PointOfInterestController extends HttpServlet { } else if(action.equals("deleteWeatherStation")) { - if(SessionControllerGetter.getUserBean().authorizeUser(user, VipsLogicRole.ORGANIZATION_ADMINISTRATOR, VipsLogicRole.SUPERUSER)) + if(userBean.authorizeUser(user, VipsLogicRole.ORGANIZATION_ADMINISTRATOR, VipsLogicRole.SUPERUSER)) { try { Integer pointOfInterestId = Integer.valueOf(request.getParameter("pointOfInterestId")); //PointOfInterestWeatherStation weatherStation = em.find(PointOfInterestWeatherStation.class, pointOfInterestId); - SessionControllerGetter.getPointOfInterestBean().deleteWeatherStation(pointOfInterestId); + pointOfInterestBean.deleteWeatherStation(pointOfInterestId); response.sendRedirect(new StringBuilder(Globals.PROTOCOL + "://") .append(ServletUtil.getServerName(request)) .append("/weatherStation") @@ -467,26 +479,26 @@ public class PointOfInterestController extends HttpServlet { :user.getOrganizationId().getOrganizationId(); if(organizationId.equals(-1)) { - pois = SessionControllerGetter.getPointOfInterestBean().getAllPois(); + pois = pointOfInterestBean.getAllPois(); } else { organization = em.find(Organization.class, organizationId); - pois = SessionControllerGetter.getPointOfInterestBean().getPoisForOrganization(organization); + pois = pointOfInterestBean.getPoisForOrganization(organization); } - request.setAttribute("organizations", SessionControllerGetter.getUserBean().getOrganizations()); + request.setAttribute("organizations", userBean.getOrganizations()); request.setAttribute("organizationId", organizationId); } else if(user.isOrganizationAdmin()) { organization = user.getOrganizationId(); - pois = SessionControllerGetter.getPointOfInterestBean().getPoisForOrganization(organization); + pois = pointOfInterestBean.getPoisForOrganization(organization); request.setAttribute("organizationId", organization.getOrganizationId()); } else { - pois = SessionControllerGetter.getPointOfInterestBean().getRelevantPointOfInterestsForUser(user); + pois = pointOfInterestBean.getRelevantPointOfInterestsForUser(user); request.setAttribute("organizationId", user.getOrganizationId().getOrganizationId()); } @@ -511,7 +523,7 @@ public class PointOfInterestController extends HttpServlet { // Single view else { - PointOfInterest poi = SessionControllerGetter.getPointOfInterestBean().getPointOfInterest(Integer.valueOf(pointOfInterestId)); + PointOfInterest poi = pointOfInterestBean.getPointOfInterest(Integer.valueOf(pointOfInterestId)); request.getSession().setAttribute("poi", poi); request.getSession().setAttribute("availableTimeZones", SystemTime.getAvailableTimeZones()); request.getSession().setAttribute("defaultTimeZoneId", user.getOrganizationId().getDefaultTimeZone()); @@ -537,11 +549,11 @@ public class PointOfInterestController extends HttpServlet { request.getSession().setAttribute("defaultTimeZoneId", user.getOrganizationId().getDefaultTimeZone()); request.getSession().setAttribute("availableCountries", em.createNamedQuery("Country.findAll").getResultList()); request.getSession().setAttribute("defaultCountryCode", user.getOrganizationId().getCountryCode().getCountryCode()); - request.getSession().setAttribute("groups", user.isSuperUser() || user.isOrganizationAdmin() ? SessionControllerGetter.getUserBean().getOrganizationGroups(user.getOrganizationId()) - :SessionControllerGetter.getUserBean().getOrganizationGroups(user)); - request.getSession().setAttribute("poiGroupIds", SessionControllerGetter.getPointOfInterestBean().getPoiGroupIds(poi)); + request.getSession().setAttribute("groups", user.isSuperUser() || user.isOrganizationAdmin() ? userBean.getOrganizationGroups(user.getOrganizationId()) + :userBean.getOrganizationGroups(user)); + request.getSession().setAttribute("poiGroupIds", pointOfInterestBean.getPoiGroupIds(poi)); // Finding all external resources where entry is missing - request.setAttribute("unreferencedExternalResources", SessionControllerGetter.getPointOfInterestBean().getUnusedExternalResourcesForPointOfInterest(poi)); + request.setAttribute("unreferencedExternalResources", pointOfInterestBean.getUnusedExternalResourcesForPointOfInterest(poi)); if(user.isSuperUser()) { @@ -572,7 +584,7 @@ public class PointOfInterestController extends HttpServlet { Integer pointOfInterestId = Integer.valueOf(request.getParameter("pointOfInterestId")); PointOfInterest poi = em.find(PointOfInterest.class, pointOfInterestId); // Does the current user have the rights to edit this poi? - if(SessionControllerGetter.getUserBean().authorizeUser(user, VipsLogicRole.ORGANIZATION_ADMINISTRATOR, VipsLogicRole.SUPERUSER) + if(userBean.authorizeUser(user, VipsLogicRole.ORGANIZATION_ADMINISTRATOR, VipsLogicRole.SUPERUSER) || Objects.equals(user.getUserId(), poi.getUserId().getUserId()) ) { @@ -584,11 +596,11 @@ public class PointOfInterestController extends HttpServlet { request.getSession().setAttribute("weatherForecastProviders", em.createNamedQuery("WeatherForecastProvider.findAll").getResultList()); request.getSession().setAttribute("availableCountries", em.createNamedQuery("Country.findAll").getResultList()); request.getSession().setAttribute("defaultCountryCode", user.getOrganizationId().getCountryCode().getCountryCode()); - request.getSession().setAttribute("groups", user.isSuperUser() || user.isOrganizationAdmin() ? SessionControllerGetter.getUserBean().getOrganizationGroups(user.getOrganizationId()) - :SessionControllerGetter.getUserBean().getOrganizationGroups(user)); - request.getSession().setAttribute("poiGroupIds", SessionControllerGetter.getPointOfInterestBean().getPoiGroupIds(poi)); + request.getSession().setAttribute("groups", user.isSuperUser() || user.isOrganizationAdmin() ? userBean.getOrganizationGroups(user.getOrganizationId()) + :userBean.getOrganizationGroups(user)); + request.getSession().setAttribute("poiGroupIds", pointOfInterestBean.getPoiGroupIds(poi)); // Finding all external resources where entry is missing - request.setAttribute("unreferencedExternalResources", SessionControllerGetter.getPointOfInterestBean().getUnusedExternalResourcesForPointOfInterest(poi)); + request.setAttribute("unreferencedExternalResources", pointOfInterestBean.getUnusedExternalResourcesForPointOfInterest(poi)); request.setAttribute("messageKey", request.getParameter("messageKey")); if(user.isSuperUser()) { @@ -624,12 +636,12 @@ public class PointOfInterestController extends HttpServlet { PointOfInterest poi = pointOfInterestId > 0 ? em.find(PointOfInterest.class, pointOfInterestId) : PointOfInterestFactory.getPointOfInterest(formValidation.getFormField("pointOfInterestTypeId").getValueAsInteger()); - if(SessionControllerGetter.getUserBean().authorizeUser(user, VipsLogicRole.ORGANIZATION_ADMINISTRATOR, VipsLogicRole.SUPERUSER) + if(userBean.authorizeUser(user, VipsLogicRole.ORGANIZATION_ADMINISTRATOR, VipsLogicRole.SUPERUSER) || poi.getPointOfInterestId() == null || Objects.equals(user.getUserId(), poi.getUserId().getUserId()) ) { - Boolean poiNameAlreadyExists = SessionControllerGetter.getPointOfInterestBean().getPointOfInterest(formValidation.getFormField("name").getWebValue()) != null; + Boolean poiNameAlreadyExists = pointOfInterestBean.getPointOfInterest(formValidation.getFormField("name").getWebValue()) != null; // Only store if valid form data and NOT a new poi with an existing poiName if(formValidation.isValid() && !(poi.getPointOfInterestId() == null && poiNameAlreadyExists)) { @@ -637,7 +649,7 @@ public class PointOfInterestController extends HttpServlet { poi.setName(formValidation.getFormField("name").getWebValue()); // A POI is per default not a forecast location. Only superusers and orgadmins // may change the status - if(SessionControllerGetter.getUserBean().authorizeUser(user, VipsLogicRole.ORGANIZATION_ADMINISTRATOR, VipsLogicRole.SUPERUSER)) + if(userBean.authorizeUser(user, VipsLogicRole.ORGANIZATION_ADMINISTRATOR, VipsLogicRole.SUPERUSER)) { poi.setIsForecastLocation(formValidation.getFormField("isForecastLocation").getWebValue() != null); } @@ -683,7 +695,7 @@ public class PointOfInterestController extends HttpServlet { poi.setUserId(user); } // Store - poi = SessionControllerGetter.getPointOfInterestBean().storePoi(poi); + poi = pointOfInterestBean.storePoi(poi); Map<String, FormField> externalResourceIdentifiers = formValidation.getMultipleMapFormFields().get("externalResourceIdentifier"); if(externalResourceIdentifiers != null) @@ -695,7 +707,7 @@ public class PointOfInterestController extends HttpServlet { if(identifierField.getWebValue() == null || identifierField.getWebValue().isEmpty()) { // We delete existing if unset - SessionControllerGetter.getPointOfInterestBean().deletePointOfInterestExternalResource(poi.getPointOfInterestId(), externalResourceId); + pointOfInterestBean.deletePointOfInterestExternalResource(poi.getPointOfInterestId(), externalResourceId); } else { @@ -704,12 +716,12 @@ public class PointOfInterestController extends HttpServlet { PointOfInterestExternalResourcePK pk = new PointOfInterestExternalResourcePK(poi.getPointOfInterestId(), externalResourceId); poiExternalResource.setPointOfInterestExternalResourcePK(pk); poiExternalResource.setResourceIdentifier(identifierField.getWebValue()); - SessionControllerGetter.getPointOfInterestBean().storePointOfInterestExternalResource(poiExternalResource); + pointOfInterestBean.storePointOfInterestExternalResource(poiExternalResource); } } } - SessionControllerGetter.getPointOfInterestBean().storePointOfInterestOrganizationGroupIds(poi,formValidation.getFormField("organizationGroupIds").getWebValues()); + pointOfInterestBean.storePointOfInterestOrganizationGroupIds(poi,formValidation.getFormField("organizationGroupIds").getWebValues()); String returnIdCallback = request.getParameter("returnIdCallback"); @@ -744,7 +756,7 @@ public class PointOfInterestController extends HttpServlet { request.setAttribute("defaultMapZoom", user.getOrganizationId().getDefaultMapZoom()); request.setAttribute("returnURL","poi?organizationId=" + user.getOrganizationId().getOrganizationId()); // Finding all external resources where entry is missing - request.setAttribute("unreferencedExternalResources", SessionControllerGetter.getPointOfInterestBean().getUnusedExternalResourcesForPointOfInterest(poi)); + request.setAttribute("unreferencedExternalResources", pointOfInterestBean.getUnusedExternalResourcesForPointOfInterest(poi)); request.getSession().setAttribute("availableTimeZones", SystemTime.getAvailableTimeZones()); request.getSession().setAttribute("defaultTimeZoneId", user.getOrganizationId().getDefaultTimeZone()); request.getSession().setAttribute("availableCountries", em.createNamedQuery("Country.findAll").getResultList()); @@ -770,7 +782,7 @@ public class PointOfInterestController extends HttpServlet { Integer pointOfInterestId = Integer.valueOf(request.getParameter("pointOfInterestId")); PointOfInterest poi = em.find(PointOfInterest.class, pointOfInterestId); if( - SessionControllerGetter.getUserBean().authorizeUser(user, VipsLogicRole.ORGANIZATION_ADMINISTRATOR, VipsLogicRole.SUPERUSER) + userBean.authorizeUser(user, VipsLogicRole.ORGANIZATION_ADMINISTRATOR, VipsLogicRole.SUPERUSER) || user.getUserId().equals(poi.getUserId().getUserId()) ) { @@ -778,10 +790,10 @@ public class PointOfInterestController extends HttpServlet { { // Are there forecasts attached to this location - List<ForecastConfiguration> forecastConfigurations = SessionControllerGetter.getForecastBean().getForecastConfigurationsByLocation(poi); + List<ForecastConfiguration> forecastConfigurations = forecastBean.getForecastConfigurationsByLocation(poi); // TODO: Are there observations attached to this location? - List<Observation> observations = SessionControllerGetter.getObservationBean().getObservationsByLocation(poi); + List<Observation> observations = observationBean.getObservationsByLocation(poi); // // If no strings attached, delete immediately if(forecastConfigurations.isEmpty() && observations.isEmpty()) @@ -794,7 +806,7 @@ public class PointOfInterestController extends HttpServlet { } else { - Map<String, ModelInformation> modelInformationMap = SessionControllerGetter.getForecastBean().getIndexedModelInformation(); + Map<String, ModelInformation> modelInformationMap = forecastBean.getIndexedModelInformation(); request.setAttribute("returnURL","poi?action=editPoiForm&pointOfInterestId=" + pointOfInterestId); request.setAttribute("poi", poi); request.setAttribute("forecastConfigurations", forecastConfigurations); @@ -819,13 +831,13 @@ public class PointOfInterestController extends HttpServlet { Integer pointOfInterestId = Integer.valueOf(request.getParameter("pointOfInterestId")); PointOfInterest poi = em.find(PointOfInterest.class, pointOfInterestId); if( - SessionControllerGetter.getUserBean().authorizeUser(user, VipsLogicRole.ORGANIZATION_ADMINISTRATOR, VipsLogicRole.SUPERUSER) + userBean.authorizeUser(user, VipsLogicRole.ORGANIZATION_ADMINISTRATOR, VipsLogicRole.SUPERUSER) || user.getUserId().equals(poi.getUserId().getUserId()) ) { try { - SessionControllerGetter.getPointOfInterestBean().deletePoi(pointOfInterestId); + pointOfInterestBean.deletePoi(pointOfInterestId); response.sendRedirect(new StringBuilder(Globals.PROTOCOL + "://") .append(ServletUtil.getServerName(request)) .append("/poi") diff --git a/src/main/java/no/nibio/vips/logic/controller/servlet/SchedulingController.java b/src/main/java/no/nibio/vips/logic/controller/servlet/SchedulingController.java index 28dc396a65a9f5cd8360946fabe16d3496a0e17f..da7e5b8895e9282feae0b07dfe838f49649a5cc3 100755 --- a/src/main/java/no/nibio/vips/logic/controller/servlet/SchedulingController.java +++ b/src/main/java/no/nibio/vips/logic/controller/servlet/SchedulingController.java @@ -28,6 +28,7 @@ import java.text.MessageFormat; import java.util.Date; import java.util.HashMap; import java.util.List; +import javax.ejb.EJB; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import javax.servlet.ServletException; @@ -45,7 +46,6 @@ import no.nibio.vips.logic.scheduling.TerminateSchedulerListener; import no.nibio.vips.logic.scheduling.VipsLogicTask; import no.nibio.vips.logic.scheduling.VipsLogicTaskFactory; import no.nibio.vips.logic.util.Globals; -import no.nibio.vips.logic.util.SessionControllerGetter; import no.nibio.vips.util.ServletUtil; import no.nibio.web.forms.FormValidation; import no.nibio.web.forms.FormValidationException; @@ -62,6 +62,11 @@ public class SchedulingController extends HttpServlet { @PersistenceContext(unitName="VIPSLogic-PU") EntityManager em; + @EJB + UserBean userBean; + @EJB + SchedulingBean schedulingBean; + /** * Processes requests for both HTTP * <code>GET</code> and @@ -77,8 +82,6 @@ public class SchedulingController extends HttpServlet { String action = request.getParameter("action"); VipsLogicUser user = (VipsLogicUser) request.getSession().getAttribute("user"); - UserBean userBean = SessionControllerGetter.getUserBean(); - SchedulingBean schedulingBean = SessionControllerGetter.getSchedulingBean(); // Default: Overview of running tasks // for SUPERUSERS and ORGANIZATION ADMINS diff --git a/src/main/java/no/nibio/vips/logic/controller/servlet/UserController.java b/src/main/java/no/nibio/vips/logic/controller/servlet/UserController.java index 24034d1e7479b47119da499e8e57157c0524628a..5e9d4a3ad79e4e4f7d8b37e63fd8b47aef0e4b10 100755 --- a/src/main/java/no/nibio/vips/logic/controller/servlet/UserController.java +++ b/src/main/java/no/nibio/vips/logic/controller/servlet/UserController.java @@ -32,6 +32,7 @@ import java.util.Map; import java.util.Set; import java.util.regex.Matcher; import java.util.regex.Pattern; +import javax.ejb.EJB; import javax.persistence.EntityManager; import javax.persistence.NoResultException; import javax.persistence.NonUniqueResultException; @@ -52,7 +53,6 @@ import no.nibio.vips.logic.entity.VipsLogicUser; import no.nibio.vips.logic.entity.misc.UserResources; import no.nibio.vips.logic.i18n.SessionLocaleUtil; import no.nibio.vips.logic.util.Globals; -import no.nibio.vips.logic.util.SessionControllerGetter; import no.nibio.vips.util.ServletUtil; import no.nibio.web.forms.FormField; import no.nibio.web.forms.FormUtil; @@ -62,13 +62,17 @@ import no.nibio.web.forms.FormValidator; /** * Handles user actions - * @copyright 2013-2015 <a href="http://www.nibio.no/">NIBIO</a> + * @copyright 2013-2022 <a href="http://www.nibio.no/">NIBIO</a> * @author Tor-Einar Skog <tor-einar.skog@nibio.no> */ public class UserController extends HttpServlet { @PersistenceContext(unitName="VIPSLogic-PU") EntityManager em; + + @EJB + UserBean userBean; + /** * Processes requests for both HTTP <code>GET</code> and <code>POST</code> * methods. @@ -83,7 +87,6 @@ public class UserController extends HttpServlet { String action = request.getParameter("action"); VipsLogicUser user = (VipsLogicUser) request.getSession().getAttribute("user"); - UserBean userBean = SessionControllerGetter.getUserBean(); // Default: View list of users // for SUPERUSERS and ORGANIZATION ADMINS @@ -332,7 +335,7 @@ public class UserController extends HttpServlet { } } userBean.storeUser(viewUser); - SessionControllerGetter.getUserBean().handleUserStatusChange(oldUserStatusId, viewUser, SessionLocaleUtil.getI18nBundle(request), ServletUtil.getServerName(request)); + userBean.handleUserStatusChange(oldUserStatusId, viewUser, SessionLocaleUtil.getI18nBundle(request), ServletUtil.getServerName(request)); // Add confirmation message messageKey = "userUpdated"; } @@ -395,7 +398,7 @@ public class UserController extends HttpServlet { { Integer userId = Integer.valueOf(request.getParameter("userId")); VipsLogicUser viewUser = em.find(VipsLogicUser.class, userId); - UserResources userResources = SessionControllerGetter.getUserBean().getUserResources(viewUser); + UserResources userResources = userBean.getUserResources(viewUser); // If some resources connected, render form, otherwise, route to user delete if(userResources.isEmpty()) @@ -439,7 +442,7 @@ public class UserController extends HttpServlet { VipsLogicUser viewUser = em.find(VipsLogicUser.class, userId); // Are there resources connected to this user? - UserResources userResources = SessionControllerGetter.getUserBean().getUserResources(viewUser); + UserResources userResources = userBean.getUserResources(viewUser); if(! userResources.isEmpty()) { boolean resourcesTransferred = false; @@ -449,7 +452,7 @@ public class UserController extends HttpServlet { VipsLogicUser transferToUser = em.find(VipsLogicUser.class, transferToUserId); if(transferToUser != null) { - SessionControllerGetter.getUserBean().transferUserResources(viewUser,transferToUser); + userBean.transferUserResources(viewUser,transferToUser); resourcesTransferred = true; } } @@ -623,12 +626,12 @@ public class UserController extends HttpServlet { else if(action.equals("confirmEmail")) { String verificationCode = request.getParameter("verificationCode"); - VipsLogicUser confirmUser = SessionControllerGetter.getUserBean().verifyUserEmail(verificationCode); + VipsLogicUser confirmUser = userBean.verifyUserEmail(verificationCode); if(confirmUser != null) { // Success // Send message to organization admin that user has confirmed his/her email - SessionControllerGetter.getUserBean().informAdminOfConfirmedEmail(confirmUser, SessionLocaleUtil.getI18nBundle(request), ServletUtil.getServerName(request)); + userBean.informAdminOfConfirmedEmail(confirmUser, SessionLocaleUtil.getI18nBundle(request), ServletUtil.getServerName(request)); request.setAttribute("messageKey","confirmEmailReceipt"); request.getRequestDispatcher("/login.ftl").forward(request, response); } @@ -655,9 +658,9 @@ public class UserController extends HttpServlet { { Integer oldUserStatusId = userToApprove.getUserStatusId(); userToApprove.setUserStatusId(Globals.USER_STATUS_APPROVED); - SessionControllerGetter.getUserBean().storeUser(userToApprove); + userBean.storeUser(userToApprove); // Handle user status change - SessionControllerGetter.getUserBean().handleUserStatusChange(oldUserStatusId, userToApprove, SessionLocaleUtil.getI18nBundle(request), ServletUtil.getServerName(request)); + userBean.handleUserStatusChange(oldUserStatusId, userToApprove, SessionLocaleUtil.getI18nBundle(request), ServletUtil.getServerName(request)); response.sendRedirect(new StringBuilder(Globals.PROTOCOL + "://").append(ServletUtil.getServerName(request)).append("/user").append("?messageKey=").append("userApproved").toString()); } } @@ -690,7 +693,7 @@ public class UserController extends HttpServlet { creds.put("username", username); creds.put("password", password); - VipsLogicUser searchUser = SessionControllerGetter.getUserBean().authenticateUser(creds); + VipsLogicUser searchUser = userBean.authenticateUser(creds); if(searchUser != null) { @@ -700,7 +703,7 @@ public class UserController extends HttpServlet { userAuth.setUsername((String)request.getSession().getAttribute("openId")); UserAuthenticationPK pk = new UserAuthenticationPK(searchUser.getUserId(), userAuthenticationType.getUserAuthenticationTypeId()); userAuth.setUserAuthenticationPK(pk); - SessionControllerGetter.getUserBean().storeUserAuthentication(userAuth); + userBean.storeUserAuthentication(userAuth); //em.persist(userAuth); request.setAttribute("messageKey", "attachIdToExistingUserReceipt"); request.getRequestDispatcher("/login.ftl").forward(request, response); 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 84f69950769af32a4b74f7ae9fa0f0981f3e8092..57d32334b41cfff34cbe8175e5bd4e3e52a1531d 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 @@ -45,6 +45,7 @@ import java.util.UUID; import java.util.logging.Level; import java.util.logging.Logger; import java.util.stream.Collectors; +import javax.ejb.EJB; import javax.ejb.Stateless; import javax.persistence.EntityManager; import javax.persistence.NoResultException; @@ -84,7 +85,7 @@ import org.apache.commons.lang.StringUtils; import org.jboss.resteasy.client.jaxrs.ResteasyWebTarget; /** - * @copyright 2013-2017 <a href="http://www.nibio.no/">NIBIO</a> + * @copyright 2013-2022 <a href="http://www.nibio.no/">NIBIO</a> * @author Tor-Einar Skog <tor-einar.skog@nibio.no> */ @Stateless @@ -93,6 +94,12 @@ public class ForecastBean { @PersistenceContext(unitName="VIPSLogic-PU") EntityManager em; + @EJB + ForecastBean forecastBean; + + @EJB + UserBean userBean; + /** * Returns all forecast results. * @return @@ -143,7 +150,7 @@ public class ForecastBean { return false; } UUID uUUID = UUID.fromString(userUUID); - VipsLogicUser user = SessionControllerGetter.getUserBean().findVipsLogicUser(uUUID); + VipsLogicUser user = userBean.findVipsLogicUser(uUUID); if(user == null || ! user.getUserId().equals( fc.getVipsLogicUserId().getUserId())) { return false; @@ -674,7 +681,7 @@ public class ForecastBean { List<Result> results = (List<Result>) resp.readEntity(new GenericType<List<Result>>(){}); //System.out.println("ForecastConfigId=" + forecastConfiguration.getForecastConfigurationId() + ", resultsize=" + results.size()); // We delete all former results before we store the new ones - SessionControllerGetter.getForecastBean().storeResults(forecastConfiguration,results); + forecastBean.storeResults(forecastConfiguration,results); } else { 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 8d54d5c6cabe7cdf19862187aceb3ae7411be31e..412b233231aad5639f8f1ec8e438e24d8d8dc6e4 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 @@ -39,6 +39,7 @@ import java.util.Map.Entry; import java.util.ResourceBundle; import java.util.Set; import java.util.stream.Collectors; +import javax.ejb.EJB; import javax.ejb.Stateless; import javax.persistence.EntityManager; import javax.persistence.NoResultException; @@ -58,7 +59,6 @@ import no.nibio.vips.logic.entity.PointOfInterest; import no.nibio.vips.logic.entity.PolygonService; import no.nibio.vips.logic.entity.VipsLogicUser; import no.nibio.vips.logic.i18n.SessionLocaleUtil; -import no.nibio.vips.logic.util.SessionControllerGetter; import no.nibio.vips.logic.util.SystemTime; import no.nibio.vips.observationdata.ObservationDataSchema; import no.nibio.vips.observationdata.ObservationDataSchemaPK; @@ -77,6 +77,11 @@ public class ObservationBean { @PersistenceContext(unitName="VIPSLogic-PU") EntityManager em; + @EJB + PointOfInterestBean pointOfInterestBean; + @EJB + UserBean userBean; + public List<Observation> getObservations(Integer organizationId) { Organization organization = em.find(Organization.class,organizationId); @@ -483,7 +488,7 @@ public class ObservationBean { { return observations; } - List<PointOfInterest> pois = SessionControllerGetter.getPointOfInterestBean().getPois(locationPointOfInterestIds); + List<PointOfInterest> pois = pointOfInterestBean.getPois(locationPointOfInterestIds); Map<Integer, PointOfInterest> mappedPois = new HashMap<>(); pois.stream().forEach((poi) -> { mappedPois.put(poi.getPointOfInterestId(), poi); @@ -504,7 +509,7 @@ public class ObservationBean { { return observations; } - List<VipsLogicUser> users = SessionControllerGetter.getUserBean().getUsers(userIds); + List<VipsLogicUser> users = userBean.getUsers(userIds); Map<Integer, VipsLogicUser> mappedUsers = new HashMap<>(); users.stream().forEach((user) -> { mappedUsers.put(user.getUserId(), user); diff --git a/src/main/java/no/nibio/vips/logic/controller/session/PointOfInterestBean.java b/src/main/java/no/nibio/vips/logic/controller/session/PointOfInterestBean.java index 3d83a3b3161151017d5617305c626be38275e9f6..cc7997f767133461935a74f143769c3391fa298a 100755 --- a/src/main/java/no/nibio/vips/logic/controller/session/PointOfInterestBean.java +++ b/src/main/java/no/nibio/vips/logic/controller/session/PointOfInterestBean.java @@ -34,6 +34,7 @@ import java.util.Objects; import java.util.ResourceBundle; import java.util.Set; import java.util.stream.Collectors; +import javax.ejb.EJB; import javax.ejb.LocalBean; import javax.ejb.Stateless; import javax.persistence.EntityManager; @@ -67,6 +68,11 @@ public class PointOfInterestBean { @PersistenceContext(unitName="VIPSLogic-PU") EntityManager em; + @EJB + ForecastBean forecastBean; + @EJB + ObservationBean observationBean; + public List<PointOfInterest> getWeatherstations(String countryCode) { Query q = em.createNamedQuery("PointOfInterest.findByPointOfInterestTypeAndCountryCode"); @@ -324,7 +330,7 @@ public class PointOfInterestBean { public void deleteWeatherStation(Integer pointOfInterestId) { PointOfInterestWeatherStation weatherStation = em.find(PointOfInterestWeatherStation.class, pointOfInterestId); - SessionControllerGetter.getForecastBean().deleteForecastConfigurationsForWeatherStation(weatherStation); + forecastBean.deleteForecastConfigurationsForWeatherStation(weatherStation); em.remove(weatherStation); } @@ -360,8 +366,8 @@ public class PointOfInterestBean { public void deletePoi(Integer pointOfInterestId) { PointOfInterest poi = em.find(PointOfInterest.class, pointOfInterestId); - SessionControllerGetter.getForecastBean().deleteForecastConfigurationsForLocation(poi); - SessionControllerGetter.getObservationBean().deleteObservationsForLocation(poi); + forecastBean.deleteForecastConfigurationsForLocation(poi); + observationBean.deleteObservationsForLocation(poi); em.remove(poi); } diff --git a/src/main/java/no/nibio/vips/logic/controller/session/SchedulingBean.java b/src/main/java/no/nibio/vips/logic/controller/session/SchedulingBean.java index abbfafa0e1ad5087188c56356089b116a9941e40..a0131b2d665cc0e8f31df57fbe4b6786e9dfaceb 100755 --- a/src/main/java/no/nibio/vips/logic/controller/session/SchedulingBean.java +++ b/src/main/java/no/nibio/vips/logic/controller/session/SchedulingBean.java @@ -38,6 +38,7 @@ import java.util.Set; import java.util.SortedMap; import java.util.TimeZone; import java.util.TreeMap; +import javax.ejb.EJB; import javax.ejb.Stateless; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; @@ -63,7 +64,6 @@ import no.nibio.vips.logic.scheduling.VipsLogicTaskFactory; import no.nibio.vips.logic.scheduling.model.PreprocessorException; import no.nibio.vips.logic.scheduling.model.preprocessor.NaerstadModelPreprocessor; import no.nibio.vips.logic.util.Globals; -import no.nibio.vips.logic.util.SessionControllerGetter; import no.nibio.vips.logic.util.SystemTime; import org.jboss.resteasy.client.jaxrs.ResteasyWebTarget; @@ -77,6 +77,11 @@ public class SchedulingBean { @PersistenceContext(unitName="VIPSLogic-PU") EntityManager em; + @EJB + UserBean userBean; + @EJB + ForecastBean forecastBean; + // There can be only one systemScheduler! private static Scheduler systemScheduler; @@ -175,7 +180,7 @@ public class SchedulingBean { VIPSLogicTaskCollector modelRunCollector = new VIPSLogicTaskCollector(-1); // Separating the forecasts for each organization - List<Organization> organizations = SessionControllerGetter.getUserBean().getOrganizationsWithActiveForecastConfigurations(SystemTime.getSystemTime()); + List<Organization> organizations = userBean.getOrganizationsWithActiveForecastConfigurations(SystemTime.getSystemTime()); if(organizations != null && !organizations.isEmpty()) { for(Organization org:organizations) @@ -257,7 +262,7 @@ public class SchedulingBean { List<Result> results = resp.readEntity(new GenericType<List<Result>>(){}); // We delete all former results before we store the new ones - SessionControllerGetter.getForecastBean().storeResults(c,results); + forecastBean.storeResults(c,results); diff --git a/src/main/java/no/nibio/vips/logic/controller/session/UserBean.java b/src/main/java/no/nibio/vips/logic/controller/session/UserBean.java index 93e95092f25ad123ff5ac355d750bfd411afcf31..cb6f26ede9c7b586b8cb893b269cb7dfc82d60de 100755 --- a/src/main/java/no/nibio/vips/logic/controller/session/UserBean.java +++ b/src/main/java/no/nibio/vips/logic/controller/session/UserBean.java @@ -41,6 +41,7 @@ import java.util.Set; import java.util.UUID; import java.util.logging.Level; import java.util.logging.Logger; +import javax.ejb.EJB; import javax.ejb.LocalBean; import javax.ejb.Stateless; import javax.persistence.EntityManager; @@ -59,7 +60,6 @@ import no.nibio.vips.logic.entity.Observation; import no.nibio.vips.logic.entity.Organization; import no.nibio.vips.logic.entity.OrganizationGroup; import no.nibio.vips.logic.entity.PointOfInterest; -import no.nibio.vips.logic.entity.PointOfInterestWeatherStation; import no.nibio.vips.logic.entity.UserAuthentication; import no.nibio.vips.logic.entity.UserAuthenticationPK; import no.nibio.vips.logic.entity.UserAuthenticationType; @@ -68,8 +68,8 @@ import no.nibio.vips.logic.entity.UserUuidPK; import no.nibio.vips.logic.entity.VipsLogicUser; import no.nibio.vips.logic.entity.misc.UserResources; import no.nibio.vips.logic.i18n.SessionLocaleUtil; +import no.nibio.vips.logic.messaging.MessagingBean; import no.nibio.vips.logic.util.Globals; -import no.nibio.vips.logic.util.SessionControllerGetter; import no.nibio.vips.logic.util.SimpleMailSender; import no.nibio.vips.logic.util.StringUtils; import no.nibio.vips.util.MD5Encrypter; @@ -100,6 +100,19 @@ public class UserBean { @PersistenceContext(unitName="VIPSLogic-PU") EntityManager em; + @EJB + UserBean userBean; + @EJB + ForecastBean forecastBean; + @EJB + MessagingBean messagingBean; + @EJB + PointOfInterestBean pointOfInterestBean; + @EJB + MessageBean messageBean; + @EJB + ObservationBean observationBean; + private Properties serverProperties; private List<Rule> defaultPasswordValidatorRuleList; @@ -216,7 +229,7 @@ public class UserBean { { // Must double check: NO user can be force deleted without first // transferring resources to another user - UserResources userResources = SessionControllerGetter.getUserBean().getUserResources(user); + UserResources userResources = userBean.getUserResources(user); if(! userResources.isEmpty()) { throw new DeleteUserException("User still has resources connected to them."); @@ -228,12 +241,12 @@ public class UserBean { throw new DeleteUserException("User is an archive user for organization " + user.getOrganizationId().getOrganizationName() + ". Can't delete it"); } // Remove all notification subscriptions - SessionControllerGetter.getMessagingBean().deleteAllNotificationSubscriptions(user); + messagingBean.deleteAllNotificationSubscriptions(user); // Remove all User UUIDs this.deleteAllUserUuidsForUser(user); // Delete all of the user's private forecast configurations and results - SessionControllerGetter.getForecastBean().deleteAllPrivateForecastConfigurationsForUser(user); + forecastBean.deleteAllPrivateForecastConfigurationsForUser(user); em.remove(user); } @@ -241,12 +254,12 @@ public class UserBean { public UserResources getUserResources(VipsLogicUser user) { UserResources retVal = new UserResources(); - retVal.setPois(SessionControllerGetter.getPointOfInterestBean().getPoisForUser(user)); - retVal.setMessageLocales(SessionControllerGetter.getMessageBean().getMessageLocaleList(user)); - retVal.setForecastConfigurations(SessionControllerGetter.getForecastBean().getForecastConfigurationsForUser(user.getUserId())); - List<Observation> observations = SessionControllerGetter.getObservationBean().getObservationsForUser(user); - observations.addAll(SessionControllerGetter.getObservationBean().getObservationsLastEditedByUser(user)); - observations.addAll(SessionControllerGetter.getObservationBean().getObservationsStatusChangedByUser(user)); + retVal.setPois(pointOfInterestBean.getPoisForUser(user)); + retVal.setMessageLocales(messageBean.getMessageLocaleList(user)); + retVal.setForecastConfigurations(forecastBean.getForecastConfigurationsForUser(user.getUserId())); + List<Observation> observations = observationBean.getObservationsForUser(user); + observations.addAll(observationBean.getObservationsLastEditedByUser(user)); + observations.addAll(observationBean.getObservationsStatusChangedByUser(user)); retVal.setObservations(observations); return retVal; } diff --git a/src/main/java/no/nibio/vips/logic/messaging/MessagingBean.java b/src/main/java/no/nibio/vips/logic/messaging/MessagingBean.java index 9ae303f9753a1eb1908652298295024cdd9d3ff1..c9d24318aa54e7c02910b6e29abe187d838efc55 100755 --- a/src/main/java/no/nibio/vips/logic/messaging/MessagingBean.java +++ b/src/main/java/no/nibio/vips/logic/messaging/MessagingBean.java @@ -100,7 +100,7 @@ public class MessagingBean { // Store it em.persist(uMessage); - ResteasyClient client = new ResteasyClientBuilder().build(); + ResteasyClient client = (ResteasyClient) ResteasyClientBuilder.newClient();//new ResteasyClientBuilder().build(); //client.register(new RESTAuthenticator("user", "userPass")); client.register(new RESTAuthenticator("VIPSLogic", "plmoknijbuhv000")); //ResteasyWebTarget target = client.target("http://kart13utv.ad.skogoglandskap.no:8080"); diff --git a/src/main/java/no/nibio/vips/logic/messaging/sms/SMSHandlingService.java b/src/main/java/no/nibio/vips/logic/messaging/sms/SMSHandlingService.java index 93d453f00bec03d1526a809218f555f15abaaa39..b85bcdf76c8cd64019a244608f9edbd7d05cb7c9 100755 --- a/src/main/java/no/nibio/vips/logic/messaging/sms/SMSHandlingService.java +++ b/src/main/java/no/nibio/vips/logic/messaging/sms/SMSHandlingService.java @@ -20,10 +20,12 @@ package no.nibio.vips.logic.messaging.sms; import com.webcohesion.enunciate.metadata.Facet; +import javax.ejb.EJB; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.QueryParam; +import no.nibio.vips.logic.controller.session.UserBean; import no.nibio.vips.logic.entity.VipsLogicUser; import no.nibio.vips.logic.util.SessionControllerGetter; @@ -34,6 +36,9 @@ import no.nibio.vips.logic.util.SessionControllerGetter; @Path("rest/sms") @Facet("restricted") public class SMSHandlingService { + + @EJB + UserBean userBean; /** * Sample of incoming request: /rest/sms/vianett/customer_request @@ -64,7 +69,7 @@ public class SMSHandlingService { reply.setErrorcode("0"); if(message !=null && sourceaddr != null && username!=null && username.equals("vianett") && password != null && password.equals("plantevern2016")) { - VipsLogicUser user = SessionControllerGetter.getUserBean().getUserByPhoneNumber(sourceaddr); + VipsLogicUser user = userBean.getUserByPhoneNumber(sourceaddr); if(user != null) { if(message.trim().toUpperCase().equals("STOP")) @@ -77,7 +82,7 @@ public class SMSHandlingService { user.setApprovesSmsBilling(true); reply.setResponse_msg("Confirmation: Sending and billing of SMS messages from VIPS is started."); } - SessionControllerGetter.getUserBean().storeUser(user); + userBean.storeUser(user); reply.setResponse_fromalpha("Vips"); reply.setResponse_pricegroup("0"); } 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 0fa0defcedac622cfd24fbe6f1c3747f26861df0..6a0df4f0e18f9639492996f350f03143ee3cd409 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 @@ -20,7 +20,6 @@ package no.nibio.vips.logic.modules.applefruitmoth; import com.ibm.icu.util.Calendar; import java.io.IOException; -import java.math.BigDecimal; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; @@ -30,10 +29,12 @@ import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; +import javax.ejb.EJB; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import no.nibio.vips.logic.controller.session.UserBean; import no.nibio.vips.logic.entity.VipsLogicRole; import no.nibio.vips.logic.entity.VipsLogicUser; import no.nibio.vips.logic.util.Globals; @@ -51,6 +52,12 @@ import no.nibio.web.forms.FormValidator; */ public class AppleFruitMothController extends HttpServlet { + @EJB + UserBean userBean; + @EJB + AppleFruitMothBean appleFruitMothBean; + + /** * Processes requests for both HTTP <code>GET</code> and <code>POST</code> * methods. @@ -64,13 +71,13 @@ public class AppleFruitMothController extends HttpServlet { throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); VipsLogicUser user = (VipsLogicUser) request.getSession().getAttribute("user"); - if(SessionControllerGetter.getUserBean().authorizeUser(user, VipsLogicRole.APPLE_FRUIT_MOTH_ADMINISTRATOR, VipsLogicRole.APPLE_FRUIT_MOTH_BERRY_CLUSTER_COUNTER, VipsLogicRole.ORGANIZATION_ADMINISTRATOR, VipsLogicRole.SUPERUSER)) + if(userBean.authorizeUser(user, VipsLogicRole.APPLE_FRUIT_MOTH_ADMINISTRATOR, VipsLogicRole.APPLE_FRUIT_MOTH_BERRY_CLUSTER_COUNTER, VipsLogicRole.ORGANIZATION_ADMINISTRATOR, VipsLogicRole.SUPERUSER)) { String action = request.getParameter("action"); if(action == null) { // Show map and list of existing stations - List<ObservationSite> observationSites = SessionControllerGetter.getAppleFruitMothBean().getObservationSitesWithClusterCountLastUpdate(); + List<ObservationSite> observationSites = appleFruitMothBean.getObservationSitesWithClusterCountLastUpdate(); request.setAttribute("observationSites", observationSites); request.getRequestDispatcher("/appleFruitMothStationList.ftl").forward(request, response); } @@ -83,7 +90,7 @@ public class AppleFruitMothController extends HttpServlet { cal.setTime(SystemTime.getSystemTime()); Integer lastSeason = cal.get(Calendar.YEAR); Integer currentSeason = request.getParameter("currentSeason") != null ? Integer.valueOf(request.getParameter("currentSeason")) : lastSeason; - ObservationSite observationSite = SessionControllerGetter.getAppleFruitMothBean().getObservationSite(observationSiteId); + ObservationSite observationSite = appleFruitMothBean.getObservationSite(observationSiteId); request.setAttribute("observationSite", observationSite); if(observationSite != null) { @@ -164,7 +171,7 @@ public class AppleFruitMothController extends HttpServlet { { Integer observationSiteId = Integer.valueOf(request.getParameter("observationSiteId")); - ObservationSite observationSite = SessionControllerGetter.getAppleFruitMothBean().getObservationSite(observationSiteId); + ObservationSite observationSite = appleFruitMothBean.getObservationSite(observationSiteId); if(observationSite != null) { FormValidation formValidation = FormValidator.validateForm("appleFruitMothStationForm", request, getServletContext()); @@ -186,7 +193,7 @@ public class AppleFruitMothController extends HttpServlet { ossc.setThousandBerrySample( !formValidation.getFormField("thousandBerrySample").isEmpty() ? formValidation.getFormField("thousandBerrySample").getValueAsDouble(): null); ossc.setRemarks(formValidation.getFormField("remarks") != null ? formValidation.getFormField("remarks").getWebValue() : ""); observationSite.getObservationSiteSeasonCommonDataSet().add(ossc); - SessionControllerGetter.getAppleFruitMothBean().storeObservationSite(observationSite); + appleFruitMothBean.storeObservationSite(observationSite); // Redirect to form response.sendRedirect(new StringBuilder(Globals.PROTOCOL + "://") @@ -219,7 +226,7 @@ public class AppleFruitMothController extends HttpServlet { cal.setTime(SystemTime.getSystemTime()); Integer lastSeason = cal.get(Calendar.YEAR); Integer currentSeason = request.getParameter("currentSeason") != null ? Integer.valueOf(request.getParameter("currentSeason")) : lastSeason; - ObservationSite observationSite = SessionControllerGetter.getAppleFruitMothBean().getObservationSite(observationSiteId); + ObservationSite observationSite = appleFruitMothBean.getObservationSite(observationSiteId); Map<String, ObservationSitePointSeasonData> treeData = new HashMap<>(); Integer grossClusterAutumnSum = 0; @@ -282,13 +289,13 @@ public class AppleFruitMothController extends HttpServlet { } Integer observationSiteId = Integer.valueOf(request.getParameter("observationSiteId")); - ObservationSite observationSite = SessionControllerGetter.getAppleFruitMothBean().getObservationSite(observationSiteId); + ObservationSite observationSite = appleFruitMothBean.getObservationSite(observationSiteId); ObservationSiteSeasonCommonData seasonCommonData = observationSite.getCommonDataForSeason(currentSeason); if(seasonCommonData != null) { seasonCommonData.setRemarks(request.getParameter("remarks") != null ? request.getParameter("remarks") : ""); - SessionControllerGetter.getAppleFruitMothBean().storeObservationSitePointSeasonCommonData(seasonCommonData); + appleFruitMothBean.storeObservationSitePointSeasonCommonData(seasonCommonData); } //System.out.println("sitePointSetLength=" + observationSite.getObservationSitePointSet().size()); treeNames.stream().forEach(treeName->{ @@ -298,7 +305,7 @@ public class AppleFruitMothController extends HttpServlet { .findFirst() // Need to use orElseGet instead of orElse, otherwise // a new sitePoint will be created each time - .orElseGet(()-> SessionControllerGetter.getAppleFruitMothBean().storeObservationSitePoint(new ObservationSitePoint(observationSite, treeName))); + .orElseGet(()-> appleFruitMothBean.storeObservationSitePoint(new ObservationSitePoint(observationSite, treeName))); // TODO: Fill in the correct values from POST data, then store //Set<ObservationSitePointSeasonData> dataSet = point.getObservationSitePointSeasonDataSet(); @@ -316,10 +323,10 @@ public class AppleFruitMothController extends HttpServlet { newData.setSpringDate(springDate); newData.setLastUpdated(new Date()); - SessionControllerGetter.getAppleFruitMothBean().storeObservationSitePointSeasonData(newData); + appleFruitMothBean.storeObservationSitePointSeasonData(newData); //dataSet.add(newData); //point.setObservationSitePointSeasonDataSet(dataSet); - //SessionControllerGetter.getAppleFruitMothBean().storeObservationSitePoint(point); + //appleFruitMothBean.storeObservationSitePoint(point); } catch (NullPointerException | ParseException ex) { 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 bcc0d958222c07c70ec39899cf5efcdb9506da4d..d133c6548f13e65b93c31c691243a51eb4f5a910 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 @@ -22,6 +22,7 @@ package no.nibio.vips.logic.modules.applefruitmoth; import com.webcohesion.enunciate.metadata.Facet; import de.micromata.opengis.kml.v_2_2_0.Kml; import java.util.Calendar; +import javax.ejb.EJB; import javax.servlet.http.HttpServletRequest; import javax.ws.rs.GET; import javax.ws.rs.Path; @@ -30,18 +31,20 @@ import javax.ws.rs.Produces; import javax.ws.rs.QueryParam; import javax.ws.rs.core.Context; import javax.ws.rs.core.Response; -import no.nibio.vips.logic.util.SessionControllerGetter; import no.nibio.vips.logic.util.SystemTime; import no.nibio.vips.util.ServletUtil; /** - * @copyright 2016 <a href="http://www.nibio.no/">NIBIO</a> + * @copyright 2016-2022 <a href="http://www.nibio.no/">NIBIO</a> * @author Tor-Einar Skog <tor-einar.skog@nibio.no> */ @Path("rest/applefruitmoth") @Facet("restricted") public class AppleFruitMothService { + @EJB + AppleFruitMothBean appleFruitMothBean; + @Context private HttpServletRequest httpServletRequest; @@ -67,7 +70,7 @@ public class AppleFruitMothService { @QueryParam("onlyPubliclyAvailable") Boolean onlyPubliclyAvailable ) { - Kml retVal = SessionControllerGetter.getAppleFruitMothBean().getObservationSitesKml(season, selectedObservationSiteId, ServletUtil.getServerName(httpServletRequest), onlyPubliclyAvailable); + Kml retVal = appleFruitMothBean.getObservationSitesKml(season, selectedObservationSiteId, ServletUtil.getServerName(httpServletRequest), onlyPubliclyAvailable); return Response.ok().entity(retVal).build(); } @@ -76,7 +79,7 @@ public class AppleFruitMothService { @Produces("application/vnd.google-earth.kml+xml;charset=utf-8") public Response getObservationSitePointsKML(@PathParam("observationSiteId") Integer observationSiteId) { - Kml retVal = SessionControllerGetter.getAppleFruitMothBean().getObservationSitePointsKml(observationSiteId, ServletUtil.getServerName(httpServletRequest)); + Kml retVal = appleFruitMothBean.getObservationSitePointsKml(observationSiteId, ServletUtil.getServerName(httpServletRequest)); return Response.ok().entity(retVal).build(); }*/ } diff --git a/src/main/java/no/nibio/vips/logic/modules/barkbeetle/BarkbeetleBean.java b/src/main/java/no/nibio/vips/logic/modules/barkbeetle/BarkbeetleBean.java index 0e6fafc1e9005653ddbd95419960ba146050511c..c2abee5cf7c3abf5da9c614593e2f57ed7ea7952 100644 --- a/src/main/java/no/nibio/vips/logic/modules/barkbeetle/BarkbeetleBean.java +++ b/src/main/java/no/nibio/vips/logic/modules/barkbeetle/BarkbeetleBean.java @@ -30,7 +30,6 @@ import de.micromata.opengis.kml.v_2_2_0.Vec2; import java.util.ArrayList; import java.util.Arrays; -import java.util.Calendar; import java.util.Collection; import java.util.Collections; import java.util.HashMap; @@ -41,8 +40,6 @@ import java.util.stream.Collectors; import javax.ejb.LocalBean; import javax.ejb.Stateless; -import javax.naming.InitialContext; -import javax.naming.NamingException; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; @@ -53,10 +50,8 @@ import org.opengis.referencing.crs.CoordinateReferenceSystem; import org.opengis.referencing.operation.MathTransform; import org.opengis.referencing.operation.TransformException; -import no.nibio.vips.gis.GISUtil; import no.nibio.vips.logic.util.GISEntityUtil; import no.nibio.vips.logic.util.Globals; -import no.nibio.vips.logic.util.SessionControllerGetter; /** * @copyright 2020 <a href="http://www.nibio.no/">NIBIO</a> @@ -67,6 +62,7 @@ import no.nibio.vips.logic.util.SessionControllerGetter; public class BarkbeetleBean { @PersistenceContext(unitName="VIPSLogic-PU") EntityManager em; + /** * Get the list of trapsites for the given season @@ -123,25 +119,7 @@ public class BarkbeetleBean { return em.find(TrapsiteType.class, trapsiteTypeId); } - /** - * Util method for getting this bean through JNDI - * @return - */ - public static BarkbeetleBean getInstance() - { - try - { - InitialContext ic = new InitialContext(); - BarkbeetleBean retVal = (BarkbeetleBean) ic.lookup(SessionControllerGetter.getJndiPath(BarkbeetleBean.class)); - - return retVal; - }catch(NamingException ne) - { - System.out.println("Could not find " + BarkbeetleBean.class.getSimpleName()); - return null; - } - } - + public List<TrapsiteRegistration> getRegistrationsForSite(SeasonTrapsite trapsite) { return em.createNamedQuery("TrapsiteRegistration.findBySeasonTrapsiteId") .setParameter("seasonTrapsiteId", trapsite.getSeasonTrapsiteId()) diff --git a/src/main/java/no/nibio/vips/logic/modules/barkbeetle/BarkbeetleController.java b/src/main/java/no/nibio/vips/logic/modules/barkbeetle/BarkbeetleController.java index c888a0521b8486315043ed137c229eb26c5609e7..a4d78ce6edde36b58eeedce51208d4fded43e36e 100644 --- a/src/main/java/no/nibio/vips/logic/modules/barkbeetle/BarkbeetleController.java +++ b/src/main/java/no/nibio/vips/logic/modules/barkbeetle/BarkbeetleController.java @@ -35,6 +35,7 @@ import java.util.List; import java.util.Locale; import java.util.Set; import java.util.stream.Collectors; +import javax.ejb.EJB; import javax.ejb.EJBException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; @@ -42,6 +43,7 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.ws.rs.core.Response; import no.nibio.vips.gis.GISUtil; +import no.nibio.vips.logic.controller.session.UserBean; import no.nibio.vips.logic.entity.VipsLogicRole; import no.nibio.vips.logic.entity.VipsLogicUser; import no.nibio.vips.logic.gis.CoordinateXYZ; @@ -60,7 +62,13 @@ import org.locationtech.jts.geom.Point; * @author Tor-Einar Skog <tor-einar.skog@bioforsk.no> */ public class BarkbeetleController extends HttpServlet { - + + + @EJB + BarkbeetleBean barkbeetleBean; + @EJB + UserBean userBean; + /** * Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods. * @param request servlet request @@ -72,19 +80,19 @@ public class BarkbeetleController extends HttpServlet { throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); VipsLogicUser user = (VipsLogicUser) request.getSession().getAttribute("user"); - if(SessionControllerGetter.getUserBean().authorizeUser(user, VipsLogicRole.BARKBEETLE_ADMIN, VipsLogicRole.BARKBEETLE_COUNTY_ADMIN, VipsLogicRole.BARKBEETLE_REGISTRATOR, VipsLogicRole.ORGANIZATION_ADMINISTRATOR, VipsLogicRole.SUPERUSER)) + if(userBean.authorizeUser(user, VipsLogicRole.BARKBEETLE_ADMIN, VipsLogicRole.BARKBEETLE_COUNTY_ADMIN, VipsLogicRole.BARKBEETLE_REGISTRATOR, VipsLogicRole.ORGANIZATION_ADMINISTRATOR, VipsLogicRole.SUPERUSER)) { request.setAttribute("user",user); - request.setAttribute("userIsAdmin",SessionControllerGetter.getUserBean().authorizeUser(user, VipsLogicRole.BARKBEETLE_ADMIN, VipsLogicRole.SUPERUSER)); - request.setAttribute("userIsCountyAdmin",SessionControllerGetter.getUserBean().authorizeUser(user, VipsLogicRole.BARKBEETLE_COUNTY_ADMIN)); + request.setAttribute("userIsAdmin",userBean.authorizeUser(user, VipsLogicRole.BARKBEETLE_ADMIN, VipsLogicRole.SUPERUSER)); + request.setAttribute("userIsCountyAdmin",userBean.authorizeUser(user, VipsLogicRole.BARKBEETLE_COUNTY_ADMIN)); Integer season = request.getParameter("season") != null? Integer.valueOf(request.getParameter("season")) : LocalDate.ofInstant(SystemTime.getSystemTime().toInstant(),ZoneId.of("Europe/Oslo")).getYear(); String action = request.getParameter("action"); if(action == null) { - List<SeasonTrapsite> seasonTrapSites = BarkbeetleBean.getInstance().getSeasonTrapsites(season); + List<SeasonTrapsite> seasonTrapSites = barkbeetleBean.getSeasonTrapsites(season); Collections.sort(seasonTrapSites); - Integer firstAvailableSeason = BarkbeetleBean.getInstance().getFirstAvailableSeason(); + Integer firstAvailableSeason = barkbeetleBean.getFirstAvailableSeason(); Integer lastAvailableSeason = Calendar.getInstance().get(Calendar.YEAR) + 1; request.setAttribute("firstAvailableSeason", firstAvailableSeason); request.setAttribute("lastAvailableSeason", lastAvailableSeason); @@ -99,18 +107,18 @@ public class BarkbeetleController extends HttpServlet { else if(action.equals("listSeasonTrapsitesStatus")) { request.setAttribute("season", season); - Integer firstAvailableSeason = BarkbeetleBean.getInstance().getFirstAvailableSeason(); + Integer firstAvailableSeason = barkbeetleBean.getFirstAvailableSeason(); Integer lastAvailableSeason = Calendar.getInstance().get(Calendar.YEAR) + 1; request.setAttribute("firstAvailableSeason", firstAvailableSeason); request.setAttribute("lastAvailableSeason", lastAvailableSeason); - request.setAttribute("seasonTrapsites", BarkbeetleBean.getInstance().getSeasonTrapsites(season)); + request.setAttribute("seasonTrapsites", barkbeetleBean.getSeasonTrapsites(season)); request.getRequestDispatcher("/modules/barkbeetle/barkbeetleSeasonTrapsitesStatus.ftl").forward(request, response); } else if(action.equals("seasonTrapsiteMaintenanceList")) { - List<SeasonTrapsite> seasonTrapSites = BarkbeetleBean.getInstance().getSeasonTrapsites(season); + List<SeasonTrapsite> seasonTrapSites = barkbeetleBean.getSeasonTrapsites(season); Collections.sort(seasonTrapSites); - Integer firstAvailableSeason = BarkbeetleBean.getInstance().getFirstAvailableSeason(); + Integer firstAvailableSeason = barkbeetleBean.getFirstAvailableSeason(); Integer lastAvailableSeason = Calendar.getInstance().get(Calendar.YEAR) + 1; request.setAttribute("firstAvailableSeason", firstAvailableSeason); request.setAttribute("lastAvailableSeason", lastAvailableSeason); @@ -121,18 +129,18 @@ public class BarkbeetleController extends HttpServlet { else if(action.equals("editSeasonTrapsite")) { SeasonTrapsite trapsite = request.getParameter("seasonTrapsiteId") != null ? - BarkbeetleBean.getInstance().getSeasonTrapsite(Integer.valueOf(request.getParameter("seasonTrapsiteId"))) + barkbeetleBean.getSeasonTrapsite(Integer.valueOf(request.getParameter("seasonTrapsiteId"))) : new SeasonTrapsite(); // Only admins and designated registrants can edit the trapsite - if(!SessionControllerGetter.getUserBean().authorizeUser(user, VipsLogicRole.BARKBEETLE_ADMIN, VipsLogicRole.BARKBEETLE_COUNTY_ADMIN, VipsLogicRole.ORGANIZATION_ADMINISTRATOR, VipsLogicRole.SUPERUSER) + if(!userBean.authorizeUser(user, VipsLogicRole.BARKBEETLE_ADMIN, VipsLogicRole.BARKBEETLE_COUNTY_ADMIN, VipsLogicRole.ORGANIZATION_ADMINISTRATOR, VipsLogicRole.SUPERUSER) && (trapsite != null && ! user.getUserId().equals(trapsite.getUserId().getUserId())) ) { response.sendError(403,"Access not authorized"); // HTTP Forbidden } - request.setAttribute("trapsiteRegistrators", SessionControllerGetter.getUserBean().getUsersByVipsLogicRoles(new Integer[]{VipsLogicRole.BARKBEETLE_ADMIN, VipsLogicRole.BARKBEETLE_REGISTRATOR, VipsLogicRole.BARKBEETLE_COUNTY_ADMIN})); + request.setAttribute("trapsiteRegistrators", userBean.getUsersByVipsLogicRoles(new Integer[]{VipsLogicRole.BARKBEETLE_ADMIN, VipsLogicRole.BARKBEETLE_REGISTRATOR, VipsLogicRole.BARKBEETLE_COUNTY_ADMIN})); - List<TrapsiteType> trapsiteTypes = BarkbeetleBean.getInstance().getTrapsiteTypes(); + List<TrapsiteType> trapsiteTypes = barkbeetleBean.getTrapsiteTypes(); request.setAttribute("season", request.getParameter("seasonTrapsiteId") != null ? trapsite.getSeason() : season); request.setAttribute("seasonTrapsite", trapsite); request.setAttribute("seasonTrapsiteTypes", trapsiteTypes); @@ -142,9 +150,9 @@ public class BarkbeetleController extends HttpServlet { else if(action.equals("seasonTrapsiteFormSubmit")) { SeasonTrapsite trapsite = (request.getParameter("seasonTrapsiteId") != null && Integer.valueOf(request.getParameter("seasonTrapsiteId")) > 0) ? - BarkbeetleBean.getInstance().getSeasonTrapsite(Integer.valueOf(request.getParameter("seasonTrapsiteId"))) + barkbeetleBean.getSeasonTrapsite(Integer.valueOf(request.getParameter("seasonTrapsiteId"))) : new SeasonTrapsite(); - if(!SessionControllerGetter.getUserBean().authorizeUser(user, VipsLogicRole.BARKBEETLE_ADMIN, VipsLogicRole.BARKBEETLE_COUNTY_ADMIN, VipsLogicRole.ORGANIZATION_ADMINISTRATOR, VipsLogicRole.SUPERUSER) + if(!userBean.authorizeUser(user, VipsLogicRole.BARKBEETLE_ADMIN, VipsLogicRole.BARKBEETLE_COUNTY_ADMIN, VipsLogicRole.ORGANIZATION_ADMINISTRATOR, VipsLogicRole.SUPERUSER) && (trapsite != null && ! user.getUserId().equals(trapsite.getUserId().getUserId())) ) { @@ -161,7 +169,7 @@ public class BarkbeetleController extends HttpServlet { trapsite.setActivated(true); } trapsite.setSeason(formValidation.getFormField("season").getValueAsInteger()); - trapsite.setTrapsiteType(BarkbeetleBean.getInstance().getTrapsiteType(formValidation.getFormField("trapsiteTypeId").getValueAsInteger())); + trapsite.setTrapsiteType(barkbeetleBean.getTrapsiteType(formValidation.getFormField("trapsiteTypeId").getValueAsInteger())); trapsite.setCountyNo(formValidation.getFormField("countyNo").isEmpty() ? null : formValidation.getFormField("countyNo").getValueAsInteger()); trapsite.setCountyName(formValidation.getFormField("countyName").getWebValue()); @@ -177,7 +185,7 @@ public class BarkbeetleController extends HttpServlet { trapsite.setOwnerPhone(formValidation.getFormField("ownerPhone").getWebValue()); trapsite.setDateInstalled(formValidation.getFormField("dateInstalled").isEmpty() ? null : formValidation.getFormField("dateInstalled").getValueAsDate()); trapsite.setInstallationRemarks(formValidation.getFormField("installationRemarks").getWebValue()); - trapsite.setUserId(SessionControllerGetter.getUserBean().getVipsLogicUser(formValidation.getFormField("userId").getValueAsInteger())); + trapsite.setUserId(userBean.getVipsLogicUser(formValidation.getFormField("userId").getValueAsInteger())); trapsite.setLocationUpdated(formValidation.getFormField("locationUpdated").getWebValue().equals("true")); // Handling the GIS @@ -193,7 +201,7 @@ public class BarkbeetleController extends HttpServlet { Point p3d = gisUtil.createPointWGS84(coordinate); trapsite.setGisGeom(p3d); - trapsite = BarkbeetleBean.getInstance().storeSeasonTrapsite(trapsite); + trapsite = barkbeetleBean.storeSeasonTrapsite(trapsite); // Redirect to form response.sendRedirect(Globals.PROTOCOL + "://" @@ -214,12 +222,12 @@ public class BarkbeetleController extends HttpServlet { else if(action.equals("registerData")) { SeasonTrapsite trapsite = request.getParameter("seasonTrapsiteId") != null ? - BarkbeetleBean.getInstance().getSeasonTrapsite(Integer.valueOf(request.getParameter("seasonTrapsiteId"))) + barkbeetleBean.getSeasonTrapsite(Integer.valueOf(request.getParameter("seasonTrapsiteId"))) : null; if(trapsite != null) { - request.setAttribute("userIsAdmin",SessionControllerGetter.getUserBean().authorizeUser(user, VipsLogicRole.BARKBEETLE_ADMIN, VipsLogicRole.SUPERUSER)); - request.setAttribute("userIsCountyAdmin",SessionControllerGetter.getUserBean().authorizeUser(user, VipsLogicRole.BARKBEETLE_COUNTY_ADMIN)); + request.setAttribute("userIsAdmin",userBean.authorizeUser(user, VipsLogicRole.BARKBEETLE_ADMIN, VipsLogicRole.SUPERUSER)); + request.setAttribute("userIsCountyAdmin",userBean.authorizeUser(user, VipsLogicRole.BARKBEETLE_COUNTY_ADMIN)); request.setAttribute("seasonTrapsite", trapsite); request.setAttribute("isExtended", trapsite.getTrapsiteType().getTrapsiteTypeId().equals(TrapsiteType.TRAPSITE_TYPE_EXTENDED)); Set<Integer> missingWeeks = new HashSet<Integer>(trapsite.getTrapsiteType().getTrapsiteTypeId().equals(TrapsiteType.TRAPSITE_TYPE_STANDARD)? @@ -247,7 +255,7 @@ public class BarkbeetleController extends HttpServlet { WeekFields weekFields = WeekFields.of(norway); request.setAttribute("currentWeek", LocalDate.ofInstant(SystemTime.getSystemTime().toInstant(),ZoneId.of("Europe/Oslo")).get(weekFields.weekOfWeekBasedYear())); //request.setAttribute("currentWeek", 32); // TEST! - request.setAttribute("registrationStatusTypes", BarkbeetleBean.getInstance().getRegistrationStatusTypes()); + request.setAttribute("registrationStatusTypes", barkbeetleBean.getRegistrationStatusTypes()); request.setAttribute("messageKey", request.getParameter("messageKey")); request.getRequestDispatcher("/modules/barkbeetle/barkbeetleTrapsiteRegistrationForm.ftl").forward(request, response); } @@ -259,7 +267,7 @@ public class BarkbeetleController extends HttpServlet { else if(action.equals("trapsiteRegistrationFormSubmit")) { SeasonTrapsite trapsite = request.getParameter("seasonTrapsiteId") != null ? - BarkbeetleBean.getInstance().getSeasonTrapsite(Integer.valueOf(request.getParameter("seasonTrapsiteId"))) + barkbeetleBean.getSeasonTrapsite(Integer.valueOf(request.getParameter("seasonTrapsiteId"))) : null; if(trapsite != null) @@ -307,11 +315,11 @@ public class BarkbeetleController extends HttpServlet { registrations.add(tr); } } - trapsite = BarkbeetleBean.getInstance().storeTrapsiteRegistrations(trapsite.getSeasonTrapsiteId(), registrations); + trapsite = barkbeetleBean.storeTrapsiteRegistrations(trapsite.getSeasonTrapsiteId(), registrations); // Also, store the observedAttacksDescription on the SeasonTrapsite object trapsite.setObservedAttacksDescription(request.getParameter("observedAttacksDescription")); trapsite.setMaintenanceDescription(request.getParameter("maintenanceDescription")); - BarkbeetleBean.getInstance().storeSeasonTrapsite(trapsite); + barkbeetleBean.storeSeasonTrapsite(trapsite); // Redirect to form response.sendRedirect(Globals.PROTOCOL + "://" @@ -333,10 +341,10 @@ public class BarkbeetleController extends HttpServlet { // Only admins can do this else if(action.equals("seasonTrapsiteDeleteForm")) { - if(SessionControllerGetter.getUserBean().authorizeUser(user, VipsLogicRole.BARKBEETLE_ADMIN, VipsLogicRole.SUPERUSER)) + if(userBean.authorizeUser(user, VipsLogicRole.BARKBEETLE_ADMIN, VipsLogicRole.SUPERUSER)) { SeasonTrapsite trapsite = request.getParameter("seasonTrapsiteId") != null ? - BarkbeetleBean.getInstance().getSeasonTrapsite(Integer.valueOf(request.getParameter("seasonTrapsiteId"))) + barkbeetleBean.getSeasonTrapsite(Integer.valueOf(request.getParameter("seasonTrapsiteId"))) : null; if(trapsite != null) @@ -360,16 +368,16 @@ public class BarkbeetleController extends HttpServlet { // Only admins can do this else if(action.equals("seasonTrapsiteDelete")) { - if(SessionControllerGetter.getUserBean().authorizeUser(user, VipsLogicRole.BARKBEETLE_ADMIN, VipsLogicRole.SUPERUSER)) + if(userBean.authorizeUser(user, VipsLogicRole.BARKBEETLE_ADMIN, VipsLogicRole.SUPERUSER)) { try { SeasonTrapsite trapsite = request.getParameter("seasonTrapsiteId") != null ? - BarkbeetleBean.getInstance().getSeasonTrapsite(Integer.valueOf(request.getParameter("seasonTrapsiteId"))) + barkbeetleBean.getSeasonTrapsite(Integer.valueOf(request.getParameter("seasonTrapsiteId"))) : null; - if(trapsite != null && BarkbeetleBean.getInstance().deleteSeasonTrapsite(trapsite.getSeasonTrapsiteId())) + if(trapsite != null && barkbeetleBean.deleteSeasonTrapsite(trapsite.getSeasonTrapsiteId())) { Integer siteSeason = trapsite.getSeason(); String redirectAction = request.getParameter("redirectAction") != null ? "&action=" + request.getParameter("redirectAction") : ""; @@ -397,9 +405,9 @@ public class BarkbeetleController extends HttpServlet { } else if(action.equals("listSeasonTrapsiteCandidates")) { - List<SeasonTrapsite> seasonTrapSiteCandidates = BarkbeetleBean.getInstance().getSeasonTrapsiteCandidates(season); + List<SeasonTrapsite> seasonTrapSiteCandidates = barkbeetleBean.getSeasonTrapsiteCandidates(season); Collections.sort(seasonTrapSiteCandidates); - Integer firstAvailableSeason = BarkbeetleBean.getInstance().getFirstAvailableSeason(); + Integer firstAvailableSeason = barkbeetleBean.getFirstAvailableSeason(); Integer lastAvailableSeason = Calendar.getInstance().get(Calendar.YEAR) + 1; request.setAttribute("firstAvailableSeason", firstAvailableSeason); request.setAttribute("lastAvailableSeason", lastAvailableSeason); @@ -410,19 +418,19 @@ public class BarkbeetleController extends HttpServlet { } else if(action.equals("activateSeasonTrapsite")) { - if(!SessionControllerGetter.getUserBean().authorizeUser(user, VipsLogicRole.BARKBEETLE_ADMIN, VipsLogicRole.BARKBEETLE_COUNTY_ADMIN, VipsLogicRole.ORGANIZATION_ADMINISTRATOR, VipsLogicRole.SUPERUSER)) + if(!userBean.authorizeUser(user, VipsLogicRole.BARKBEETLE_ADMIN, VipsLogicRole.BARKBEETLE_COUNTY_ADMIN, VipsLogicRole.ORGANIZATION_ADMINISTRATOR, VipsLogicRole.SUPERUSER)) { response.sendError(403,"Access not authorized"); // HTTP Forbidden } SeasonTrapsite trapsite = request.getParameter("seasonTrapsiteId") != null ? - BarkbeetleBean.getInstance().getSeasonTrapsite(Integer.valueOf(request.getParameter("seasonTrapsiteId"))) + barkbeetleBean.getSeasonTrapsite(Integer.valueOf(request.getParameter("seasonTrapsiteId"))) : null; if(trapsite != null) { trapsite.setActivated(Boolean.TRUE); - BarkbeetleBean.getInstance().storeSeasonTrapsite(trapsite); + barkbeetleBean.storeSeasonTrapsite(trapsite); response.sendRedirect(Globals.PROTOCOL + "://" + ServletUtil.getServerName(request) + "/barkbeetle?action=listSeasonTrapsiteCandidates&messageKey=activateOK&season=" + trapsite.getSeason() @@ -435,7 +443,7 @@ public class BarkbeetleController extends HttpServlet { } else if(action.equals("copySeasonTrapsites")) { - if(!SessionControllerGetter.getUserBean().authorizeUser(user, VipsLogicRole.BARKBEETLE_ADMIN, VipsLogicRole.ORGANIZATION_ADMINISTRATOR, VipsLogicRole.SUPERUSER)) + if(!userBean.authorizeUser(user, VipsLogicRole.BARKBEETLE_ADMIN, VipsLogicRole.ORGANIZATION_ADMINISTRATOR, VipsLogicRole.SUPERUSER)) { response.sendError(403,"Access not authorized"); // HTTP Forbidden } @@ -443,7 +451,7 @@ public class BarkbeetleController extends HttpServlet { { Integer fromSeason = Integer.valueOf(request.getParameter("fromSeason")); Integer toSeason = Integer.valueOf(request.getParameter("toSeason")); - BarkbeetleBean.getInstance().copySeasonTrapsites(fromSeason, toSeason); + barkbeetleBean.copySeasonTrapsites(fromSeason, toSeason); response.sendRedirect(Globals.PROTOCOL + "://" + ServletUtil.getServerName(request) + "/barkbeetle?action=listSeasonTrapsiteCandidates&season=" + toSeason diff --git a/src/main/java/no/nibio/vips/logic/modules/barkbeetle/BarkbeetleService.java b/src/main/java/no/nibio/vips/logic/modules/barkbeetle/BarkbeetleService.java index 21b7d3d4bf53567143861f69058655fdb41d348e..00c596228688af24ae5c6d35e13cc022ef814cfb 100644 --- a/src/main/java/no/nibio/vips/logic/modules/barkbeetle/BarkbeetleService.java +++ b/src/main/java/no/nibio/vips/logic/modules/barkbeetle/BarkbeetleService.java @@ -32,6 +32,7 @@ import javax.ws.rs.core.Context; import javax.ws.rs.core.Response; import com.webcohesion.enunciate.metadata.Facet; +import javax.ejb.EJB; import no.nibio.vips.util.ServletUtil; @@ -47,6 +48,9 @@ public class BarkbeetleService { @Context private HttpServletRequest httpServletRequest; + @EJB + BarkbeetleBean barkbeetleBean; + @GET @Path("seasontrapsites/{season}/kml") @Produces("application/vnd.google-earth.kml+xml;charset=utf-8") @@ -54,7 +58,7 @@ public class BarkbeetleService { @PathParam("season") Integer season, @QueryParam("excludeSeasonTrapsiteId") Integer excludeSeasonTrapsiteId) { - return Response.ok().entity(BarkbeetleBean.getInstance().getSeasonTrapsitesKml(season, excludeSeasonTrapsiteId, ServletUtil.getServerName(httpServletRequest))).build(); + return Response.ok().entity(barkbeetleBean.getSeasonTrapsitesKml(season, excludeSeasonTrapsiteId, ServletUtil.getServerName(httpServletRequest))).build(); } @GET @@ -64,7 +68,7 @@ public class BarkbeetleService { @PathParam("season") Integer season ) { - return Response.ok().entity(BarkbeetleBean.getInstance().getSeasonTrapsitesStatusKml(season, ServletUtil.getServerName(httpServletRequest))).build(); + return Response.ok().entity(barkbeetleBean.getSeasonTrapsitesStatusKml(season, ServletUtil.getServerName(httpServletRequest))).build(); } @GET @@ -72,7 +76,7 @@ public class BarkbeetleService { @Produces("text/csv") public Response getSeasonTrapsitesReport(@PathParam("season") Integer season) { - String csv = BarkbeetleBean.getInstance().getSeasonTrapsitesReportCsv(season); + String csv = barkbeetleBean.getSeasonTrapsitesReportCsv(season); return Response.ok().entity(csv).build(); } @@ -82,7 +86,7 @@ public class BarkbeetleService { //@Produces("text/plain") public Response getSeasonCountyAverage(@PathParam("season") Integer season) { - String csv = BarkbeetleBean.getInstance().getCountyAverageCsv(season); + String csv = barkbeetleBean.getCountyAverageCsv(season); return Response.ok().entity(csv).build(); } @@ -91,7 +95,7 @@ public class BarkbeetleService { @Produces("text/csv") public Response getLatestBivoltCalculations(@PathParam("season") Integer season) { - String csv = BarkbeetleBean.getInstance().getLatestBivoltCalculations(season); + String csv = barkbeetleBean.getLatestBivoltCalculations(season); return Response.ok().entity(csv).build(); } @@ -108,7 +112,7 @@ public class BarkbeetleService { @PathParam("isMaintenanceCompleted") String isMaintenanceCompleted ) { - BarkbeetleBean.getInstance().setMaintenanceCompleted(seasonTrapsiteId, isMaintenanceCompleted != null && isMaintenanceCompleted.equals("true")); + barkbeetleBean.setMaintenanceCompleted(seasonTrapsiteId, isMaintenanceCompleted != null && isMaintenanceCompleted.equals("true")); return Response.ok().build(); } } diff --git a/src/main/java/no/nibio/vips/logic/modules/barleynetblotch/BarleyNetBlotchModelService.java b/src/main/java/no/nibio/vips/logic/modules/barleynetblotch/BarleyNetBlotchModelService.java index 3092f7625e3dea370f5cd8fbd5d3bd7993902377..5035869e92d710801be72e8e16ba37ca4c6de46b 100755 --- a/src/main/java/no/nibio/vips/logic/modules/barleynetblotch/BarleyNetBlotchModelService.java +++ b/src/main/java/no/nibio/vips/logic/modules/barleynetblotch/BarleyNetBlotchModelService.java @@ -25,6 +25,7 @@ import java.util.Calendar; import java.util.Date; import java.util.List; import java.util.TimeZone; +import javax.ejb.EJB; import javax.persistence.EntityManager; import javax.persistence.NoResultException; import javax.persistence.PersistenceContext; @@ -37,12 +38,12 @@ import javax.ws.rs.core.Response; import no.nibio.vips.entity.ModelConfiguration; import no.nibio.vips.entity.Result; import no.nibio.vips.entity.WeatherObservation; +import no.nibio.vips.logic.controller.session.ForecastBean; import no.nibio.vips.logic.entity.Organism; import no.nibio.vips.logic.entity.Organization; import no.nibio.vips.logic.entity.PointOfInterestWeatherStation; import no.nibio.vips.logic.entity.Preparation; import no.nibio.vips.logic.util.RunModelException; -import no.nibio.vips.logic.util.SessionControllerGetter; import no.nibio.vips.logic.util.SystemTime; import no.nibio.vips.observation.ObservationImpl; import no.nibio.vips.pestmanagement.SprayingImpl; @@ -62,6 +63,9 @@ public class BarleyNetBlotchModelService { @PersistenceContext(unitName="VIPSLogic-PU") EntityManager em; + + @EJB + ForecastBean forecastBean; @GET @Path("barleyvarieties/{organizationId}") @@ -246,7 +250,7 @@ public class BarleyNetBlotchModelService { List<Result> results; try { - results = SessionControllerGetter.getForecastBean().runForecast(config, VIPSCoreUserId); + results = forecastBean.runForecast(config, VIPSCoreUserId); } catch(RunModelException ex) { diff --git a/src/main/java/no/nibio/vips/logic/modules/roughage/RoughageService.java b/src/main/java/no/nibio/vips/logic/modules/roughage/RoughageService.java index cea3b798f584c3b0b6ba60d8f704d607140d6745..14985497b24aa2cee00a56225310f10c58891101 100755 --- a/src/main/java/no/nibio/vips/logic/modules/roughage/RoughageService.java +++ b/src/main/java/no/nibio/vips/logic/modules/roughage/RoughageService.java @@ -31,6 +31,7 @@ import java.util.List; import java.util.Map; import java.util.TimeZone; import java.util.stream.Collectors; +import javax.ejb.EJB; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; @@ -44,6 +45,7 @@ import javax.ws.rs.core.Response; import no.nibio.vips.entity.ModelConfiguration; import no.nibio.vips.entity.Result; import no.nibio.vips.entity.WeatherObservation; +import no.nibio.vips.logic.controller.session.ForecastBean; import no.nibio.vips.logic.entity.Organization; import no.nibio.vips.logic.entity.PointOfInterestWeatherStation; import no.nibio.vips.logic.util.RunModelException; @@ -59,10 +61,9 @@ import no.nibio.vips.util.weather.WeatherDataSourceException; import no.nibio.vips.util.weather.WeatherDataSourceUtil; import no.nibio.vips.util.weather.WeatherForecastProvider; import no.nibio.vips.util.weather.WeatherStationProviderFactory; -import no.nibio.vips.util.weather.YrWeatherForecastProvider; /** - * @copyright 2015 <a href="http://www.nibio.no/">NIBIO</a> + * @copyright 2015-2022 <a href="http://www.nibio.no/">NIBIO</a> * @author Tor-Einar Skog <tor-einar.skog@nibio.no> */ @Path("rest/roughage") @@ -73,6 +74,9 @@ public class RoughageService { @PersistenceContext(unitName="VIPSLogic-PU") EntityManager em; + @EJB + ForecastBean forecastBean; + /** * Temporary hack to get correct normal data weather stations * @return @@ -387,7 +391,7 @@ public class RoughageService { List<Result> results; try { - results = SessionControllerGetter.getForecastBean().runForecast(config, VIPSCoreUserId); + results = forecastBean.runForecast(config, VIPSCoreUserId); } catch(RunModelException ex) { @@ -458,7 +462,7 @@ public class RoughageService { List<Result> normalDataResults; try { - normalDataResults = SessionControllerGetter.getForecastBean().runForecast(config, VIPSCoreUserId); + normalDataResults = forecastBean.runForecast(config, VIPSCoreUserId); } catch(RunModelException ex) { @@ -559,7 +563,7 @@ public class RoughageService { Organization org = em.find(Organization.class, organizationId); Integer VIPSCoreUserId = org.getDefaultVipsCoreUserId(); - results = SessionControllerGetter.getForecastBean().runForecast(modelConfig, VIPSCoreUserId); + results = forecastBean.runForecast(modelConfig, VIPSCoreUserId); } catch (WeatherDataSourceException | RunModelException ex) { return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(ex.getMessage()).build(); diff --git a/src/main/java/no/nibio/vips/logic/modules/wheatleafblotch/WheatLeafBlotchModelService.java b/src/main/java/no/nibio/vips/logic/modules/wheatleafblotch/WheatLeafBlotchModelService.java index 839c93cf0ac2375aeee6e0f779b428e7ae411606..77208990a6b33385ef4bb6cceb5092dc8f0f72cd 100644 --- a/src/main/java/no/nibio/vips/logic/modules/wheatleafblotch/WheatLeafBlotchModelService.java +++ b/src/main/java/no/nibio/vips/logic/modules/wheatleafblotch/WheatLeafBlotchModelService.java @@ -25,6 +25,7 @@ import java.util.Calendar; import java.util.Date; import java.util.List; import java.util.TimeZone; +import javax.ejb.EJB; import javax.persistence.EntityManager; import javax.persistence.NoResultException; import javax.persistence.PersistenceContext; @@ -37,12 +38,12 @@ import javax.ws.rs.core.Response; import no.nibio.vips.entity.ModelConfiguration; import no.nibio.vips.entity.Result; import no.nibio.vips.entity.WeatherObservation; +import no.nibio.vips.logic.controller.session.ForecastBean; import no.nibio.vips.logic.entity.Organism; import no.nibio.vips.logic.entity.Organization; import no.nibio.vips.logic.entity.PointOfInterestWeatherStation; import no.nibio.vips.logic.entity.Preparation; import no.nibio.vips.logic.util.RunModelException; -import no.nibio.vips.logic.util.SessionControllerGetter; import no.nibio.vips.logic.util.SystemTime; import no.nibio.vips.observation.ObservationImpl; import no.nibio.vips.pestmanagement.SprayingImpl; @@ -52,7 +53,7 @@ import no.nibio.vips.util.weather.WeatherDataSourceException; import no.nibio.vips.util.weather.WeatherDataSourceUtil; /** - * @copyright 2018 <a href="http://www.nibio.no/">NIBIO</a> + * @copyright 2018-2022 <a href="http://www.nibio.no/">NIBIO</a> * @author Tor-Einar Skog <tor-einar.skog@nibio.no> */ @Path("rest/wheatleafblotchmodel") @@ -62,6 +63,9 @@ public class WheatLeafBlotchModelService { @PersistenceContext(unitName="VIPSLogic-PU") EntityManager em; + + @EJB + ForecastBean forecastBean; @GET @Path("wheatvarieties/{organizationId}") @@ -351,7 +355,7 @@ public class WheatLeafBlotchModelService { List<Result> results; try { - results = SessionControllerGetter.getForecastBean().runForecast(config, VIPSCoreUserId); + results = forecastBean.runForecast(config, VIPSCoreUserId); } catch(RunModelException ex) { diff --git a/src/main/java/no/nibio/vips/logic/scheduling/TaskLoggerSchedulerListener.java b/src/main/java/no/nibio/vips/logic/scheduling/TaskLoggerSchedulerListener.java index 67c24f22d8a41a0184c3b1b35cc15959c88aa6a7..51c4382d3b237f2f863d9ce2bb34b6af099758f5 100755 --- a/src/main/java/no/nibio/vips/logic/scheduling/TaskLoggerSchedulerListener.java +++ b/src/main/java/no/nibio/vips/logic/scheduling/TaskLoggerSchedulerListener.java @@ -21,30 +21,33 @@ package no.nibio.vips.logic.scheduling; import it.sauronsoftware.cron4j.SchedulerListener; import it.sauronsoftware.cron4j.TaskExecutor; -import no.nibio.vips.logic.util.SessionControllerGetter; +import javax.ejb.EJB; +import no.nibio.vips.logic.controller.session.SchedulingBean; /** * Logs task events to the database - * @copyright 2013 <a href="http://www.nibio.no/">NIBIO</a> + * @copyright 2013-2022 <a href="http://www.nibio.no/">NIBIO</a> * @author Tor-Einar Skog <tor-einar.skog@nibio.no> */ public class TaskLoggerSchedulerListener implements SchedulerListener{ + @EJB + SchedulingBean schedulingBean; @Override public void taskLaunching(TaskExecutor te) { - SessionControllerGetter.getSchedulingBean().logTaskLaunching(te); + schedulingBean.logTaskLaunching(te); } @Override public void taskSucceeded(TaskExecutor te) { - SessionControllerGetter.getSchedulingBean().logTaskSucceeded(te); + schedulingBean.logTaskSucceeded(te); } @Override public void taskFailed(TaskExecutor te, Throwable thrwbl) { - SessionControllerGetter.getSchedulingBean().logTaskFailed(te,thrwbl); + schedulingBean.logTaskFailed(te,thrwbl); } } diff --git a/src/main/java/no/nibio/vips/logic/scheduling/TerminateSchedulerListener.java b/src/main/java/no/nibio/vips/logic/scheduling/TerminateSchedulerListener.java index 273f7e4fa534d18507dedbf39ba99850449cbabb..59add8bae6d933961fe30b15abda8274d6327a75 100755 --- a/src/main/java/no/nibio/vips/logic/scheduling/TerminateSchedulerListener.java +++ b/src/main/java/no/nibio/vips/logic/scheduling/TerminateSchedulerListener.java @@ -22,16 +22,19 @@ package no.nibio.vips.logic.scheduling; import it.sauronsoftware.cron4j.Scheduler; import it.sauronsoftware.cron4j.SchedulerListener; import it.sauronsoftware.cron4j.TaskExecutor; +import javax.ejb.EJB; import no.nibio.vips.logic.controller.session.SchedulingBean; -import no.nibio.vips.logic.util.SessionControllerGetter; /** * Add this listener to a scheduler if you want it the scheduler to terminate * after a task has completed - * @copyright 2013 <a href="http://www.nibio.no/">NIBIO</a> + * @copyright 2013-2022 <a href="http://www.nibio.no/">NIBIO</a> * @author Tor-Einar Skog <tor-einar.skog@nibio.no> */ public class TerminateSchedulerListener implements SchedulerListener{ + + @EJB + SchedulingBean schedulingBean; @Override public void taskLaunching(TaskExecutor te) { @@ -57,7 +60,6 @@ public class TerminateSchedulerListener implements SchedulerListener{ private void terminateScheduler(Scheduler scheduler) { scheduler.stop(); - SchedulingBean schedulingBean = SessionControllerGetter.getSchedulingBean(); schedulingBean.getOneOffSchedulers().remove(scheduler); scheduler = null; } diff --git a/src/main/java/no/nibio/vips/logic/scheduling/model/grid/preprocessor/ZymoseptoriaSimpleRiskGridModelPreprocessor.java b/src/main/java/no/nibio/vips/logic/scheduling/model/grid/preprocessor/ZymoseptoriaSimpleRiskGridModelPreprocessor.java index 56c591f0307468b50ef91b2840ba2de2caf7cd66..6e68fa6b58431719aa9b93b60bef96bd7b775775 100644 --- a/src/main/java/no/nibio/vips/logic/scheduling/model/grid/preprocessor/ZymoseptoriaSimpleRiskGridModelPreprocessor.java +++ b/src/main/java/no/nibio/vips/logic/scheduling/model/grid/preprocessor/ZymoseptoriaSimpleRiskGridModelPreprocessor.java @@ -19,27 +19,26 @@ package no.nibio.vips.logic.scheduling.model.grid.preprocessor; -import org.locationtech.jts.geom.Coordinate; import java.time.ZoneId; import java.time.ZonedDateTime; import java.time.temporal.ChronoUnit; import java.util.ArrayList; import java.util.Arrays; -import java.util.Collections; import java.util.Date; import java.util.HashSet; import java.util.List; import java.util.stream.Collectors; import java.util.stream.Stream; +import javax.ejb.EJB; import no.nibio.vips.entity.ModelConfiguration; import no.nibio.vips.entity.PointWeatherObservationList; import no.nibio.vips.entity.WeatherObservation; import no.nibio.vips.gis.CoordinateProxy; +import no.nibio.vips.logic.controller.session.PointOfInterestBean; import no.nibio.vips.logic.entity.ForecastConfiguration; import no.nibio.vips.logic.entity.PointOfInterestWeatherStation; import no.nibio.vips.logic.scheduling.model.ModelRunPreprocessor; import no.nibio.vips.logic.scheduling.model.PreprocessorException; -import no.nibio.vips.logic.util.SessionControllerGetter; import no.nibio.vips.logic.util.SystemTime; import no.nibio.vips.util.WeatherElements; import no.nibio.vips.util.WeatherObservationListException; @@ -48,10 +47,13 @@ import no.nibio.vips.util.weather.WeatherDataSourceException; import no.nibio.vips.util.weather.WeatherDataSourceUtil; /** - * @copyright 2018 <a href="http://www.nibio.no/">NIBIO</a> + * @copyright 2018-2022 <a href="http://www.nibio.no/">NIBIO</a> * @author Tor-Einar Skog <tor-einar.skog@nibio.no> */ public class ZymoseptoriaSimpleRiskGridModelPreprocessor extends ModelRunPreprocessor{ + + @EJB + PointOfInterestBean pointOfInterestBean; @Override public ModelConfiguration getModelConfiguration(ForecastConfiguration configuration) throws PreprocessorException { @@ -60,7 +62,7 @@ public class ZymoseptoriaSimpleRiskGridModelPreprocessor extends ModelRunPreproc // Which weather stations?? // Ilseng and Apelsvoll to start with ;-) List<PointOfInterestWeatherStation> stations = Stream.of(configuration.getGridWeatherStationPointOfInterestIds()).map( - stationId -> (PointOfInterestWeatherStation) SessionControllerGetter.getPointOfInterestBean().getPointOfInterest(stationId) + stationId -> (PointOfInterestWeatherStation) pointOfInterestBean.getPointOfInterest(stationId) ).collect(Collectors.toList()); List<PointWeatherObservationList> allObs = new ArrayList<>(); diff --git a/src/main/java/no/nibio/vips/logic/scheduling/model/preprocessor/AltenariaModelPreprocessor.java b/src/main/java/no/nibio/vips/logic/scheduling/model/preprocessor/AltenariaModelPreprocessor.java index 3ff54e4be9fd052b98124645378a67d6542ea4d5..af43dc78fbade7a9faa5512708d4d84d7199e19d 100644 --- a/src/main/java/no/nibio/vips/logic/scheduling/model/preprocessor/AltenariaModelPreprocessor.java +++ b/src/main/java/no/nibio/vips/logic/scheduling/model/preprocessor/AltenariaModelPreprocessor.java @@ -32,13 +32,14 @@ import java.util.List; import java.util.TimeZone; import java.util.logging.Level; import java.util.logging.Logger; +import javax.ejb.EJB; import no.nibio.vips.entity.ModelConfiguration; import no.nibio.vips.entity.WeatherObservation; +import no.nibio.vips.logic.controller.session.ForecastBean; import no.nibio.vips.logic.entity.ForecastConfiguration; import no.nibio.vips.logic.entity.PointOfInterestWeatherStation; import no.nibio.vips.logic.scheduling.model.ModelRunPreprocessor; import no.nibio.vips.logic.scheduling.model.PreprocessorException; -import no.nibio.vips.logic.util.SessionControllerGetter; import no.nibio.vips.logic.util.SystemTime; import no.nibio.vips.model.ConfigValidationException; import no.nibio.vips.util.WeatherElements; @@ -49,10 +50,15 @@ import no.nibio.vips.util.weather.WeatherDataSourceUtil; /** * - * @author bhabesh + * @author Bhabesh Mukhopadyay + * @author Tor-Einar Skog <tor-einar.skog@nibio.no> */ -public class AltenariaModelPreprocessor extends ModelRunPreprocessor{ - public final Logger LOGGER = Logger.getLogger(this.getClass().getName()); +public class AltenariaModelPreprocessor extends ModelRunPreprocessor { + + @EJB + ForecastBean forecastBean; + + public final Logger LOGGER = Logger.getLogger(this.getClass().getName()); private final boolean DEBUG = false; /** @@ -62,15 +68,15 @@ public class AltenariaModelPreprocessor extends ModelRunPreprocessor{ * * purpose : * - * date : Expression date is undefined on line 20, column 19 in Templates/Classes/Code/GeneratedMethodBody. Expression time is undefined on line 20, column 27 in Templates/Classes/Code/GeneratedMethodBody. + * date : */ @Override public ModelConfiguration getModelConfiguration(ForecastConfiguration configuration) throws PreprocessorException { - String ALTERNARIA_SPRAYING_DATES_01 = SessionControllerGetter.getForecastBean().getDeCamelizedFieldName("ALTERNARIA", "sprayingDate01"); - String ALTERNARIA_SPRAYING_DATES_02 = SessionControllerGetter.getForecastBean().getDeCamelizedFieldName("ALTERNARIA", "sprayingDate02"); - String ALTERNARIA_SPRAYING_DATES_03 = SessionControllerGetter.getForecastBean().getDeCamelizedFieldName("ALTERNARIA", "sprayingDate03"); - String ALTERNARIA_SPRAYING_DATES_04 = SessionControllerGetter.getForecastBean().getDeCamelizedFieldName("ALTERNARIA", "sprayingDate04"); + String ALTERNARIA_SPRAYING_DATES_01 = forecastBean.getDeCamelizedFieldName("ALTERNARIA", "sprayingDate01"); + String ALTERNARIA_SPRAYING_DATES_02 = forecastBean.getDeCamelizedFieldName("ALTERNARIA", "sprayingDate02"); + String ALTERNARIA_SPRAYING_DATES_03 = forecastBean.getDeCamelizedFieldName("ALTERNARIA", "sprayingDate03"); + String ALTERNARIA_SPRAYING_DATES_04 = forecastBean.getDeCamelizedFieldName("ALTERNARIA", "sprayingDate04"); String paramConfigValue = null; List<Date> lstSprayingDates = new ArrayList(){}; diff --git a/src/main/java/no/nibio/vips/logic/scheduling/model/preprocessor/DeliaRadicumFloralisModelPreprocessor.java b/src/main/java/no/nibio/vips/logic/scheduling/model/preprocessor/DeliaRadicumFloralisModelPreprocessor.java index 4874b52ec5d8f7ccf32df84de4562644c2b42a7e..ccada9b3190ad0d67a615eb117466941b335e26b 100755 --- a/src/main/java/no/nibio/vips/logic/scheduling/model/preprocessor/DeliaRadicumFloralisModelPreprocessor.java +++ b/src/main/java/no/nibio/vips/logic/scheduling/model/preprocessor/DeliaRadicumFloralisModelPreprocessor.java @@ -25,7 +25,10 @@ import java.util.Calendar; import java.util.Date; import java.util.List; import java.util.TimeZone; +import javax.ejb.EJB; import no.nibio.vips.entity.ModelConfiguration; +import no.nibio.vips.logic.controller.session.ObservationBean; +import no.nibio.vips.logic.controller.session.OrganismBean; import no.nibio.vips.logic.entity.ForecastConfiguration; import no.nibio.vips.logic.entity.Organism; import no.nibio.vips.logic.entity.PointOfInterest; @@ -42,6 +45,11 @@ import no.nibio.vips.util.WeatherUtil; */ public class DeliaRadicumFloralisModelPreprocessor extends ModelRunPreprocessor{ public final static String START_DATE_GROWTH = "START_DATE_GROWTH"; + + @EJB + OrganismBean organismBean; + @EJB + ObservationBean observationBean; @Override public ModelConfiguration getModelConfiguration(ForecastConfiguration configuration) throws PreprocessorException { @@ -78,8 +86,8 @@ public class DeliaRadicumFloralisModelPreprocessor extends ModelRunPreprocessor{ Date endDateCalculation = wUtil.normalizeToExactDate(SystemTime.getSystemTime(),timeZone); config.setConfigParameter("endDateCalculation", format.format(endDateCalculation)); - Organism organism = SessionControllerGetter.getOrganismBean().getOrganismByLatinName("Delia floralis/radicum"); - List<Observation> pestObservations = SessionControllerGetter.getObservationBean().getObservations(organism.getOrganismId(), location.getPointOfInterestId(),startDateGrowth,SystemTime.getSystemTime()); + Organism organism = organismBean.getOrganismByLatinName("Delia floralis/radicum"); + List<Observation> pestObservations = observationBean.getObservations(organism.getOrganismId(), location.getPointOfInterestId(),startDateGrowth,SystemTime.getSystemTime()); config.setConfigParameter("pestObservations", pestObservations); config.setModelId(this.getModelId()); diff --git a/src/main/java/no/nibio/vips/logic/scheduling/model/preprocessor/PsilaRosaeObservationModelPreprocessor.java b/src/main/java/no/nibio/vips/logic/scheduling/model/preprocessor/PsilaRosaeObservationModelPreprocessor.java index 328a00ad30be089684b9020f61d4c4f9a2e01393..4c9fd377ba7173d932db986306e0a122aea1f160 100755 --- a/src/main/java/no/nibio/vips/logic/scheduling/model/preprocessor/PsilaRosaeObservationModelPreprocessor.java +++ b/src/main/java/no/nibio/vips/logic/scheduling/model/preprocessor/PsilaRosaeObservationModelPreprocessor.java @@ -19,29 +19,34 @@ package no.nibio.vips.logic.scheduling.model.preprocessor; -import java.text.ParseException; import java.text.SimpleDateFormat; -import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.TimeZone; +import javax.ejb.EJB; import no.nibio.vips.entity.ModelConfiguration; +import no.nibio.vips.logic.controller.session.ObservationBean; +import no.nibio.vips.logic.controller.session.OrganismBean; import no.nibio.vips.logic.entity.ForecastConfiguration; import no.nibio.vips.logic.entity.Organism; import no.nibio.vips.logic.entity.PointOfInterest; import no.nibio.vips.logic.scheduling.model.ModelRunPreprocessor; import no.nibio.vips.logic.scheduling.model.PreprocessorException; -import no.nibio.vips.logic.util.SessionControllerGetter; import no.nibio.vips.logic.util.SystemTime; import no.nibio.vips.observation.Observation; import no.nibio.vips.util.WeatherUtil; /** - * @copyright 2016 <a href="http://www.nibio.no/">NIBIO</a> + * @copyright 2016-2022 <a href="http://www.nibio.no/">NIBIO</a> * @author Tor-Einar Skog <tor-einar.skog@nibio.no> */ public class PsilaRosaeObservationModelPreprocessor extends ModelRunPreprocessor{ + @EJB + OrganismBean organismBean; + @EJB + ObservationBean observationBean; + @Override public ModelConfiguration getModelConfiguration(ForecastConfiguration configuration) throws PreprocessorException { ModelConfiguration config = null; @@ -61,8 +66,8 @@ public class PsilaRosaeObservationModelPreprocessor extends ModelRunPreprocessor Date endDateCalculation = wUtil.normalizeToExactDate(SystemTime.getSystemTime(),timeZone); config.setConfigParameter("endDateCalculation", format.format(endDateCalculation)); - Organism organism = SessionControllerGetter.getOrganismBean().getOrganismByLatinName("Psila rosae"); - List<Observation> pestObservations = SessionControllerGetter.getObservationBean().getObservations(organism.getOrganismId(), location.getPointOfInterestId(),configuration.getDateStart(),SystemTime.getSystemTime()); + Organism organism = organismBean.getOrganismByLatinName("Psila rosae"); + List<Observation> pestObservations = observationBean.getObservations(organism.getOrganismId(), location.getPointOfInterestId(),configuration.getDateStart(),SystemTime.getSystemTime()); config.setConfigParameter("pestObservations", pestObservations); config.setModelId(this.getModelId()); diff --git a/src/main/java/no/nibio/vips/logic/scheduling/model/preprocessor/SeptoriaApiicolaModelPreprocessor.java b/src/main/java/no/nibio/vips/logic/scheduling/model/preprocessor/SeptoriaApiicolaModelPreprocessor.java index 1e3e21a59aeb95ae3a7393ad25e347d7c78086c6..a843aa45ef083dfed3a819203b2058ddb3f2734b 100755 --- a/src/main/java/no/nibio/vips/logic/scheduling/model/preprocessor/SeptoriaApiicolaModelPreprocessor.java +++ b/src/main/java/no/nibio/vips/logic/scheduling/model/preprocessor/SeptoriaApiicolaModelPreprocessor.java @@ -26,31 +26,37 @@ import java.util.Date; import java.util.HashSet; import java.util.List; import java.util.stream.Collectors; +import javax.ejb.EJB; import no.nibio.vips.entity.ModelConfiguration; import no.nibio.vips.entity.WeatherObservation; +import no.nibio.vips.logic.controller.session.ObservationBean; +import no.nibio.vips.logic.controller.session.OrganismBean; import no.nibio.vips.logic.entity.ForecastConfiguration; import no.nibio.vips.logic.entity.Organism; import no.nibio.vips.logic.entity.PointOfInterest; import no.nibio.vips.logic.entity.PointOfInterestWeatherStation; import no.nibio.vips.logic.scheduling.model.ModelRunPreprocessor; import no.nibio.vips.logic.scheduling.model.PreprocessorException; -import no.nibio.vips.logic.util.SessionControllerGetter; import no.nibio.vips.logic.util.SystemTime; import no.nibio.vips.model.ConfigValidationException; import no.nibio.vips.observation.Observation; import no.nibio.vips.util.WeatherElements; import no.nibio.vips.util.WeatherObservationListException; import no.nibio.vips.util.WeatherUtil; -import no.nibio.vips.util.XDate; import no.nibio.vips.util.weather.WeatherDataSourceException; import no.nibio.vips.util.weather.WeatherDataSourceUtil; /** - * @copyright 2016 <a href="http://www.nibio.no/">NIBIO</a> + * @copyright 2016-2022 <a href="http://www.nibio.no/">NIBIO</a> * @author Tor-Einar Skog <tor-einar.skog@nibio.no> */ public class SeptoriaApiicolaModelPreprocessor extends ModelRunPreprocessor { + @EJB + OrganismBean organismBean; + @EJB + ObservationBean observationBean; + @Override public ModelConfiguration getModelConfiguration(ForecastConfiguration configuration) throws PreprocessorException { @@ -59,9 +65,9 @@ public class SeptoriaApiicolaModelPreprocessor extends ModelRunPreprocessor { PointOfInterestWeatherStation weatherStation = (PointOfInterestWeatherStation) configuration.getWeatherStationPointOfInterestId(); config = new ModelConfiguration(); - Organism organism = SessionControllerGetter.getOrganismBean().getOrganismByLatinName("Septoria apiicola"); + Organism organism = organismBean.getOrganismByLatinName("Septoria apiicola"); //System.out.println(organism); - List<Observation> pestObservations = SessionControllerGetter.getObservationBean().getObservations(organism.getOrganismId(), location.getPointOfInterestId(),configuration.getDateStart(),SystemTime.getSystemTime()); + List<Observation> pestObservations = observationBean.getObservations(organism.getOrganismId(), location.getPointOfInterestId(),configuration.getDateStart(),SystemTime.getSystemTime()); //System.out.println("Found " + pestObservations + " observations"); WeatherDataSourceUtil wdsUtil = new WeatherDataSourceUtil(); diff --git a/src/main/java/no/nibio/vips/logic/scheduling/model/preprocessor/SeptoriaHumidityModelPreprocessor.java b/src/main/java/no/nibio/vips/logic/scheduling/model/preprocessor/SeptoriaHumidityModelPreprocessor.java index 643fba3ecba5c7964f6f7e1e1cdd0dbe0539c1f3..0cfc5a1382257c08fb70efc4298c9f9f86ba3cf3 100644 --- a/src/main/java/no/nibio/vips/logic/scheduling/model/preprocessor/SeptoriaHumidityModelPreprocessor.java +++ b/src/main/java/no/nibio/vips/logic/scheduling/model/preprocessor/SeptoriaHumidityModelPreprocessor.java @@ -26,6 +26,7 @@ import java.util.Collections; import java.util.Date; import java.util.List; import java.util.TimeZone; +import javax.ejb.EJB; import no.nibio.vips.entity.ModelConfiguration; import no.nibio.vips.entity.WeatherObservation; import no.nibio.vips.logic.controller.session.ForecastBean; @@ -33,21 +34,22 @@ import no.nibio.vips.logic.entity.ForecastConfiguration; import no.nibio.vips.logic.entity.PointOfInterestWeatherStation; import no.nibio.vips.logic.scheduling.model.ModelRunPreprocessor; import no.nibio.vips.logic.scheduling.model.PreprocessorException; -import no.nibio.vips.logic.util.SessionControllerGetter; import no.nibio.vips.util.WeatherElements; import no.nibio.vips.util.weather.WeatherDataSourceException; import no.nibio.vips.util.weather.WeatherDataSourceUtil; /** - * @copyright 2019 <a href="http://www.nibio.no/">NIBIO</a> + * @copyright 2019-2022 <a href="http://www.nibio.no/">NIBIO</a> * @author Tor-Einar Skog <tor-einar.skog@nibio.no> */ public class SeptoriaHumidityModelPreprocessor extends ModelRunPreprocessor{ + @EJB + ForecastBean forecastBean; + @Override public ModelConfiguration getModelConfiguration(ForecastConfiguration configuration) throws PreprocessorException { - ForecastBean forecastBean = SessionControllerGetter.getForecastBean(); ModelConfiguration retVal = new ModelConfiguration(); retVal.setModelId(this.getModelId()); retVal.setConfigParameter("timeZone", configuration.getTimeZone()); diff --git a/src/main/java/no/nibio/vips/logic/scheduling/tasks/DeleteAllExpiredUserUuidsTask.java b/src/main/java/no/nibio/vips/logic/scheduling/tasks/DeleteAllExpiredUserUuidsTask.java index 7d2b3d3325d046d02c3a7cb23b7d08af724436a5..6def8cce1611a40eb25f00640829505e87d8bb0c 100755 --- a/src/main/java/no/nibio/vips/logic/scheduling/tasks/DeleteAllExpiredUserUuidsTask.java +++ b/src/main/java/no/nibio/vips/logic/scheduling/tasks/DeleteAllExpiredUserUuidsTask.java @@ -20,16 +20,18 @@ package no.nibio.vips.logic.scheduling.tasks; import it.sauronsoftware.cron4j.TaskExecutionContext; +import javax.ejb.EJB; +import no.nibio.vips.logic.controller.session.UserBean; import no.nibio.vips.logic.scheduling.VipsLogicTask; -import no.nibio.vips.logic.scheduling.VipsLogicTaskFactory; -import no.nibio.vips.logic.util.SessionControllerGetter; -import no.nibio.web.forms.FormField; /** - * @copyright 2016 <a href="http://www.nibio.no/">NIBIO</a> + * @copyright 2016-2022 <a href="http://www.nibio.no/">NIBIO</a> * @author Tor-Einar Skog <tor-einar.skog@nibio.no> */ public class DeleteAllExpiredUserUuidsTask extends VipsLogicTask{ + + @EJB + UserBean userBean; @Override public String getConfigFormDefinition(String language) { @@ -39,7 +41,7 @@ public class DeleteAllExpiredUserUuidsTask extends VipsLogicTask{ @Override public void execute(TaskExecutionContext tec) throws RuntimeException { tec.setCompleteness(0d); - SessionControllerGetter.getUserBean().deleteAllExpiredUserUuids(); + userBean.deleteAllExpiredUserUuids(); tec.setCompleteness(1d); } diff --git a/src/main/java/no/nibio/vips/logic/scheduling/tasks/RunAllForecastConfigurationsForOrganizationTask.java b/src/main/java/no/nibio/vips/logic/scheduling/tasks/RunAllForecastConfigurationsForOrganizationTask.java index eebc9e72cc8ca03b9f94c2809f7a0e7ff89bcfaa..52592004f66dba866dab5cf086a8aa8eddda27a1 100644 --- a/src/main/java/no/nibio/vips/logic/scheduling/tasks/RunAllForecastConfigurationsForOrganizationTask.java +++ b/src/main/java/no/nibio/vips/logic/scheduling/tasks/RunAllForecastConfigurationsForOrganizationTask.java @@ -23,7 +23,11 @@ import it.sauronsoftware.cron4j.TaskExecutionContext; import java.util.Collections; import java.util.List; import java.util.Map; +import javax.ejb.EJB; import no.nibio.vips.i18n.I18nImpl; +import no.nibio.vips.logic.controller.session.ForecastBean; +import no.nibio.vips.logic.controller.session.PointOfInterestBean; +import no.nibio.vips.logic.controller.session.UserBean; import no.nibio.vips.logic.entity.ForecastConfiguration; import no.nibio.vips.logic.entity.ModelInformation; import no.nibio.vips.logic.entity.PointOfInterest; @@ -31,7 +35,6 @@ import no.nibio.vips.logic.entity.PointOfInterestWeatherStation; import no.nibio.vips.logic.scheduling.SchedulingUtil; import no.nibio.vips.logic.scheduling.model.PreprocessorException; import no.nibio.vips.logic.util.RunModelException; -import no.nibio.vips.logic.util.SessionControllerGetter; import no.nibio.vips.logic.util.SystemTime; import no.nibio.web.forms.FormField; @@ -40,6 +43,14 @@ import no.nibio.web.forms.FormField; * @author Tor-Einar Skog <tor-einar.skog@nibio.no> */ public class RunAllForecastConfigurationsForOrganizationTask extends RunAllForecastConfigurationsTask{ + + @EJB + UserBean userBean; + @EJB + ForecastBean forecastBean; + @EJB + PointOfInterestBean pointOfInterestBean; + private I18nImpl i18n; //private boolean DEBUG=true; @Override @@ -57,9 +68,9 @@ public class RunAllForecastConfigurationsForOrganizationTask extends RunAllForec StringBuilder errorMessage = new StringBuilder(); // Get all organizations, loop, get all current forecasts, loop, run models, store results boolean noForecastConfigurationsFound = true; - Map<String, ModelInformation> modelInformationMap = SessionControllerGetter.getForecastBean().getIndexedBatchableModelInformation(); + Map<String, ModelInformation> modelInformationMap = forecastBean.getIndexedBatchableModelInformation(); - List<ForecastConfiguration> currentForecastConfigurations = SessionControllerGetter.getForecastBean().getForecastConfigurationsValidAtTime(this.getOrganization(), SystemTime.getSystemTime()); + List<ForecastConfiguration> currentForecastConfigurations = forecastBean.getForecastConfigurationsValidAtTime(this.getOrganization(), SystemTime.getSystemTime()); //System.out.println("Current forecasts for " + organization.getOrganizationName() + ":" + currentForecastConfigurations.size()); if(currentForecastConfigurations != null && !currentForecastConfigurations.isEmpty()) { @@ -75,7 +86,7 @@ public class RunAllForecastConfigurationsForOrganizationTask extends RunAllForec try { totalNumberofForecastConfigurations++; - SessionControllerGetter.getForecastBean().runForecast(forecastConfiguration); + forecastBean.runForecast(forecastConfiguration); /* if(DEBUG && totalNumberofForecastConfigurations == 2) { @@ -130,7 +141,7 @@ public class RunAllForecastConfigurationsForOrganizationTask extends RunAllForec .append("\",\"selected\":") .append("false") .append("}\n"); - List<PointOfInterestWeatherStation> stations = SessionControllerGetter.getPointOfInterestBean().getWeatherstationsForOrganization(this.getOrganization(), Boolean.TRUE); + List<PointOfInterestWeatherStation> stations = pointOfInterestBean.getWeatherstationsForOrganization(this.getOrganization(), Boolean.TRUE); Collections.sort(stations); for(PointOfInterest station:stations) { diff --git a/src/main/java/no/nibio/vips/logic/scheduling/tasks/RunAllForecastConfigurationsTask.java b/src/main/java/no/nibio/vips/logic/scheduling/tasks/RunAllForecastConfigurationsTask.java index 1a057da43767ec296470e3242448b463fbd2fd2e..20bb66066108a7b01883e8c49bbc648e39acbcff 100755 --- a/src/main/java/no/nibio/vips/logic/scheduling/tasks/RunAllForecastConfigurationsTask.java +++ b/src/main/java/no/nibio/vips/logic/scheduling/tasks/RunAllForecastConfigurationsTask.java @@ -24,7 +24,11 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Map; +import javax.ejb.EJB; import no.nibio.vips.i18n.I18nImpl; +import no.nibio.vips.logic.controller.session.ForecastBean; +import no.nibio.vips.logic.controller.session.PointOfInterestBean; +import no.nibio.vips.logic.controller.session.UserBean; import no.nibio.vips.logic.entity.ForecastConfiguration; import no.nibio.vips.logic.entity.ModelInformation; import no.nibio.vips.logic.entity.Organization; @@ -34,15 +38,22 @@ import no.nibio.vips.logic.scheduling.SchedulingUtil; import no.nibio.vips.logic.scheduling.VipsLogicTask; import no.nibio.vips.logic.scheduling.model.PreprocessorException; import no.nibio.vips.logic.util.RunModelException; -import no.nibio.vips.logic.util.SessionControllerGetter; import no.nibio.vips.logic.util.SystemTime; import no.nibio.web.forms.FormField; /** - * @copyright 2013-2018 <a href="http://www.nibio.no/">NIBIO</a> + * @copyright 2013-2022 <a href="http://www.nibio.no/">NIBIO</a> * @author Tor-Einar Skog <tor-einar.skog@nibio.no> */ public class RunAllForecastConfigurationsTask extends VipsLogicTask{ + + @EJB + UserBean userBean; + @EJB + ForecastBean forecastBean; + @EJB + PointOfInterestBean pointOfInterestBean; + private I18nImpl i18n; //private boolean DEBUG=true; @Override @@ -57,7 +68,7 @@ public class RunAllForecastConfigurationsTask extends VipsLogicTask{ // The config could come from a form if(this.getConfiguration() != null && this.getConfiguration().get("organizationId") != null) { - this.setOrganization(SessionControllerGetter.getUserBean().getOrganization(Integer.valueOf(this.getConfiguration().get("organizationId")[0]))); + this.setOrganization(userBean.getOrganization(Integer.valueOf(this.getConfiguration().get("organizationId")[0]))); } List<Organization> organizations = new ArrayList<>(); @@ -67,7 +78,7 @@ public class RunAllForecastConfigurationsTask extends VipsLogicTask{ } else { - organizations = SessionControllerGetter.getUserBean().getOrganizations(); + organizations = userBean.getOrganizations(); } tec.setCompleteness(0d); int totalNumberofForecastConfigurations = 0; @@ -76,11 +87,11 @@ public class RunAllForecastConfigurationsTask extends VipsLogicTask{ // Get all organizations, loop, get all current forecasts, loop, run models, store results boolean noForecastConfigurationsFound = true; - Map<String, ModelInformation> modelInformationMap = SessionControllerGetter.getForecastBean().getIndexedBatchableModelInformation(); + Map<String, ModelInformation> modelInformationMap = forecastBean.getIndexedBatchableModelInformation(); for(Organization organization : organizations) { - List<ForecastConfiguration> currentForecastConfigurations = SessionControllerGetter.getForecastBean().getForecastConfigurationsValidAtTime(organization, SystemTime.getSystemTime()); + List<ForecastConfiguration> currentForecastConfigurations = forecastBean.getForecastConfigurationsValidAtTime(organization, SystemTime.getSystemTime()); //System.out.println("Current forecasts for " + organization.getOrganizationName() + ":" + currentForecastConfigurations.size()); if(currentForecastConfigurations != null && !currentForecastConfigurations.isEmpty()) { @@ -97,7 +108,7 @@ public class RunAllForecastConfigurationsTask extends VipsLogicTask{ { totalNumberofForecastConfigurations++; //System.out.println("Running forecast #" + forecastConfiguration.getForecastConfigurationId()); - SessionControllerGetter.getForecastBean().runForecast(forecastConfiguration); + forecastBean.runForecast(forecastConfiguration); /* if(DEBUG && totalNumberofForecastConfigurations == 2) { @@ -191,7 +202,7 @@ public class RunAllForecastConfigurationsTask extends VipsLogicTask{ .append("\",\"selected\":") .append("false") .append("}\n"); - List<PointOfInterestWeatherStation> stations = SessionControllerGetter.getPointOfInterestBean().getAllWeatherStations(); + List<PointOfInterestWeatherStation> stations = pointOfInterestBean.getAllWeatherStations(); Collections.sort(stations); for(PointOfInterest station:stations) { @@ -222,7 +233,7 @@ public class RunAllForecastConfigurationsTask extends VipsLogicTask{ .append("\",\"selected\":") .append("false") .append("}\n"); - List<Organization> organizations = SessionControllerGetter.getUserBean().getOrganizations(); + List<Organization> organizations = userBean.getOrganizations(); //Collections.sort(organizations); for(Organization organization:organizations) { diff --git a/src/main/java/no/nibio/vips/logic/scheduling/tasks/RunForecastConfigurationsByIdTask.java b/src/main/java/no/nibio/vips/logic/scheduling/tasks/RunForecastConfigurationsByIdTask.java index b17f0353943734d7f160a1ee827e3165121b5f77..a0a4a639befdf15813041efa20aa5de73ed9cdd7 100644 --- a/src/main/java/no/nibio/vips/logic/scheduling/tasks/RunForecastConfigurationsByIdTask.java +++ b/src/main/java/no/nibio/vips/logic/scheduling/tasks/RunForecastConfigurationsByIdTask.java @@ -21,14 +21,16 @@ package no.nibio.vips.logic.scheduling.tasks; import it.sauronsoftware.cron4j.TaskExecutionContext; import java.util.Map; +import javax.ejb.EJB; import no.nibio.vips.i18n.I18nImpl; +import no.nibio.vips.logic.controller.session.ForecastBean; +import no.nibio.vips.logic.controller.session.UserBean; import no.nibio.vips.logic.entity.ForecastConfiguration; import no.nibio.vips.logic.entity.ModelInformation; import no.nibio.vips.logic.scheduling.SchedulingUtil; import no.nibio.vips.logic.scheduling.VipsLogicTask; import no.nibio.vips.logic.scheduling.model.PreprocessorException; import no.nibio.vips.logic.util.RunModelException; -import no.nibio.vips.logic.util.SessionControllerGetter; import no.nibio.web.forms.FormField; /** @@ -36,6 +38,12 @@ import no.nibio.web.forms.FormField; * @author Tor-Einar Skog <tor-einar.skog@nibio.no> */ public class RunForecastConfigurationsByIdTask extends VipsLogicTask{ + + @EJB + UserBean userBean; + @EJB + ForecastBean forecastBean; + private I18nImpl i18n; //private boolean DEBUG=true; @Override @@ -57,16 +65,16 @@ public class RunForecastConfigurationsByIdTask extends VipsLogicTask{ Integer numberOfAttemptedForecastConfigurations = 0; Integer numberOfCompletedForecastConfigurations = 0; Boolean noForecastConfigurationsFound = forecastConfigurationIds.length == 0; - Map<String, ModelInformation> modelInformationMap = SessionControllerGetter.getForecastBean().getIndexedBatchableModelInformation(); + Map<String, ModelInformation> modelInformationMap = forecastBean.getIndexedBatchableModelInformation(); for(String forecastConfigurationId:forecastConfigurationIds) { noForecastConfigurationsFound = false; - ForecastConfiguration forecastConfiguration = SessionControllerGetter.getForecastBean().getForecastConfiguration(Long.valueOf(forecastConfigurationId)); + ForecastConfiguration forecastConfiguration = forecastBean.getForecastConfiguration(Long.valueOf(forecastConfigurationId)); try { numberOfAttemptedForecastConfigurations++; //System.out.println("Running forecast #" + forecastConfiguration.getForecastConfigurationId()); - SessionControllerGetter.getForecastBean().runForecast(forecastConfiguration); + forecastBean.runForecast(forecastConfiguration); /* if(DEBUG && totalNumberofForecastConfigurations == 2) { diff --git a/src/main/java/no/nibio/vips/logic/scheduling/tasks/RunGridModelsTask.java b/src/main/java/no/nibio/vips/logic/scheduling/tasks/RunGridModelsTask.java index 9112bc96d04e67ef168642afcdde895388095429..1aee3407f518a41efae07f78c5aed3d7e0e036a3 100644 --- a/src/main/java/no/nibio/vips/logic/scheduling/tasks/RunGridModelsTask.java +++ b/src/main/java/no/nibio/vips/logic/scheduling/tasks/RunGridModelsTask.java @@ -20,18 +20,22 @@ package no.nibio.vips.logic.scheduling.tasks; import it.sauronsoftware.cron4j.TaskExecutionContext; +import javax.ejb.EJB; +import no.nibio.vips.logic.controller.session.ForecastBean; import no.nibio.vips.logic.entity.ForecastConfiguration; import no.nibio.vips.logic.scheduling.SchedulingUtil; import no.nibio.vips.logic.scheduling.VipsLogicTask; import no.nibio.vips.logic.scheduling.model.PreprocessorException; import no.nibio.vips.logic.util.RunModelException; -import no.nibio.vips.logic.util.SessionControllerGetter; /** - * @copyright 2018 <a href="http://www.nibio.no/">NIBIO</a> + * @copyright 2018-2022 <a href="http://www.nibio.no/">NIBIO</a> * @author Tor-Einar Skog <tor-einar.skog@nibio.no> */ public class RunGridModelsTask extends VipsLogicTask{ + + @EJB + ForecastBean forecastBean; @Override public String getConfigFormDefinition(String language) { @@ -44,11 +48,11 @@ public class RunGridModelsTask extends VipsLogicTask{ //ZymoseptoriaSimpleRiskGridModelPreprocessor pp = new ZymoseptoriaSimpleRiskGridModelPreprocessor(); // TODO: Must find a forecast configuration id! -1000 ! - ForecastConfiguration fConfig = SessionControllerGetter.getForecastBean().getForecastConfiguration(-1000l); + ForecastConfiguration fConfig = forecastBean.getForecastConfiguration(-1000l); try { - SessionControllerGetter.getForecastBean().runForecast(fConfig); + forecastBean.runForecast(fConfig); tec.setCompleteness(1.0); } catch(PreprocessorException | RunModelException ex) diff --git a/src/main/java/no/nibio/vips/logic/scheduling/tasks/SendForecastEventNotificationsTask.java b/src/main/java/no/nibio/vips/logic/scheduling/tasks/SendForecastEventNotificationsTask.java index 36ec8983f5b8089ea935701543472b1986a7fb61..a62cc6888c925642349870d7841704327f1fe507 100755 --- a/src/main/java/no/nibio/vips/logic/scheduling/tasks/SendForecastEventNotificationsTask.java +++ b/src/main/java/no/nibio/vips/logic/scheduling/tasks/SendForecastEventNotificationsTask.java @@ -20,16 +20,18 @@ package no.nibio.vips.logic.scheduling.tasks; import it.sauronsoftware.cron4j.TaskExecutionContext; +import javax.ejb.EJB; +import no.nibio.vips.logic.messaging.MessagingBean; import no.nibio.vips.logic.scheduling.VipsLogicTask; -import no.nibio.vips.logic.scheduling.VipsLogicTaskFactory; -import no.nibio.vips.logic.util.SessionControllerGetter; -import no.nibio.web.forms.FormField; /** - * @copyright 2016 <a href="http://www.nibio.no/">NIBIO</a> + * @copyright 2016-2022 <a href="http://www.nibio.no/">NIBIO</a> * @author Tor-Einar Skog <tor-einar.skog@nibio.no> */ public class SendForecastEventNotificationsTask extends VipsLogicTask { + + @EJB + MessagingBean messagingBean; @Override public String getConfigFormDefinition(String language) { @@ -39,7 +41,7 @@ public class SendForecastEventNotificationsTask extends VipsLogicTask { @Override public void execute(TaskExecutionContext tec) throws RuntimeException { tec.setCompleteness(0d); - SessionControllerGetter.getMessagingBean().sendForecastEventNotifications(); + messagingBean.sendForecastEventNotifications(); tec.setCompleteness(1d); } diff --git a/src/main/java/no/nibio/vips/logic/scheduling/tasks/UpdateForecastResultCacheTableTask.java b/src/main/java/no/nibio/vips/logic/scheduling/tasks/UpdateForecastResultCacheTableTask.java index d3c48a4a35c5f71f729c5fde5cc1333dd1d2ac3d..3ad93b4ee9e224837bac633cbdc9ef40ce1746a3 100755 --- a/src/main/java/no/nibio/vips/logic/scheduling/tasks/UpdateForecastResultCacheTableTask.java +++ b/src/main/java/no/nibio/vips/logic/scheduling/tasks/UpdateForecastResultCacheTableTask.java @@ -20,16 +20,17 @@ package no.nibio.vips.logic.scheduling.tasks; import it.sauronsoftware.cron4j.TaskExecutionContext; +import javax.ejb.EJB; +import no.nibio.vips.logic.controller.session.ForecastBean; import no.nibio.vips.logic.scheduling.VipsLogicTask; -import no.nibio.vips.logic.scheduling.VipsLogicTaskFactory; -import no.nibio.vips.logic.util.SessionControllerGetter; -import no.nibio.web.forms.FormField; /** - * @copyright 2014 <a href="http://www.nibio.no/">NIBIO</a> + * @copyright 2014-2022 <a href="http://www.nibio.no/">NIBIO</a> * @author Tor-Einar Skog <tor-einar.skog@nibio.no> */ public class UpdateForecastResultCacheTableTask extends VipsLogicTask{ + @EJB + ForecastBean forecastBean; @Override public String getConfigFormDefinition(String language) { @@ -39,7 +40,7 @@ public class UpdateForecastResultCacheTableTask extends VipsLogicTask{ @Override public void execute(TaskExecutionContext tec) throws RuntimeException { tec.setCompleteness(0d); - SessionControllerGetter.getForecastBean().updateForecastResultCacheTable(); + forecastBean.updateForecastResultCacheTable(); tec.setCompleteness(1d); } diff --git a/src/main/java/no/nibio/vips/logic/scheduling/tasks/UpdateForecastSummaryTableTask.java b/src/main/java/no/nibio/vips/logic/scheduling/tasks/UpdateForecastSummaryTableTask.java index 19e98ba0038cede64a3ec5027b078b9d4a10e0fb..cc0e41bd41a6cd4da6e8ac6ee00fd0e3ee1e2a71 100755 --- a/src/main/java/no/nibio/vips/logic/scheduling/tasks/UpdateForecastSummaryTableTask.java +++ b/src/main/java/no/nibio/vips/logic/scheduling/tasks/UpdateForecastSummaryTableTask.java @@ -20,15 +20,19 @@ package no.nibio.vips.logic.scheduling.tasks; import it.sauronsoftware.cron4j.TaskExecutionContext; +import javax.ejb.EJB; +import no.nibio.vips.logic.controller.session.ForecastBean; import no.nibio.vips.logic.scheduling.VipsLogicTask; -import no.nibio.vips.logic.util.SessionControllerGetter; import no.nibio.vips.logic.util.SystemTime; /** - * @copyright 2015 <a href="http://www.nibio.no/">NIBIO</a> + * @copyright 2015-2022 <a href="http://www.nibio.no/">NIBIO</a> * @author Tor-Einar Skog <tor-einar.skog@nibio.no> */ public class UpdateForecastSummaryTableTask extends VipsLogicTask{ + + @EJB + ForecastBean forecastBean; @Override public String getConfigFormDefinition(String language) { @@ -38,7 +42,7 @@ public class UpdateForecastSummaryTableTask extends VipsLogicTask{ @Override public void execute(TaskExecutionContext tec) throws RuntimeException { tec.setCompleteness(0d); - SessionControllerGetter.getForecastBean().updateForecastSummaryTable(SystemTime.getSystemTime()); + forecastBean.updateForecastSummaryTable(SystemTime.getSystemTime()); tec.setCompleteness(1d); } diff --git a/src/main/java/no/nibio/vips/logic/scheduling/tasks/UpdateModelInformationTask.java b/src/main/java/no/nibio/vips/logic/scheduling/tasks/UpdateModelInformationTask.java index 102c4a399c662f8654f03f8458cca7df25164714..d68a8b291317d2a14a286bd71103b8bbafc346a7 100755 --- a/src/main/java/no/nibio/vips/logic/scheduling/tasks/UpdateModelInformationTask.java +++ b/src/main/java/no/nibio/vips/logic/scheduling/tasks/UpdateModelInformationTask.java @@ -20,17 +20,19 @@ package no.nibio.vips.logic.scheduling.tasks; import it.sauronsoftware.cron4j.TaskExecutionContext; +import javax.ejb.EJB; +import no.nibio.vips.logic.controller.session.ForecastBean; import no.nibio.vips.logic.scheduling.VipsLogicTask; -import no.nibio.vips.logic.scheduling.VipsLogicTaskFactory; -import no.nibio.vips.logic.util.SessionControllerGetter; -import no.nibio.web.forms.FormField; /** * Ensures model information is imported from VIPSCoreManager and - * @copyright 2014 <a href="http://www.nibio.no/">NIBIO</a> + * @copyright 2014-2022 <a href="http://www.nibio.no/">NIBIO</a> * @author Tor-Einar Skog <tor-einar.skog@nibio.no> */ public class UpdateModelInformationTask extends VipsLogicTask{ + + @EJB + ForecastBean forecastBean; /** * @@ -45,7 +47,7 @@ public class UpdateModelInformationTask extends VipsLogicTask{ @Override public void execute(TaskExecutionContext tec) throws RuntimeException { tec.setCompleteness(0d); - SessionControllerGetter.getForecastBean().updateModelInformation(); + forecastBean.updateModelInformation(); tec.setCompleteness(1d); } diff --git a/src/main/java/no/nibio/vips/logic/service/AuthenticationService.java b/src/main/java/no/nibio/vips/logic/service/AuthenticationService.java index f9e40286478cbc17cd376d89b6a9f297eaa615f3..abb6329764036f310de54db0e822e261298a6cf2 100644 --- a/src/main/java/no/nibio/vips/logic/service/AuthenticationService.java +++ b/src/main/java/no/nibio/vips/logic/service/AuthenticationService.java @@ -38,22 +38,25 @@ import javax.ws.rs.core.Response.Status; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ObjectNode; -import com.webcohesion.enunciate.metadata.Facet; import com.webcohesion.enunciate.metadata.rs.TypeHint; +import javax.ejb.EJB; +import no.nibio.vips.logic.controller.session.UserBean; import no.nibio.vips.logic.entity.UserUuid; import no.nibio.vips.logic.entity.VipsLogicUser; -import no.nibio.vips.logic.util.SessionControllerGetter; /** * Authentication services - * @copyright 2021 <a href="http://www.nibio.no/">NIBIO</a> + * @copyright 2021-2022 <a href="http://www.nibio.no/">NIBIO</a> * @author Tor-Einar Skog <tor-einar.skog@nibio.no> */ @Path("rest/auth") public class AuthenticationService { + + @EJB + UserBean userBean; - @Context + @Context private HttpServletRequest httpServletRequest; /** @@ -80,14 +83,14 @@ public class AuthenticationService { creds.put("username", username); creds.put("password", password); // Authenticate - VipsLogicUser user = SessionControllerGetter.getUserBean().authenticateUser(creds); + VipsLogicUser user = userBean.authenticateUser(creds); // Return success (true/false) and UUID if success ObjectMapper objectMapper = new ObjectMapper(); ObjectNode result = objectMapper.createObjectNode(); if(user != null) { - UserUuid uuid = SessionControllerGetter.getUserBean().createAndPersistUserUuid(user); + UserUuid uuid = userBean.createAndPersistUserUuid(user); result.put("success", true); result.put("UUID", uuid.getUserUuidPK().getUserUuid().toString()); } @@ -111,11 +114,11 @@ public class AuthenticationService { { String uuidStr = httpServletRequest.getHeader(HttpHeaders.AUTHORIZATION); UUID uuid = UUID.fromString(uuidStr); - VipsLogicUser user = SessionControllerGetter.getUserBean().findVipsLogicUser(uuid); + VipsLogicUser user = userBean.findVipsLogicUser(uuid); if(user != null) { // Also, renew the uuid by default length - SessionControllerGetter.getUserBean().renewUserUuid(uuid); + userBean.renewUserUuid(uuid); return Response.ok().entity(user).build(); } else diff --git a/src/main/java/no/nibio/vips/logic/service/GrowthStageService.java b/src/main/java/no/nibio/vips/logic/service/GrowthStageService.java index 2f27ca8c92d6834d1377fb9951b909c280615b48..05b07d7a026d39ac95b337f49f4d99b1ebc4a1b8 100644 --- a/src/main/java/no/nibio/vips/logic/service/GrowthStageService.java +++ b/src/main/java/no/nibio/vips/logic/service/GrowthStageService.java @@ -21,7 +21,6 @@ package no.nibio.vips.logic.service; import com.vividsolutions.jts.geom.Coordinate; import java.time.LocalDate; -import java.time.Month; import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.Arrays; @@ -30,6 +29,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; +import javax.ejb.EJB; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import javax.servlet.http.HttpServletRequest; @@ -40,13 +40,13 @@ import javax.ws.rs.Produces; import javax.ws.rs.QueryParam; import javax.ws.rs.core.Context; import javax.ws.rs.core.Response; +import no.nibio.vips.logic.controller.session.PointOfInterestBean; import no.nibio.vips.logic.entity.Organism; import no.nibio.vips.logic.entity.PointOfInterestWeatherStation; import no.nibio.vips.logic.modules.wheatleafblotch.GrowthStageLocationDate; -import no.nibio.vips.logic.util.SessionControllerGetter; /** - * @copyright 2020 <a href="http://www.nibio.no/">NIBIO</a> + * @copyright 2020-2022 <a href="http://www.nibio.no/">NIBIO</a> * @author Tor-Einar Skog <tor-einar.skog@nibio.no> */ @Path("rest/gs") @@ -56,6 +56,9 @@ public class GrowthStageService { @PersistenceContext(unitName="VIPSLogic-PU") EntityManager em; + @EJB + PointOfInterestBean pointOfInterestBean; + /** * At what dates can we expect the given crop to be at the given growth stages * at the given location? @@ -213,7 +216,7 @@ public class GrowthStageService { .setParameter("cropOrganismId", organismId) .getResultList(); - PointOfInterestWeatherStation closestStation = SessionControllerGetter.getPointOfInterestBean().findClosestWeatherStation(this.getLocationCoordinate(location), stationsWithGrowthStageInfoForCrop); + PointOfInterestWeatherStation closestStation = pointOfInterestBean.findClosestWeatherStation(this.getLocationCoordinate(location), stationsWithGrowthStageInfoForCrop); return em.createNamedQuery("GrowthStageLocationDate.findByCropOrganismIdAndPointOfInterestId") .setParameter("cropOrganismId", em.find(Organism.class, organismId)) .setParameter("pointOfInterestId", closestStation) diff --git a/src/main/java/no/nibio/vips/logic/service/LogicService.java b/src/main/java/no/nibio/vips/logic/service/LogicService.java index 6c7b9be72c68f351893c773d796637157e6d2458..655cf843ad7679c609a0d870362ac03ef1e6b48a 100755 --- a/src/main/java/no/nibio/vips/logic/service/LogicService.java +++ b/src/main/java/no/nibio/vips/logic/service/LogicService.java @@ -23,13 +23,6 @@ import com.ibm.icu.util.ULocale; import com.webcohesion.enunciate.metadata.Facet; import java.util.TimeZone; import de.micromata.opengis.kml.v_2_2_0.Kml; -import java.io.BufferedReader; -import java.io.IOError; -import java.io.IOException; -import java.io.InputStreamReader; -import java.net.HttpURLConnection; -import java.net.MalformedURLException; -import java.net.URL; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; @@ -41,6 +34,7 @@ import java.util.List; import java.util.Map; import java.util.UUID; import java.util.stream.Collectors; +import javax.ejb.EJB; import javax.servlet.http.HttpServletRequest; import javax.ws.rs.DELETE; import javax.ws.rs.GET; @@ -57,6 +51,11 @@ import javax.ws.rs.core.Response; import no.nibio.vips.coremanager.service.ManagerResource; import no.nibio.vips.entity.WeatherObservation; import no.nibio.vips.logic.authenticate.PasswordValidationException; +import no.nibio.vips.logic.controller.session.ForecastBean; +import no.nibio.vips.logic.controller.session.MessageBean; +import no.nibio.vips.logic.controller.session.OrganismBean; +import no.nibio.vips.logic.controller.session.PointOfInterestBean; +import no.nibio.vips.logic.controller.session.UserBean; import no.nibio.vips.logic.entity.CropPest; import no.nibio.vips.logic.entity.ForecastResult; import no.nibio.vips.logic.i18n.SessionLocaleUtil; @@ -71,7 +70,6 @@ import no.nibio.vips.logic.entity.PointOfInterest; import no.nibio.vips.logic.entity.PointOfInterestType; import no.nibio.vips.logic.entity.PointOfInterestWeatherStation; import no.nibio.vips.logic.entity.VipsLogicUser; -import no.nibio.vips.logic.util.SessionControllerGetter; import no.nibio.vips.logic.util.SystemTime; import no.nibio.vips.util.CSVPrintUtil; import no.nibio.vips.util.ServletUtil; @@ -93,6 +91,17 @@ public class LogicService { @Context private HttpServletRequest httpServletRequest; + @EJB + ForecastBean forecastBean; + @EJB + UserBean userBean; + @EJB + OrganismBean organismBean; + @EJB + PointOfInterestBean pointOfInterestBean; + @EJB + MessageBean messageBean; + /** * Get all results for one pest prediction * @param forecastConfigurationId Database id of the configured forecast @@ -129,9 +138,9 @@ public class LogicService { @QueryParam("userUUID") String userUUID ) { - if(SessionControllerGetter.getForecastBean().isUserAuthorizedForForecastConfiguration(forecastConfigurationId, userUUID)) + if(forecastBean.isUserAuthorizedForForecastConfiguration(forecastConfigurationId, userUUID)) { - List<ForecastResult> results = SessionControllerGetter.getForecastBean().getForecastResults(forecastConfigurationId); + List<ForecastResult> results = forecastBean.getForecastResults(forecastConfigurationId); if(results == null) { results = new ArrayList<>(); @@ -159,10 +168,10 @@ public class LogicService { @QueryParam("userUUID") String userUUID ) { - if(SessionControllerGetter.getForecastBean().isUserAuthorizedForForecastConfiguration(forecastConfigurationId, userUUID)) + if(forecastBean.isUserAuthorizedForForecastConfiguration(forecastConfigurationId, userUUID)) { String CSVOutput = ""; - List<ForecastResult> results = SessionControllerGetter.getForecastBean().getForecastResults(forecastConfigurationId); + List<ForecastResult> results = forecastBean.getForecastResults(forecastConfigurationId); if(results != null && ! results.isEmpty()) { List<String> parameters = new ArrayList<>();//new String[results.get(0).getKeys().size() + 3]; @@ -214,9 +223,9 @@ public class LogicService { @QueryParam("userUUID") String userUUID ) { - if(SessionControllerGetter.getForecastBean().isUserAuthorizedForForecastConfiguration(forecastConfigurationId, userUUID)) + if(forecastBean.isUserAuthorizedForForecastConfiguration(forecastConfigurationId, userUUID)) { - List<ForecastResult> results = SessionControllerGetter.getForecastBean().getForecastResults(forecastConfigurationId, latestDays); + List<ForecastResult> results = forecastBean.getForecastResults(forecastConfigurationId, latestDays); if(results == null) { results = new ArrayList<>(); @@ -244,7 +253,7 @@ public class LogicService { { Date dateStart = format.parse(dateStartStr); Date dateEnd = format.parse(dateEndStr); - return Response.ok().entity(SessionControllerGetter.getForecastBean().getForecastResults(forecastConfigurationId, dateStart, dateEnd)).build(); + return Response.ok().entity(forecastBean.getForecastResults(forecastConfigurationId, dateStart, dateEnd)).build(); } catch(ParseException ex) { @@ -274,11 +283,11 @@ public class LogicService { try { UUID uUUID = UUID.fromString(userUUID); - user = SessionControllerGetter.getUserBean().findVipsLogicUser(uUUID); + user = userBean.findVipsLogicUser(uUUID); } catch(NullPointerException | IllegalArgumentException ex) {} - List<ForecastConfiguration> summaries = SessionControllerGetter.getForecastBean().getForecastConfigurationSummaries(organizationId, user); + List<ForecastConfiguration> summaries = forecastBean.getForecastConfigurationSummaries(organizationId, user); if(includeOrganizationIds != null) { @@ -292,7 +301,7 @@ public class LogicService { { continue; } - summaries.addAll(SessionControllerGetter.getForecastBean().getForecastConfigurationSummaries(includeOrgId, user)); + summaries.addAll(forecastBean.getForecastConfigurationSummaries(includeOrgId, user)); } catch(NumberFormatException ex){} } @@ -315,10 +324,10 @@ public class LogicService { ) { UUID uUUID = UUID.fromString(userUUID); - VipsLogicUser user = SessionControllerGetter.getUserBean().findVipsLogicUser(uUUID); + VipsLogicUser user = userBean.findVipsLogicUser(uUUID); if(user != null) { - List<ForecastConfiguration> summaries = SessionControllerGetter.getForecastBean().getPrivateForecastConfigurationSummaries(user); + List<ForecastConfiguration> summaries = forecastBean.getPrivateForecastConfigurationSummaries(user); return Response.ok().entity(summaries).build(); } else @@ -339,9 +348,9 @@ public class LogicService { @Produces("application/json;charset=UTF-8") public Response getForecastConfiguration(@PathParam("forecastConfigurationId") Long forecastConfigurationId,@QueryParam("userUUID") String userUUID) { - if(SessionControllerGetter.getForecastBean().isUserAuthorizedForForecastConfiguration(forecastConfigurationId, userUUID)) + if(forecastBean.isUserAuthorizedForForecastConfiguration(forecastConfigurationId, userUUID)) { - ForecastConfiguration forecastConfiguration = SessionControllerGetter.getForecastBean().getForecastConfiguration(forecastConfigurationId); + ForecastConfiguration forecastConfiguration = forecastBean.getForecastConfiguration(forecastConfigurationId); return Response.ok().entity(forecastConfiguration).build(); } else @@ -361,7 +370,7 @@ public class LogicService { @Produces("application/json;charset=UTF-8") public Response getForecastConfigurationsForModel(@PathParam("modelId") String modelId, @PathParam("year") Integer year) { - return Response.ok().entity(SessionControllerGetter.getForecastBean().getForecastConfigurationsForModel(modelId, year)).build(); + return Response.ok().entity(forecastBean.getForecastConfigurationsForModel(modelId, year)).build(); } @@ -379,10 +388,10 @@ public class LogicService { try { UUID uUUID = UUID.fromString(userUUID); - VipsLogicUser user = SessionControllerGetter.getUserBean().findVipsLogicUser(uUUID); + VipsLogicUser user = userBean.findVipsLogicUser(uUUID); if(user != null) { - List<ForecastConfiguration> retVal = SessionControllerGetter.getForecastBean().getPrivateForecastConfigurationsForUser(user.getUserId()); + List<ForecastConfiguration> retVal = forecastBean.getPrivateForecastConfigurationsForUser(user.getUserId()); return Response.ok().entity(retVal).build(); } else @@ -444,7 +453,7 @@ public class LogicService { catch(NumberFormatException ex){} } } - List<ForecastConfiguration> forecastConfigs = SessionControllerGetter.getForecastBean().getForecastConfigurations(orgIds, from, to); + List<ForecastConfiguration> forecastConfigs = forecastBean.getForecastConfigurations(orgIds, from, to); return Response.ok().entity(forecastConfigs).build(); } @@ -484,7 +493,7 @@ public class LogicService { // First: Get all users for organization - List<VipsLogicUser> organizationUsers = SessionControllerGetter.getUserBean().getUsersByOrganization(organizationId); + List<VipsLogicUser> organizationUsers = userBean.getUsersByOrganization(organizationId); // Then: Get forecasts for these users, collate and return List<ForecastConfiguration> forecasts = new ArrayList<>(); @@ -492,8 +501,8 @@ public class LogicService { { Integer userId = user.getUserId(); List<ForecastConfiguration> result = cropOrganismIds != null && ! cropOrganismIds.isEmpty() ? - SessionControllerGetter.getForecastBean().getForecastConfigurationsForUserAndCropsAndDate(userId,cropOrganismIds, from, to) - : SessionControllerGetter.getForecastBean().getForecastConfigurationsForUserAndDate(userId, from, to); + forecastBean.getForecastConfigurationsForUserAndCropsAndDate(userId,cropOrganismIds, from, to) + : forecastBean.getForecastConfigurationsForUserAndDate(userId, from, to); if(forecasts == null) forecasts = result; else @@ -521,7 +530,7 @@ public class LogicService { ULocale currentLocale = SessionLocaleUtil.getCurrentLocale(httpServletRequest); try { - boolean isPasswordValid = SessionControllerGetter.getUserBean().isPasswordValid(password, currentLocale); + boolean isPasswordValid = userBean.isPasswordValid(password, currentLocale); return Response.ok().entity("true").build(); } @@ -537,7 +546,7 @@ public class LogicService { @Facet("restricted") public Response getForecastModelConfiguration(@PathParam("forecastConfigurationId") Long forecastConfigurationId) { - List<ForecastModelConfiguration> forecastModelConfigurations = SessionControllerGetter.getForecastBean().getForecastModelConfigurations(forecastConfigurationId); + List<ForecastModelConfiguration> forecastModelConfigurations = forecastBean.getForecastModelConfigurations(forecastConfigurationId); return Response.ok().entity(forecastModelConfigurations).build(); } @@ -562,7 +571,7 @@ public class LogicService { try { UUID uUUID = UUID.fromString(userUUID); - viewUser = SessionControllerGetter.getUserBean().findVipsLogicUser(uUUID); + viewUser = userBean.findVipsLogicUser(uUUID); } catch(IllegalArgumentException ex) { @@ -577,8 +586,8 @@ public class LogicService { } else { - List<Integer> cropOrganismIds = SessionControllerGetter.getOrganismBean().getCropCategoryOrganismIds(cropCategoryIds); - Kml retVal = SessionControllerGetter.getForecastBean().getForecastsAggregateKml(organizationIds, cropOrganismIds, SystemTime.getSystemTime(), ServletUtil.getServerName(httpServletRequest), viewUser); + List<Integer> cropOrganismIds = organismBean.getCropCategoryOrganismIds(cropCategoryIds); + Kml retVal = forecastBean.getForecastsAggregateKml(organizationIds, cropOrganismIds, SystemTime.getSystemTime(), ServletUtil.getServerName(httpServletRequest), viewUser); return Response.ok().entity(retVal).build(); } } @@ -610,15 +619,15 @@ public class LogicService { try { UUID uUUID = UUID.fromString(userUUID); - viewUser = SessionControllerGetter.getUserBean().findVipsLogicUser(uUUID); + viewUser = userBean.findVipsLogicUser(uUUID); } catch(IllegalArgumentException ex) { // Skip this } } - List<Integer> cropOrganismIds = SessionControllerGetter.getOrganismBean().getCropCategoryOrganismIds(cropCategoryIds); - Kml retVal = SessionControllerGetter.getForecastBean().getForecastsAggregateKml(organizationIds, cropOrganismIds, SystemTime.getSystemTime(), ServletUtil.getServerName(httpServletRequest), viewUser); + List<Integer> cropOrganismIds = organismBean.getCropCategoryOrganismIds(cropCategoryIds); + Kml retVal = forecastBean.getForecastsAggregateKml(organizationIds, cropOrganismIds, SystemTime.getSystemTime(), ServletUtil.getServerName(httpServletRequest), viewUser); return Response.ok().entity(retVal).build(); } } @@ -634,7 +643,7 @@ public class LogicService { @Produces("application/json;charset=UTF-8") public Response getLatestForecastResultsForPoi(@PathParam("poiId") Integer poiId) { - Map<String, Object> latestResults = SessionControllerGetter.getForecastBean().getLatestForecastResultsForPoi(poiId); + Map<String, Object> latestResults = forecastBean.getLatestForecastResultsForPoi(poiId); return Response.ok().entity(latestResults).build(); } @@ -650,7 +659,7 @@ public class LogicService { @Produces("application/vnd.google-earth.kml+xml;charset=utf-8") public Response getWeatherStations(@QueryParam("excludeWeatherStationId") Integer excludeWeatherStationId, @QueryParam("highlightWeatherStationId") Integer highlightWeatherStationId, @PathParam("organizationId") Integer organizationId) { - Kml retVal = SessionControllerGetter.getPointOfInterestBean().getPoisForOrganization(organizationId, excludeWeatherStationId, highlightWeatherStationId, ServletUtil.getServerName(httpServletRequest), SessionLocaleUtil.getI18nBundle(httpServletRequest), PointOfInterestType.POINT_OF_INTEREST_TYPE_WEATHER_STATION); + Kml retVal = pointOfInterestBean.getPoisForOrganization(organizationId, excludeWeatherStationId, highlightWeatherStationId, ServletUtil.getServerName(httpServletRequest), SessionLocaleUtil.getI18nBundle(httpServletRequest), PointOfInterestType.POINT_OF_INTEREST_TYPE_WEATHER_STATION); return Response.ok().entity(retVal).build(); } @@ -666,7 +675,7 @@ public class LogicService { @Produces("application/vnd.google-earth.kml+xml;charset=utf-8") public Response getPois(@QueryParam("excludePoiId") Integer excludePoiId, @QueryParam("highlightPoiId") Integer highlightPoiId, @PathParam("organizationId") Integer organizationId) { - Kml retVal = SessionControllerGetter.getPointOfInterestBean().getPoisForOrganization(organizationId, excludePoiId, highlightPoiId, ServletUtil.getServerName(httpServletRequest), SessionLocaleUtil.getI18nBundle(httpServletRequest), null); + Kml retVal = pointOfInterestBean.getPoisForOrganization(organizationId, excludePoiId, highlightPoiId, ServletUtil.getServerName(httpServletRequest), SessionLocaleUtil.getI18nBundle(httpServletRequest), null); return Response.ok().entity(retVal).build(); } @@ -681,8 +690,8 @@ public class LogicService { @Produces("application/json;charset=UTF-8") public Response getPoisForOrganization(@PathParam("organizationId") Integer organizationId) { - Organization organization = SessionControllerGetter.getUserBean().getOrganization(organizationId); - List<PointOfInterestWeatherStation> retVal = SessionControllerGetter.getPointOfInterestBean().getWeatherstationsForOrganization(organization, Boolean.TRUE); + Organization organization = userBean.getOrganization(organizationId); + List<PointOfInterestWeatherStation> retVal = pointOfInterestBean.getWeatherstationsForOrganization(organization, Boolean.TRUE); return Response.ok().entity(retVal).build(); } @@ -696,7 +705,7 @@ public class LogicService { @Produces("application/json;charset=UTF-8") public Response getPoi(@PathParam("pointOfInterestId") Integer pointOfInterestId) { - PointOfInterest retVal = SessionControllerGetter.getPointOfInterestBean().getPointOfInterest(pointOfInterestId); + PointOfInterest retVal = pointOfInterestBean.getPointOfInterest(pointOfInterestId); return Response.ok().entity(retVal).build(); } @@ -710,7 +719,7 @@ public class LogicService { @Produces("application/json;charset=UTF-8") public Response getPoiByName(@PathParam("poiName") String poiName) { - PointOfInterest retVal = SessionControllerGetter.getPointOfInterestBean().getPointOfInterest(poiName); + PointOfInterest retVal = pointOfInterestBean.getPointOfInterest(poiName); return retVal != null ? Response.ok().entity(retVal).build() : Response.noContent().build(); } @@ -730,9 +739,9 @@ public class LogicService { { String uuidStr = httpServletRequest.getHeader(HttpHeaders.AUTHORIZATION); UUID uuid = UUID.fromString(uuidStr); - user = SessionControllerGetter.getUserBean().findVipsLogicUser(uuid); + user = userBean.findVipsLogicUser(uuid); } - List<PointOfInterest> retVal = SessionControllerGetter.getPointOfInterestBean().getRelevantPointOfInterestsForUser(user); + List<PointOfInterest> retVal = pointOfInterestBean.getRelevantPointOfInterestsForUser(user); return Response.ok().entity(retVal).build(); } @@ -746,7 +755,7 @@ public class LogicService { @Facet("restricted") public Response getOrganismList() { - List<Organism> organismList = SessionControllerGetter.getOrganismBean().getOrganismSubTree(null); + List<Organism> organismList = organismBean.getOrganismSubTree(null); return Response.ok().entity(organismList).build(); } @@ -761,7 +770,7 @@ public class LogicService { public Response findOrganismsByLatinNames(@QueryParam("keywords") String keywords) { List<String> latinNames = Arrays.asList(keywords.split(",")); - List<Organism> organismList = SessionControllerGetter.getOrganismBean().findOrganismsByLatinNames(latinNames); + List<Organism> organismList = organismBean.findOrganismsByLatinNames(latinNames); return Response.ok().entity(organismList).build(); } @@ -779,7 +788,7 @@ public class LogicService { ) { List<String> localNames = Arrays.asList(keywords.split(",")).stream().map(String::trim).collect(Collectors.toList()); - List<Organism> organismList = SessionControllerGetter.getOrganismBean().findOrganismsByLocalNames(localNames, locale); + List<Organism> organismList = organismBean.findOrganismsByLocalNames(localNames, locale); return Response.ok().entity(organismList).build(); } @@ -793,7 +802,7 @@ public class LogicService { @Facet("restricted") public Response getCropOrganismList() { - List<Organism> organismList = SessionControllerGetter.getOrganismBean().getAllCrops(); + List<Organism> organismList = organismBean.getAllCrops(); return Response.ok().entity(organismList).build(); } @@ -813,11 +822,11 @@ public class LogicService { List<Organism> organismList; if(cropOrganismId == null) { - organismList = SessionControllerGetter.getOrganismBean().getAllPests(); + organismList = organismBean.getAllPests(); } else { - organismList = SessionControllerGetter.getOrganismBean().getCropPests(cropOrganismId); + organismList = organismBean.getCropPests(cropOrganismId); } return Response.ok().entity(organismList).build(); } @@ -834,7 +843,7 @@ public class LogicService { public Response getCropPestList( ) { - return Response.ok().entity(SessionControllerGetter.getOrganismBean().getCropPestsMapped()).build(); + return Response.ok().entity(organismBean.getCropPestsMapped()).build(); } /** @@ -848,7 +857,7 @@ public class LogicService { @Facet("restricted") public Response getMessage(@PathParam("messageId") Integer messageId) { - Message message = SessionControllerGetter.getMessageBean().getMessage(messageId); + Message message = messageBean.getMessage(messageId); return Response.ok().entity(message).build(); } @@ -888,7 +897,7 @@ public class LogicService { datePublishedTo = publishedTo == null ? null : format.parse(publishedTo); } - List<Message> messageList = SessionControllerGetter.getMessageBean().getMessageList(organizationId, datePublishedFrom, datePublishedTo); + List<Message> messageList = messageBean.getMessageList(organizationId, datePublishedFrom, datePublishedTo); return Response.ok().entity(messageList).build(); } catch(ParseException ex){ @@ -909,7 +918,7 @@ public class LogicService { @Facet("restricted") public Response getMessageListWithTags(@QueryParam("tagId") List<Integer> tagIds, @PathParam("organizationId") Integer organizationId) { - List<Message> messageListWithTags = SessionControllerGetter.getMessageBean().getCurrentFilteredMessagesForOrganization(tagIds, organizationId); + List<Message> messageListWithTags = messageBean.getCurrentFilteredMessagesForOrganization(tagIds, organizationId); return Response.ok().entity(messageListWithTags).build(); } @@ -923,7 +932,7 @@ public class LogicService { @Facet("restricted") public Response getMessageTagList() { - List<MessageTag> messageTags = SessionControllerGetter.getMessageBean().getMessageTagList(); + List<MessageTag> messageTags = messageBean.getMessageTagList(); return Response.ok().entity(messageTags).build(); } @@ -1074,8 +1083,8 @@ public class LogicService { return Response.status(Response.Status.UNAUTHORIZED).build(); } Date start = new Date(); - SessionControllerGetter.getForecastBean().updateForecastResultCacheTable(); - SessionControllerGetter.getForecastBean().updateForecastSummaryTable(SystemTime.getSystemTime()); + forecastBean.updateForecastResultCacheTable(); + forecastBean.updateForecastSummaryTable(SystemTime.getSystemTime()); Long timeLapsed = new Date().getTime() - start.getTime(); DateFormat format = new SimpleDateFormat("yyyy-MM-dd"); return Response.ok().entity("Forecast caches were successfully updated with data from today (" @@ -1097,7 +1106,7 @@ public class LogicService { try { UUID uUUID = UUID.fromString(userUUID); - VipsLogicUser user = SessionControllerGetter.getUserBean().findVipsLogicUser(uUUID); + VipsLogicUser user = userBean.findVipsLogicUser(uUUID); if(user != null) { return Response.ok().entity(user).build(); @@ -1127,7 +1136,7 @@ public class LogicService { try { UUID uUUID = UUID.fromString(userUUID); - SessionControllerGetter.getUserBean().deleteUserUuid(uUUID); + userBean.deleteUserUuid(uUUID); return Response.ok().build(); } catch(IllegalArgumentException ex) @@ -1147,7 +1156,7 @@ public class LogicService { @Facet("restricted") public Response getCropPest(@PathParam("cropOrganismId") Integer cropOrganismId) { - CropPest retVal = SessionControllerGetter.getOrganismBean().getCropPestRecursive(cropOrganismId,true); + CropPest retVal = organismBean.getCropPestRecursive(cropOrganismId,true); if(retVal != null) { return Response.ok().entity(retVal).build(); @@ -1171,7 +1180,7 @@ public class LogicService { { if(organizationId != null) { - return Response.ok().entity(SessionControllerGetter.getOrganismBean().getCropCategories(organizationId)).build(); + return Response.ok().entity(organismBean.getCropCategories(organizationId)).build(); } else { @@ -1184,7 +1193,7 @@ public class LogicService { @Produces("application/json;charset=UTF-8") public Response getOrganizations() { - return Response.ok().entity(SessionControllerGetter.getUserBean().getOrganizations()).build(); + return Response.ok().entity(userBean.getOrganizations()).build(); } @GET @@ -1192,7 +1201,7 @@ public class LogicService { @Produces("application/json;charset=UTF-8") public Response getModelInformation(@PathParam("modelId") String modelId) { - ModelInformation retVal = SessionControllerGetter.getForecastBean().getModelInformation(modelId); + ModelInformation retVal = forecastBean.getModelInformation(modelId); return retVal != null ? Response.ok().entity(retVal).build() : Response.status(Response.Status.NOT_FOUND).entity("ERROR: Could not find model with id=" + modelId).build(); } diff --git a/src/main/java/no/nibio/vips/logic/service/ModelFormService.java b/src/main/java/no/nibio/vips/logic/service/ModelFormService.java index 2e7c094d74fbae49e1ab33600b9cedc7924b21c9..5b8cd2d8e21cced2f1163aeb1f61ff7386e3d82e 100644 --- a/src/main/java/no/nibio/vips/logic/service/ModelFormService.java +++ b/src/main/java/no/nibio/vips/logic/service/ModelFormService.java @@ -26,6 +26,7 @@ import java.util.HashSet; import java.util.List; import java.util.Set; import java.util.TimeZone; +import javax.ejb.EJB; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; @@ -35,6 +36,9 @@ import no.nibio.vips.entity.ModelConfiguration; import no.nibio.vips.entity.Result; import no.nibio.vips.entity.WeatherObservation; import no.nibio.vips.gis.GISUtil; +import no.nibio.vips.logic.controller.session.ForecastBean; +import no.nibio.vips.logic.controller.session.PointOfInterestBean; +import no.nibio.vips.logic.controller.session.UserBean; import no.nibio.vips.logic.entity.ForecastConfiguration; import no.nibio.vips.logic.entity.ForecastModelConfiguration; import no.nibio.vips.logic.entity.ForecastModelConfigurationPK; @@ -44,7 +48,6 @@ import no.nibio.vips.logic.entity.WeatherStationDataSource; import no.nibio.vips.logic.scheduling.model.PreprocessorException; import no.nibio.vips.logic.scheduling.model.preprocessor.SeptoriaHumidityModelPreprocessor; import no.nibio.vips.logic.util.RunModelException; -import no.nibio.vips.logic.util.SessionControllerGetter; import no.nibio.vips.logic.util.SystemTime; import no.nibio.vips.util.ParseRESTParamUtil; import no.nibio.vips.util.WeatherUtil; @@ -53,12 +56,19 @@ import no.nibio.vips.util.weather.WeatherDataSourceUtil; /** * This is a collection of services for models run from forms (not as part of batch) - * @copyright 2018 <a href="http://www.nibio.no/">NIBIO</a> + * @copyright 2018-2022 <a href="http://www.nibio.no/">NIBIO</a> * @author Tor-Einar Skog <tor-einar.skog@nibio.no> */ @Path("rest/modelform") @Facet("restricted") public class ModelFormService { + + @EJB + UserBean userBean; + @EJB + PointOfInterestBean pointOfInterestBean; + @EJB + ForecastBean forecastBean; @GET @Path("SEPTORIAHU/runmodel") @@ -108,7 +118,7 @@ public class ModelFormService { // Data parsing Integer organizationId = Integer.valueOf(organizationId_countryCode.split("_")[0]); - Organization organization = SessionControllerGetter.getUserBean().getOrganization(organizationId); + Organization organization = userBean.getOrganization(organizationId); fConf.setTimeZone(organization.getDefaultTimeZone()); TimeZone timeZone = TimeZone.getTimeZone(organization.getDefaultTimeZone()); ParseRESTParamUtil pUtil = new ParseRESTParamUtil(); @@ -141,7 +151,7 @@ public class ModelFormService { GISUtil gisUtil = new GISUtil(); Coordinate UTMc = new Coordinate(UTM32vE, UTM32vN); Coordinate coordinate = gisUtil.convertCoordinate(UTMc, "EPSG:32632", "EPSG:4326"); - WeatherStationDataSource wsds = SessionControllerGetter.getPointOfInterestBean().getWeatherStationDataSource("DMI PointWeb"); + WeatherStationDataSource wsds = pointOfInterestBean.getWeatherStationDataSource("DMI PointWeb"); ws = new PointOfInterestWeatherStation(); ws.setWeatherStationDataSourceId(wsds); ws.setWeatherStationRemoteId(coordinate.y + "," + coordinate.x);// For some reason, The transformation switches X/Y @@ -152,7 +162,7 @@ public class ModelFormService { else { // Weather station id maps to a regular weather station - ws = (PointOfInterestWeatherStation) SessionControllerGetter.getPointOfInterestBean().getPointOfInterest(Integer.valueOf(weatherStationId)); + ws = (PointOfInterestWeatherStation) pointOfInterestBean.getPointOfInterest(Integer.valueOf(weatherStationId)); } fConf.setWeatherStationPointOfInterestId(ws); fConf.setLocationPointOfInterestId(ws); @@ -162,7 +172,7 @@ public class ModelFormService { Integer VIPSCoreUserId = organization.getDefaultVipsCoreUserId(); System.out.println("defaultVIPScoreUserId = " + VIPSCoreUserId); - List<Result>results = SessionControllerGetter.getForecastBean().runForecast(mConf, VIPSCoreUserId); + List<Result>results = forecastBean.runForecast(mConf, VIPSCoreUserId); return Response.ok().entity(results).build(); } @@ -174,7 +184,7 @@ public class ModelFormService { private ForecastModelConfiguration getForecastModelConfiguration(String modelId, String key, String value) { - ForecastModelConfiguration retVal = new ForecastModelConfiguration(new ForecastModelConfigurationPK(-1, SessionControllerGetter.getForecastBean().getDeCamelizedFieldName(modelId, key))); + ForecastModelConfiguration retVal = new ForecastModelConfiguration(new ForecastModelConfigurationPK(-1, forecastBean.getDeCamelizedFieldName(modelId, key))); retVal.setParameterValue(value); return retVal; } 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 b6ea8f02f37f8e7af13dd0ab27f7047f5f4854eb..cf695a52b23ee1c6d39ccc77b6639aa5cfa4b52d 100755 --- a/src/main/java/no/nibio/vips/logic/service/ObservationService.java +++ b/src/main/java/no/nibio/vips/logic/service/ObservationService.java @@ -19,16 +19,12 @@ package no.nibio.vips.logic.service; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.node.ObjectNode; import com.ibm.icu.util.ULocale; -import com.webcohesion.enunciate.metadata.Facet; import java.io.IOException; import java.net.URI; import java.text.ParseException; import java.text.SimpleDateFormat; import java.time.Instant; -import java.time.ZoneOffset; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; @@ -36,6 +32,7 @@ import java.util.List; import java.util.Map; import java.util.UUID; import java.util.stream.Collectors; +import javax.ejb.EJB; import javax.servlet.http.HttpServletRequest; import javax.ws.rs.Consumes; import javax.ws.rs.DELETE; @@ -54,6 +51,9 @@ import javax.ws.rs.core.HttpHeaders; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; import javax.ws.rs.core.Response.Status; +import no.nibio.vips.logic.controller.session.ObservationBean; +import no.nibio.vips.logic.controller.session.OrganismBean; +import no.nibio.vips.logic.controller.session.UserBean; import no.nibio.vips.logic.entity.Gis; import no.nibio.vips.logic.entity.Observation; @@ -65,9 +65,7 @@ import no.nibio.vips.logic.entity.rest.PointMappingResponse; import no.nibio.vips.logic.entity.rest.ReferencedPoint; import no.nibio.vips.logic.util.GISEntityUtil; import no.nibio.vips.logic.util.Globals; -import no.nibio.vips.logic.util.SessionControllerGetter; import org.jboss.resteasy.annotations.GZIP; -import org.joda.time.LocalDate; import org.wololo.geojson.Feature; /** @@ -80,6 +78,13 @@ public class ObservationService { @Context private HttpServletRequest httpServletRequest; + @EJB + UserBean userBean; + @EJB + ObservationBean observationBean; + @EJB + OrganismBean organismBean; + /* * NOTE TO SELF * How to query for observations within a bounding box @@ -152,11 +157,11 @@ public class ObservationService { if(user == null && userUUID != null) { - user = SessionControllerGetter.getUserBean().findVipsLogicUser(UUID.fromString(userUUID)); + user = userBean.findVipsLogicUser(UUID.fromString(userUUID)); } ULocale locale = new ULocale(localeStr != null ? localeStr : user != null ? user.getOrganizationId().getDefaultLocale() : - SessionControllerGetter.getUserBean().getOrganization(organizationId).getDefaultLocale()); + userBean.getOrganization(organizationId).getDefaultLocale()); List<ObservationListItem> observations = getFilteredObservationsFromBackend( organizationId, @@ -169,8 +174,8 @@ public class ObservationService { ).stream().map(obs -> { try { return obs.getListItem(locale.getLanguage(), - SessionControllerGetter.getObservationBean().getLocalizedObservationDataSchema( - SessionControllerGetter.getObservationBean().getObservationDataSchema(organizationId, obs.getOrganismId()), + observationBean.getLocalizedObservationDataSchema( + observationBean.getObservationDataSchema(organizationId, obs.getOrganismId()), httpServletRequest, locale ) @@ -182,7 +187,7 @@ public class ObservationService { } }).collect(Collectors.toList()); - //o.setObservationDataSchema(SessionControllerGetter.getObservationBean().getObservationDataSchema(observer.getOrganizationId().getOrganizationId(), o.getOrganismId())); + //o.setObservationDataSchema(observationBean.getObservationDataSchema(observer.getOrganizationId().getOrganizationId(), o.getOrganismId())); return Response.ok().entity(observations).build(); } @@ -208,7 +213,7 @@ public class ObservationService { } catch(ParseException ex){ System.out.println("ERROR");} - return SessionControllerGetter.getObservationBean().getFilteredObservations( + return observationBean.getFilteredObservations( organizationId, pestId, cropId, @@ -244,7 +249,7 @@ public class ObservationService { } catch(ParseException ex){ System.out.println("ERROR");} - List<Observation> filteredObservations = SessionControllerGetter.getObservationBean().getFilteredObservations( + List<Observation> filteredObservations = observationBean.getFilteredObservations( organizationId, pestId, cropId, @@ -269,7 +274,7 @@ public class ObservationService { @Produces("application/json;charset=UTF-8") public Response getObservedPests(@PathParam("organizationId") Integer organizationId) { - return Response.ok().entity(SessionControllerGetter.getObservationBean().getObservedPests(organizationId)).build(); + return Response.ok().entity(observationBean.getObservedPests(organizationId)).build(); } /** @@ -284,7 +289,7 @@ public class ObservationService { @Produces("application/json;charset=UTF-8") public Response getObservedCrops(@PathParam("organizationId") Integer organizationId) { - return Response.ok().entity(SessionControllerGetter.getObservationBean().getObservedCrops(organizationId)).build(); + return Response.ok().entity(observationBean.getObservedCrops(organizationId)).build(); } @@ -298,7 +303,7 @@ public class ObservationService { @GZIP @Produces("application/json;charset=UTF-8") public Response getObservations(@PathParam("organizationId") Integer organizationId){ - return Response.ok().entity(SessionControllerGetter.getObservationBean().getObservations(organizationId, Observation.STATUS_TYPE_ID_APPROVED)).build(); + return Response.ok().entity(observationBean.getObservations(organizationId, Observation.STATUS_TYPE_ID_APPROVED)).build(); } /** @@ -313,10 +318,10 @@ public class ObservationService { { String uuidStr = httpServletRequest.getHeader(HttpHeaders.AUTHORIZATION); UUID uuid = UUID.fromString(uuidStr); - VipsLogicUser user = SessionControllerGetter.getUserBean().findVipsLogicUser(uuid); + VipsLogicUser user = userBean.findVipsLogicUser(uuid); if(user != null) { - return Response.ok().entity(SessionControllerGetter.getObservationBean().getObservationsForUser(user)).build(); + return Response.ok().entity(observationBean.getObservationsForUser(user)).build(); } else { @@ -356,7 +361,7 @@ public class ObservationService { { to = format.parse(timeOfObservationTo); } - return Response.ok().entity(SessionControllerGetter.getObservationBean().getBroadcastObservations(organizationId, from, to)).build(); + return Response.ok().entity(observationBean.getBroadcastObservations(organizationId, from, to)).build(); } catch(ParseException ex) { @@ -365,7 +370,7 @@ public class ObservationService { } else { - return Response.ok().entity(SessionControllerGetter.getObservationBean().getBroadcastObservations(organizationId, season)).build(); + return Response.ok().entity(observationBean.getBroadcastObservations(organizationId, season)).build(); } } @@ -377,19 +382,19 @@ public class ObservationService { @QueryParam("userUUID") String userUUID ){ // Observation needs to be masked here as well, or does it create trouble for VIPSLogic observation admin? - Observation o = SessionControllerGetter.getObservationBean().getObservation(observationId); + Observation o = observationBean.getObservation(observationId); if(o == null) { return Response.status(Status.NOT_FOUND).build(); } // Which organization does this observation belong to? - VipsLogicUser observer = SessionControllerGetter.getUserBean().getVipsLogicUser(o.getUserId()); - o.setObservationDataSchema(SessionControllerGetter.getObservationBean().getObservationDataSchema(observer.getOrganizationId().getOrganizationId(), o.getOrganismId())); + VipsLogicUser observer = userBean.getVipsLogicUser(o.getUserId()); + o.setObservationDataSchema(observationBean.getObservationDataSchema(observer.getOrganizationId().getOrganizationId(), o.getOrganismId())); VipsLogicUser user = (VipsLogicUser) httpServletRequest.getSession().getAttribute("user"); if(user == null && userUUID != null) { - user = SessionControllerGetter.getUserBean().findVipsLogicUser(UUID.fromString(userUUID)); + user = userBean.findVipsLogicUser(UUID.fromString(userUUID)); } // Modification of location information: // 1) If location is private, only the owner or super users/org admins may view them @@ -409,8 +414,8 @@ public class ObservationService { List<Observation> intermediary = new ArrayList<>(); intermediary.add(o); intermediary = this.maskObservations(o.getPolygonService(), - SessionControllerGetter.getObservationBean().getObservationsWithLocations( - SessionControllerGetter.getObservationBean().getObservationsWithGeoInfo(intermediary) + observationBean.getObservationsWithLocations( + observationBean.getObservationsWithGeoInfo(intermediary) ) ); o = intermediary.get(0); @@ -433,7 +438,7 @@ public class ObservationService { { return Response.status(Response.Status.UNAUTHORIZED).build(); } - if(!SessionControllerGetter.getUserBean().authorizeUser(user, + if(!userBean.authorizeUser(user, VipsLogicRole.OBSERVER, VipsLogicRole.OBSERVATION_AUTHORITY, VipsLogicRole.ORGANIZATION_ADMINISTRATOR, @@ -443,7 +448,7 @@ public class ObservationService { { return Response.status(Response.Status.FORBIDDEN).build(); } - SessionControllerGetter.getObservationBean().deleteGisObservationByGis(gisId); + observationBean.deleteGisObservationByGis(gisId); return Response.noContent().build(); } @@ -461,14 +466,14 @@ public class ObservationService { try { // Create the Observation - Observation observation = SessionControllerGetter.getObservationBean().getObservationFromGeoJSON(geoJSON); + Observation observation = observationBean.getObservationFromGeoJSON(geoJSON); VipsLogicUser user = (VipsLogicUser) httpServletRequest.getSession().getAttribute("user"); // If no user, send error message back to client if(user == null) { return Response.status(Response.Status.UNAUTHORIZED).build(); } - if(!SessionControllerGetter.getUserBean().authorizeUser(user, + if(!userBean.authorizeUser(user, VipsLogicRole.OBSERVER, VipsLogicRole.OBSERVATION_AUTHORITY, VipsLogicRole.ORGANIZATION_ADMINISTRATOR, @@ -481,7 +486,7 @@ public class ObservationService { observation.setUserId(user.getUserId()); observation.setStatusChangedByUserId(user.getUserId()); observation.setStatusChangedTime(new Date()); - observation = SessionControllerGetter.getObservationBean().storeObservation(observation); + observation = observationBean.storeObservation(observation); GISEntityUtil gisUtil = new GISEntityUtil(); return Response.created(URI.create("/observation/" + observation.getObservationId())).entity(gisUtil.getGeoJSONFromObservation(observation)).build(); }catch (IOException ex) @@ -500,7 +505,7 @@ public class ObservationService { @Produces("text/plain;charset=UTF-8") public Response getFirstObservation(@PathParam("organismId") Integer organismId) { - Date firstObsTime = SessionControllerGetter.getObservationBean().getFirstObservationTime(organismId); + Date firstObsTime = observationBean.getFirstObservationTime(organismId); return firstObsTime != null ? Response.ok().entity(firstObsTime).build() : Response.status(404).entity("No observations of organism with id=" + organismId).build(); } @@ -516,7 +521,7 @@ public class ObservationService { public Response getDateOfLastOrganismSystemUpdate() { HashMap<String, Object> result = new HashMap<>(); - Instant lastUpdated = SessionControllerGetter.getOrganismBean().getLatestUpdateOfOrganisms(); + Instant lastUpdated = organismBean.getLatestUpdateOfOrganisms(); result.put("lastUpdated", lastUpdated != null ? lastUpdated: "1970-01-01T00:00:00Z"); return Response.ok().entity(result).build(); } @@ -540,7 +545,7 @@ public class ObservationService { return retVal; } // Else: This is a registered user without special privileges. Show public observations + user's own - retVal.addAll(SessionControllerGetter.getObservationBean().getObservationsForUser(user)); + retVal.addAll(observationBean.getObservationsForUser(user)); return retVal; } diff --git a/src/main/java/no/nibio/vips/logic/service/VIPSMobileService.java b/src/main/java/no/nibio/vips/logic/service/VIPSMobileService.java index 2569197651fdbaa9bbb0e78e23040fa6696f517b..ea71a49012d0bd07b15dd309853a343206de5409 100755 --- a/src/main/java/no/nibio/vips/logic/service/VIPSMobileService.java +++ b/src/main/java/no/nibio/vips/logic/service/VIPSMobileService.java @@ -31,6 +31,7 @@ import java.util.Map; import java.util.NoSuchElementException; import java.util.Set; import java.util.TimeZone; +import javax.ejb.EJB; import javax.servlet.http.HttpServletRequest; import javax.ws.rs.GET; import javax.ws.rs.Path; @@ -40,6 +41,12 @@ import javax.ws.rs.QueryParam; import javax.ws.rs.core.Context; import javax.ws.rs.core.Response; import no.nibio.vips.entity.Result; +import no.nibio.vips.logic.controller.session.ForecastBean; +import no.nibio.vips.logic.controller.session.MessageBean; +import no.nibio.vips.logic.controller.session.ObservationBean; +import no.nibio.vips.logic.controller.session.OrganismBean; +import no.nibio.vips.logic.controller.session.PointOfInterestBean; +import no.nibio.vips.logic.controller.session.UserBean; import no.nibio.vips.logic.entity.CropCategory; import no.nibio.vips.logic.entity.ForecastConfiguration; import no.nibio.vips.logic.entity.ForecastSummary; @@ -78,6 +85,19 @@ public class VIPSMobileService { @Context private HttpServletRequest httpServletRequest; + @EJB + MessageBean messageBean; + @EJB + ObservationBean observationBean; + @EJB + OrganismBean organismBean; + @EJB + ForecastBean forecastBean; + @EJB + PointOfInterestBean pointOfInterestBean; + @EJB + UserBean userBean; + // TODO: Add observation messages @GET @Path("melding") @@ -89,7 +109,7 @@ public class VIPSMobileService { { Date datePublishedFrom = SystemTime.getSystemTime(); Date datePublishedTo = datePublishedFrom; - List<Message> messageList = SessionControllerGetter.getMessageBean().getMessageList(organizationId, datePublishedFrom, datePublishedTo); + List<Message> messageList = messageBean.getMessageList(organizationId, datePublishedFrom, datePublishedTo); List<VIPSMobileMessage> retVal = new ArrayList<>(); for(Message message: messageList) @@ -151,7 +171,7 @@ public class VIPSMobileService { Calendar cal = Calendar.getInstance(); cal.setTime(datePublishedFrom); Integer observationMessageTagId = 1; - List<Observation> broadcastObservations = SessionControllerGetter.getObservationBean().getBroadcastObservations(organizationId, cal.get(Calendar.YEAR)); + List<Observation> broadcastObservations = observationBean.getBroadcastObservations(organizationId, cal.get(Calendar.YEAR)); // Making an observation message valid for 3 months by default broadcastObservations.stream().filter( @@ -187,12 +207,12 @@ public class VIPSMobileService { @QueryParam("locale") String locale ) { - List<Organism> cropList = SessionControllerGetter.getOrganismBean().getAllCrops(); + List<Organism> cropList = organismBean.getAllCrops(); Map<Integer, Organism> allCrops = new HashMap<>(); cropList.forEach((crop) -> { allCrops.put(crop.getOrganismId(), crop); }); - List<CropCategory> cropCategories = SessionControllerGetter.getOrganismBean().getCropCategories(organizationId); + List<CropCategory> cropCategories = organismBean.getCropCategories(organizationId); List<VIPSMobileCropCategory> retVal = new ArrayList<>(); cropCategories.stream().forEach( cc -> { @@ -224,7 +244,7 @@ public class VIPSMobileService { } // Get model info - Map<String, ModelInformation> modelInformationMap = SessionControllerGetter.getForecastBean().getIndexedModelInformation(); + Map<String, ModelInformation> modelInformationMap = forecastBean.getIndexedModelInformation(); TimeZone timeZone = timeZoneStr != null ? TimeZone.getTimeZone(timeZoneStr) : TimeZone.getDefault(); @@ -240,7 +260,7 @@ public class VIPSMobileService { List<VIPSMobilePresentation> retVal = new ArrayList<>(); if(!parsedIds.isEmpty()) { - List<ForecastConfiguration> configsWithSummaries = SessionControllerGetter.getForecastBean().getForecastConfigurationWithSummaries(parsedIds); + List<ForecastConfiguration> configsWithSummaries = forecastBean.getForecastConfigurationWithSummaries(parsedIds); // Initializing the array of summaries Date today = new WeatherUtil().normalizeToExactDate(SystemTime.getSystemTime(), timeZone); List<Date> datesList = new ArrayList<>(); @@ -346,8 +366,8 @@ public class VIPSMobileService { cal.set(Calendar.MONTH, Calendar.JANUARY); Date from = cal.getTime(); - PointOfInterestWeatherStation station = (PointOfInterestWeatherStation) SessionControllerGetter.getPointOfInterestBean().getPointOfInterest(klimastasjonId); - List<ForecastConfiguration> forecasts = SessionControllerGetter.getForecastBean().getForecastConfigurations(station, from, to); + PointOfInterestWeatherStation station = (PointOfInterestWeatherStation) pointOfInterestBean.getPointOfInterest(klimastasjonId); + List<ForecastConfiguration> forecasts = forecastBean.getForecastConfigurations(station, from, to); List<VIPSMobileForecast> retVal = new ArrayList<>(); for(ForecastConfiguration forecast:forecasts) { @@ -415,7 +435,7 @@ public class VIPSMobileService { } // First: Get all users for organization - List<VipsLogicUser> organizationUsers = SessionControllerGetter.getUserBean().getUsersByOrganization(organizationId); + List<VipsLogicUser> organizationUsers = userBean.getUsersByOrganization(organizationId); // Then: Get forecasts for these users, collate and return List<ForecastConfiguration> forecasts = new ArrayList<>(); @@ -423,8 +443,8 @@ public class VIPSMobileService { { Integer userId = user.getUserId(); List<ForecastConfiguration> result = cropOrganismIds != null && ! cropOrganismIds.isEmpty() ? - SessionControllerGetter.getForecastBean().getForecastConfigurationsForUserAndCropsAndDate(userId,cropOrganismIds, from, to) - : SessionControllerGetter.getForecastBean().getForecastConfigurationsForUserAndDate(userId, from, to); + forecastBean.getForecastConfigurationsForUserAndCropsAndDate(userId,cropOrganismIds, from, to) + : forecastBean.getForecastConfigurationsForUserAndDate(userId, from, to); if(forecasts == null) forecasts = result; else diff --git a/src/main/java/no/nibio/vips/logic/startup/StartupListener.java b/src/main/java/no/nibio/vips/logic/startup/StartupListener.java index 6bf3ba3f3daaaa6a1c4b713ae410dddac51f7a60..334f052cbb5a4ab2c8f58e72332d5f732c47b97c 100755 --- a/src/main/java/no/nibio/vips/logic/startup/StartupListener.java +++ b/src/main/java/no/nibio/vips/logic/startup/StartupListener.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014 NIBIO <http://www.nibio.no/>. + * Copyright (c) 2022 NIBIO <http://www.nibio.no/>. * * This file is part of VIPSLogic. * VIPSLogic is free software: you can redistribute it and/or modify @@ -20,22 +20,27 @@ package no.nibio.vips.logic.startup; import javax.annotation.Resource; +import javax.ejb.EJB; import javax.servlet.ServletContextEvent; import javax.sql.DataSource; -import no.nibio.vips.logic.util.SessionControllerGetter; +import no.nibio.vips.logic.controller.session.SchedulingBean; import org.flywaydb.core.Flyway; /** * This class is created and method contextInitialized called when the application * is deployed (either at startup of application container or when redeploying the app) * - * @copyright 2013 {@link http://www.nibio.no NIBIO} + * @copyright 2013-2022 {@link http://www.nibio.no NIBIO} * @author Tor-Einar Skog <tor-einar.skog@nibio.no> */ public class StartupListener implements javax.servlet.ServletContextListener{ @Resource(lookup="java:/jboss/datasources/vipslogic") DataSource vipslogicDS; + + @EJB + SchedulingBean schedulingBean; + /** * Called when the application * is deployed (either at startup of application container or when redeploying the app) @@ -50,11 +55,11 @@ public class StartupListener implements javax.servlet.ServletContextListener{ flyway.setDataSource(vipslogicDS); flyway.migrate(); - SessionControllerGetter.getSchedulingBean().initSystemScheduler(); + schedulingBean.initSystemScheduler(); if(System.getProperty("no.nibio.vips.logic.START_SCHEDULING_ON_BOOT").equals("true")) { System.out.println("VIPSLogic starting scheduling services"); - SessionControllerGetter.getSchedulingBean().startSystemScheduler(); + schedulingBean.startSystemScheduler(); } else { @@ -72,6 +77,6 @@ public class StartupListener implements javax.servlet.ServletContextListener{ public void contextDestroyed(ServletContextEvent sce) { System.out.println("VIPSLogic system shutting down"); // Shutting down scheduler - SessionControllerGetter.getSchedulingBean().stopSystemScheduler(); + schedulingBean.stopSystemScheduler(); } } diff --git a/src/main/java/no/nibio/vips/logic/util/SessionControllerGetter.java b/src/main/java/no/nibio/vips/logic/util/SessionControllerGetter.java index b214f0cbff880db06ca5c8111b1179fea24d66ba..51129a619791b6c49cd067d054b031def095cbd4 100755 --- a/src/main/java/no/nibio/vips/logic/util/SessionControllerGetter.java +++ b/src/main/java/no/nibio/vips/logic/util/SessionControllerGetter.java @@ -38,7 +38,7 @@ import no.nibio.vips.logic.modules.applefruitmoth.AppleFruitMothBean; public class SessionControllerGetter { private static final String JNDI_PATH = "java:global/VIPSLogic-1.0-SNAPSHOT/"; - +/* public static PointOfInterestBean getPointOfInterestBean() { try @@ -176,4 +176,5 @@ public class SessionControllerGetter { //System.out.println("JNDI-path=" + retVal); return retVal; } +*/ } diff --git a/src/main/java/no/nibio/vips/observationdata/ObservationDataService.java b/src/main/java/no/nibio/vips/observationdata/ObservationDataService.java index 66483d904e11ae8b474e6c71b4ecc4d62285b6d3..d02ba09defb12bf34bf9acd9fd5d9df63783e53f 100755 --- a/src/main/java/no/nibio/vips/observationdata/ObservationDataService.java +++ b/src/main/java/no/nibio/vips/observationdata/ObservationDataService.java @@ -19,16 +19,10 @@ package no.nibio.vips.observationdata; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.node.ObjectNode; import com.ibm.icu.util.ULocale; import com.webcohesion.enunciate.metadata.Facet; import java.io.IOException; -import java.util.Iterator; -import java.util.Map; -import java.util.Map.Entry; -import java.util.ResourceBundle; +import javax.ejb.EJB; import javax.persistence.EntityManager; import javax.persistence.NoResultException; import javax.persistence.PersistenceContext; @@ -39,11 +33,11 @@ import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import javax.ws.rs.core.Context; import javax.ws.rs.core.Response; -import no.nibio.vips.logic.i18n.SessionLocaleUtil; -import no.nibio.vips.logic.util.SessionControllerGetter; +import no.nibio.vips.logic.controller.session.ObservationBean; +import no.nibio.vips.logic.controller.session.UserBean; /** - * @copyright 2016 <a href="http://www.nibio.no/">NIBIO</a> + * @copyright 2016-2022 <a href="http://www.nibio.no/">NIBIO</a> * @author Tor-Einar Skog <tor-einar.skog@nibio.no> */ @Facet("restricted") @@ -52,6 +46,11 @@ public class ObservationDataService { @PersistenceContext(unitName="VIPSLogic-PU") EntityManager em; + @EJB + UserBean userBean; + @EJB + ObservationBean observationBean; + @Context private HttpServletRequest httpServletRequest; @@ -71,9 +70,9 @@ public class ObservationDataService { try { // Try to find schema for given organism/organization - ObservationDataSchema ods = SessionControllerGetter.getObservationBean().getObservationDataSchema(organizationId, organismId); - ULocale locale = new ULocale(SessionControllerGetter.getUserBean().getOrganization(organizationId).getDefaultLocale()); - ods = SessionControllerGetter.getObservationBean().getLocalizedObservationDataSchema(ods, httpServletRequest, locale); + ObservationDataSchema ods = observationBean.getObservationDataSchema(organizationId, organismId); + ULocale locale = new ULocale(userBean.getOrganization(organizationId).getDefaultLocale()); + ods = observationBean.getLocalizedObservationDataSchema(ods, httpServletRequest, locale); return Response.ok().entity(ods.getDataSchema()).build(); } diff --git a/src/main/java/no/nibio/web/forms/FormValidator.java b/src/main/java/no/nibio/web/forms/FormValidator.java index 8490ea6ea723986c40a038ba06f47bfb5564d529..ee267cfac0b53d964b1993f9bd4e05e0bedc27bc 100755 --- a/src/main/java/no/nibio/web/forms/FormValidator.java +++ b/src/main/java/no/nibio/web/forms/FormValidator.java @@ -37,11 +37,12 @@ import java.util.List; import java.util.Map; import java.util.MissingResourceException; import java.util.ResourceBundle; +import javax.ejb.EJB; import javax.servlet.ServletContext; import javax.servlet.http.HttpServletRequest; import no.nibio.vips.logic.authenticate.PasswordValidationException; +import no.nibio.vips.logic.controller.session.UserBean; import no.nibio.vips.logic.i18n.SessionLocaleUtil; -import no.nibio.vips.logic.util.SessionControllerGetter; import org.apache.commons.validator.EmailValidator; /** @@ -52,11 +53,14 @@ import org.apache.commons.validator.EmailValidator; * client side validation). They use the same JSON file for form validation. * Changes in logic server side should be reflected client side. * - * @copyright 2013 <a href="http://www.nibio.no/">NIBIO</a> + * @copyright 2013-2022 <a href="http://www.nibio.no/">NIBIO</a> * @author Tor-Einar Skog <tor-einar.skog@nibio.no> */ public class FormValidator { + @EJB + static UserBean userBean; + public static String RELATION_TYPE_EQUALS = "EQUALS"; public static String RELATION_TYPE_AFTER = "AFTER"; @@ -229,7 +233,7 @@ public class FormValidator { { try { - SessionControllerGetter.getUserBean().isPasswordValid(field.getWebValue(), ULocale.forLocale(resourceBundle.getLocale())); + userBean.isPasswordValid(field.getWebValue(), ULocale.forLocale(resourceBundle.getLocale())); } catch(PasswordValidationException ex) { diff --git a/src/main/webapp/test/testbatch.jsp b/src/main/webapp/test/testbatch.jsp index f18b45e9dcc8edb8412c8fd2c72b0cc61f038c63..76dea8f5f811f5bafacdd0a9b63ff28badecc4ac 100755 --- a/src/main/webapp/test/testbatch.jsp +++ b/src/main/webapp/test/testbatch.jsp @@ -16,7 +16,7 @@ <%@page import="no.nibio.vips.logic.util.SessionControllerGetter"%> <% ForecastBean forecastBean = SessionControllerGetter.getForecastBean(); - UserBean userBean = SessionControllerGetter.getUserBean(); + UserBean userBean = userBean; Organization organization = userBean.getOrganization(2); // NIBIO plantehelse Calendar cal = Calendar.getInstance(); cal.set(Calendar.MONTH, Calendar.JUNE); @@ -43,7 +43,7 @@ %> <ul> <% - for(Organization org : SessionControllerGetter.getUserBean().getOrganizations()) + for(Organization org : userBean.getOrganizations()) { List<ForecastConfiguration> currentForecastConfigurations = SessionControllerGetter.getForecastBean().getForecastConfigurationsValidAtTime(org, SystemTime.getSystemTime()); for(ForecastConfiguration forecastConfiguration:currentForecastConfigurations) diff --git a/src/test/java/no/nibio/vips/logic/messaging/UniversalMessagingTest.java b/src/test/java/no/nibio/vips/logic/messaging/UniversalMessagingTest.java index 553e67bfccdbc986ee6eba939620ab285c41dc35..abaca8508ee6774b253a8428068bb6ff76f26dec 100755 --- a/src/test/java/no/nibio/vips/logic/messaging/UniversalMessagingTest.java +++ b/src/test/java/no/nibio/vips/logic/messaging/UniversalMessagingTest.java @@ -133,7 +133,7 @@ public class UniversalMessagingTest { } um.setDistributionList(rList); - ResteasyClient client = new ResteasyClientBuilder().build(); + ResteasyClient client = (ResteasyClient) ResteasyClientBuilder.newClient(); //client.register(new RESTAuthenticator("user", "userPass")); client.register(new RESTAuthenticator("VIPSLogic", "plmoknijbuhv000")); //ResteasyWebTarget target = client.target("http://kart13utv.ad.skogoglandskap.no:8080");