Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision
  • Phytophthoraregistrering-VIPSUTV-735
  • UpdateGrovfor
  • VIPSInSchweiz
  • addIsPrivateToPOI-VIPSUTV-767
  • bugfix/vipsutv-706-observation-without-poi
  • develop
  • feature/time-series
  • feature/time-series-in-vipsweb
  • feature/upgrade-openlayers
  • feature/vipsutv-1047-timeseries
  • feature/vipsutv-405-observation-time-series
  • feature/vipsutv-710-download-excel
  • feature/vipsutv-737-map-module
  • fix/ensure-supported-locale
  • forecast-gridweather-option-vipsutv-610
  • freemarkertest
  • jakartaee-10
  • master
  • renovate-updates
  • renovate/no.nibio.vips-vipscommon-3.x
  • renovate/org.apache.commons-commons-csv-1.x
  • renovate/org.apache.poi-poi-5.x
  • renovate/org.apache.poi-poi-ooxml-5.x
  • renovate/org.flywaydb-flyway-core-11.x
  • renovate/org.flywaydb-flyway-database-postgresql-11.x
  • renovate/org.hibernate-hibernate-core-6.x
  • renovate/org.hibernate.orm-hibernate-spatial-6.x
  • renovate/org.postgresql-postgresql-42.x
  • renovate/selenium-4.x
  • revert-5e539475
  • revert-63b94469
  • revert-df8d2a9d
  • wildfly-34
  • Tag-Phenology-V3
34 results

Target

Select target project
  • VIPS/VIPSLogic
1 result
Select Git revision
  • Phytophthoraregistrering-VIPSUTV-735
  • UpdateGrovfor
  • VIPSInSchweiz
  • addIsPrivateToPOI-VIPSUTV-767
  • bugfix/vipsutv-706-observation-without-poi
  • develop
  • feature/time-series
  • feature/time-series-in-vipsweb
  • feature/upgrade-openlayers
  • feature/vipsutv-1047-timeseries
  • feature/vipsutv-405-observation-time-series
  • feature/vipsutv-710-download-excel
  • feature/vipsutv-737-map-module
  • fix/ensure-supported-locale
  • forecast-gridweather-option-vipsutv-610
  • freemarkertest
  • jakartaee-10
  • master
  • renovate-updates
  • renovate/no.nibio.vips-vipscommon-3.x
  • renovate/org.apache.commons-commons-csv-1.x
  • renovate/org.apache.poi-poi-5.x
  • renovate/org.apache.poi-poi-ooxml-5.x
  • renovate/org.flywaydb-flyway-core-11.x
  • renovate/org.flywaydb-flyway-database-postgresql-11.x
  • renovate/org.hibernate-hibernate-core-6.x
  • renovate/org.hibernate.orm-hibernate-spatial-6.x
  • renovate/org.postgresql-postgresql-42.x
  • renovate/selenium-4.x
  • revert-5e539475
  • revert-63b94469
  • revert-df8d2a9d
  • wildfly-34
  • Tag-Phenology-V3
34 results
Show changes
Commits on Source (233)
Showing
with 582 additions and 1176 deletions
......@@ -11,3 +11,4 @@ classes/
selenium/.pytest_cache
selenium/.venv
selenium/tests/__pycache__
selenium/.env
......@@ -65,8 +65,8 @@ RUN echo '<?xml version="1.0" encoding="UTF-8"?>\
<resource-root path="postgis-jdbc-${POSTGIS_VERSION}.jar"/>\
</resources>\
<dependencies>\
<module name="javax.api"/>\
<module name="javax.transaction.api"/>\
<module name="jakarta.api"/>\
<module name="jakarta.transaction.api"/>\
</dependencies>\
</module>' > ${JBOSS_HOME}/modules/org/postgresql/main/module.xml
RUN cp /root/.m2/repository/org/postgresql/postgresql/${POSTGRES_VERSION}/postgresql-${POSTGRES_VERSION}.jar ${JBOSS_HOME}/modules/org/postgresql/main
......
This diff is collapsed.
......@@ -31,7 +31,7 @@
<exclude pattern="uk.**"/>
<exclude pattern="it.**"/>
<exclude pattern="antlr.**"/>
<exclude pattern="javax.**"/>
<exclude pattern="jakarta.**"/>
</api-classes>
<facets>
<exclude name="restricted"/>
......
......@@ -27,6 +27,6 @@ Any value defined here will override the pom.xml file value but is only applicab
<org-netbeans-modules-projectapi.jsf_2e_language>Facelets</org-netbeans-modules-projectapi.jsf_2e_language>
<netbeans.compile.on.save>none</netbeans.compile.on.save>
<org-netbeans-modules-maven-j2ee.netbeans_2e_hint_2e_deploy_2e_server>WildFly</org-netbeans-modules-maven-j2ee.netbeans_2e_hint_2e_deploy_2e_server>
<netbeans.hint.jdkPlatform>JDK_11</netbeans.hint.jdkPlatform>
<netbeans.hint.jdkPlatform>JDK_18</netbeans.hint.jdkPlatform>
</properties>
</project-shared-configuration>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>no.nibio.vips</groupId>
<artifactId>vips-parent-pom</artifactId>
<version>1.1.0</version>
</parent>
<groupId>no.nibio.vips.</groupId>
<artifactId>VIPSLogic</artifactId>
<packaging>war</packaging>
<version>2024.1</version>
<version>2025.1</version>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
......@@ -50,9 +55,13 @@
<name>Unidata Releases</name>
<url>https://artifacts.unidata.ucar.edu/content/repositories/unidata-releases/</url>
</repository>
<repository>
<id>gitlab-maven</id>
<url>https://gitlab.nibio.no/api/v4/projects/401/packages/maven</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
......@@ -62,35 +71,53 @@
<dependency>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-core</artifactId>
<version>10.5.0</version>
<version>11.1.0</version>
</dependency>
<dependency>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-database-postgresql</artifactId>
<version>10.4.1</version>
<version>11.1.0</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<groupId>jakarta.platform</groupId>
<artifactId>jakarta.jakartaee-api</artifactId>
<version>10.0.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>jakarta.persistence</groupId>
<artifactId>jakarta.persistence-api</artifactId>
<version>3.2.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>jakarta.servlet</groupId>
<artifactId>jakarta.servlet-api</artifactId>
<version>6.1.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>jakarta.mail</artifactId>
<version>2.0.1</version>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-client</artifactId>
<version>4.7.9.Final</version>
<version>6.2.11.Final</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-core</artifactId>
<version>4.7.9.Final</version>
<version>6.2.11.Final</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jackson2-provider</artifactId>
<version>4.7.9.Final</version>
<version>6.2.11.Final</version>
<scope>provided</scope>
</dependency>
<dependency>
......@@ -105,9 +132,9 @@
<type>jar</type>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.14</version>
<groupId>org.apache.httpcomponents.client5</groupId>
<artifactId>httpclient5</artifactId>
<version>5.4.1</version>
<type>jar</type>
<scope>provided</scope>
</dependency>
......@@ -153,7 +180,7 @@
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.6.15.Final</version>
<version>6.6.1.Final</version>
<exclusions>
<exclusion>
<groupId>org.dom4j</groupId>
......@@ -162,14 +189,10 @@
</exclusions>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<groupId>org.hibernate.orm</groupId>
<artifactId>hibernate-spatial</artifactId>
<version>5.6.15.Final</version>
<version>6.6.1.Final</version>
<exclusions>
<exclusion>
<artifactId>postgresql</artifactId>
<groupId>postgresql</groupId>
</exclusion>
<exclusion>
<groupId>org.dom4j</groupId>
<artifactId>dom4j</artifactId>
......@@ -180,8 +203,23 @@
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>42.7.1</version>
<scope>provided</scope>
<version>42.7.4</version>
</dependency>
<dependency>
<groupId>net.postgis</groupId>
<artifactId>postgis-jdbc</artifactId>
<version>2024.1.0</version>
</dependency>
<dependency>
<groupId>net.postgis</groupId>
<artifactId>postgis-geometry</artifactId>
<version>2024.1.0</version>
</dependency>
<dependency>
<groupId>io.hypersistence</groupId>
<artifactId>hypersistence-utils-hibernate-63</artifactId>
<version>3.9.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
......@@ -209,26 +247,12 @@
<dependency>
<groupId>no.nibio.vips</groupId>
<artifactId>VIPSCommon</artifactId>
<version>2.0.3-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-web-api</artifactId>
<version>8.0.1</version>
<type>jar</type>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>8.0.1</version>
<type>jar</type>
<scope>provided</scope>
<version>3.0.0</version>
</dependency>
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.32</version>
<version>2.3.34</version>
</dependency>
<dependency>
<groupId>it.sauronsoftware.cron4j</groupId>
......@@ -236,9 +260,9 @@
<version>2.2.5</version>
</dependency>
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.5</version>
<groupId>org.apache.commons</groupId>
<artifactId>commons-fileupload2-jakarta-servlet6</artifactId>
<version>2.0.0-M2</version>
</dependency>
<dependency>
<groupId>com.ibm.icu</groupId>
......@@ -253,7 +277,7 @@
<dependency>
<groupId>com.webcohesion.enunciate</groupId>
<artifactId>enunciate-core-annotations</artifactId>
<version>2.17.1</version>
<version>2.18.1</version>
</dependency>
<dependency>
<groupId>com.bedatadriven</groupId>
......@@ -266,6 +290,21 @@
<version>2.0.11</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>5.3.0</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>5.3.0</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.17.0</version>
</dependency>
</dependencies>
<build>
......@@ -327,13 +366,14 @@
<goal>docs</goal>
</goals>
<configuration>
<docsDir>${project.build.directory}/${project.build.finalName}/public/RESTdocs</docsDir>
<docsDir>
${project.build.directory}/${project.build.finalName}/public/RESTdocs</docsDir>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
</project>
\ No newline at end of file
......@@ -19,8 +19,8 @@
package no.nibio.vips.logic;
import java.util.Set;
import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.Application;
import jakarta.ws.rs.ApplicationPath;
import jakarta.ws.rs.core.Application;
/**
* Responsible for adding REST resources
......@@ -55,9 +55,10 @@ public class VIPSLogicApplication extends Application
resources.add(no.nibio.vips.logic.messaging.sms.SMSHandlingService.class);
resources.add(no.nibio.vips.logic.modules.applefruitmoth.AppleFruitMothService.class);
resources.add(no.nibio.vips.logic.service.ObservationService.class);
resources.add(no.nibio.vips.logic.service.ObservationTimeSeriesService.class);
resources.add(no.nibio.vips.logic.service.ModelFormService.class);
resources.add(no.nibio.vips.logic.service.JacksonConfig.class);
resources.add(no.nibio.vips.logic.entity.helpers.KmlMessageBodyWriter.class);
//resources.add(no.nibio.vips.logic.service.JSONBConfig.class);
//resources.add(no.nibio.vips.coremanager.service.ManagerResourceImpl.class);
}
......
/*
* Copyright (c) 2022 NIBIO <http://www.nibio.no/>.
* Copyright (c) 2022 NIBIO <http://www.nibio.no/>.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General
* Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any
* later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
* details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
* You should have received a copy of the GNU Affero General Public License along with this program. If not, see
* <https://www.gnu.org/licenses/>.
*
*/
......@@ -22,11 +20,16 @@ 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 jakarta.ejb.EJB;
import jakarta.servlet.Filter;
import jakarta.servlet.FilterChain;
import jakarta.servlet.FilterConfig;
import jakarta.servlet.ServletException;
import jakarta.servlet.ServletRequest;
import jakarta.servlet.ServletResponse;
import jakarta.servlet.http.Cookie;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.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;
......@@ -34,79 +37,69 @@ 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-2022 <a href="http://www.nibio.no">NIBIO</a>
* @author Tor-Einar Skog <tor-einar.skog@nibio.no>
*/
public class AuthenticationFilter implements Filter{
public class AuthenticationFilter implements Filter {
@EJB
UserBean userBean;
// The URLs that do not require login
private String[] unprivilegedURLs;
@Override
public void init(FilterConfig filterConfig) throws ServletException {
this.setUnprivilegedURLs(Globals.UNPRIVILEGED_URLS);
}
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
HttpServletRequest httpRequest = (HttpServletRequest)request;
HttpServletRequest httpRequest = (HttpServletRequest) request;
/*
// For debugging
BufferedReader reader = new BufferedReader(new InputStreamReader(request.getInputStream()));
String line;
while((line = reader.readLine()) != null)
{
System.out.println(line);
}*/
if(isUnprivilegedURL(httpRequest))
{
* // For debugging BufferedReader reader = new BufferedReader(new InputStreamReader(request.getInputStream()));
* String line; while((line = reader.readLine()) != null) { System.out.println(line); }
*/
if (isUnprivilegedURL(httpRequest)) {
chain.doFilter(request, response);
//return;
}
else
{
// return;
} else {
// First: Check for session variable
boolean clientAuthenticated = (httpRequest.getSession().getAttribute("user") != null && httpRequest.getSession().getAttribute("user") instanceof VipsLogicUser);
boolean clientAuthenticated = (httpRequest.getSession().getAttribute("user") != null
&& httpRequest.getSession().getAttribute("user") instanceof VipsLogicUser);
// Then for UUID cookie that has not expired
boolean clientRemembered = false;
Cookie remembered = ServletUtil.getCookie(httpRequest, "rememberedUser");
if(remembered != null)
{
if (remembered != null) {
VipsLogicUser user = userBean.findVipsLogicUser(UUID.fromString(remembered.getValue()));
if(user != null)
{
if (user != null) {
httpRequest.getSession().setAttribute("user", user);
clientRemembered = true;
}
}
if(! clientAuthenticated && ! clientRemembered)
{
if (!clientAuthenticated && !clientRemembered) {
String nextPageDirective = "";
if(!httpRequest.getServletPath().equals("/login"))
{
if (!httpRequest.getServletPath().equals("/login")) {
String nextPage = ServletUtil.getFullRequestURI(httpRequest);
nextPageDirective= "?nextPage=" + URLEncoder.encode(nextPage, "UTF-8");
nextPageDirective = "?nextPage=" + URLEncoder.encode(nextPage, "UTF-8");
}
((HttpServletResponse)response).sendRedirect(Globals.PROTOCOL + "://" + ServletUtil.getServerName(httpRequest) + "/login" + nextPageDirective);
}
else
{
((HttpServletResponse) response).sendRedirect(Globals.PROTOCOL + "://"
+ ServletUtil.getServerName(httpRequest) + "/login" + nextPageDirective);
} else {
chain.doFilter(request, response);
}
//return;
// return;
}
}
private boolean isUnprivilegedURL(HttpServletRequest request) {
String path = request.getServletPath();
for (String unprivilegedURL : this.getUnprivilegedURLs())
{
if (path.contains(unprivilegedURL))
{
for (String unprivilegedURL : this.getUnprivilegedURLs()) {
if (path.contains(unprivilegedURL)) {
return true;
}
}
......@@ -115,12 +108,10 @@ public class AuthenticationFilter implements Filter{
@Override
public void destroy() {
}
/**
* @return the upriviligerteURLer
......@@ -136,6 +127,6 @@ public class AuthenticationFilter implements Filter{
this.unprivilegedURLs = unprivilegedURLs;
}
}
......@@ -22,11 +22,11 @@ import java.io.IOException;
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 jakarta.ejb.EJB;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.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;
......@@ -101,7 +101,7 @@ public class CropCategoryController extends HttpServlet {
Integer cropCategoryId = formValidation.getFormField("cropCategoryId").getValueAsInteger();
List<Integer> cropCategoryCropOrganismIds = FormUtil.getIdsFromMultipleSelect(formValidation.getFormField("cropCategoryCropOrganismIds").getWebValues());
CropCategory cropCategory = organismBean.getCropCategory(cropCategoryId);
cropCategory.setCropOrganismIds(cropCategoryCropOrganismIds.toArray(new Integer[cropCategoryCropOrganismIds.size()]));
cropCategory.setCropOrganismIds(cropCategoryCropOrganismIds);
organismBean.storeCropCategory(cropCategory);
response.sendRedirect(new StringBuilder(Globals.PROTOCOL + "://").append(ServletUtil.getServerName(request)).append("/organism/cropcategory?messageKey=cropCategoryUpdated").toString());
......
......@@ -19,10 +19,10 @@
package no.nibio.vips.logic.controller.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
/**
* @copyright 2013 <a href="http://www.nibio.no/">NIBIO</a>
......
......@@ -20,10 +20,10 @@ package no.nibio.vips.logic.controller.servlet;
import java.io.IOException;
import java.util.Enumeration;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
/**
*
......@@ -44,8 +44,8 @@ public class HttpErrorServlet extends HttpServlet {
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
request.setAttribute("message", request.getAttribute("javax.servlet.error.message"));
Integer statusCode = (Integer) request.getAttribute("javax.servlet.error.status_code");
request.setAttribute("message", request.getAttribute("jakarta.servlet.error.message"));
Integer statusCode = (Integer) request.getAttribute("jakarta.servlet.error.status_code");
/**
// Explore the attributes sent to error template
for(Enumeration<String> e = request.getAttributeNames();e.hasMoreElements();)
......
......@@ -18,25 +18,24 @@
package no.nibio.vips.logic.controller.servlet;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import java.math.BigInteger;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.security.SecureRandom;
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 jakarta.ejb.EJB;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.Cookie;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.ws.rs.core.Response;
import com.fasterxml.jackson.databind.ObjectMapper;
import no.nibio.vips.logic.controller.session.UserBean;
import no.nibio.vips.logic.entity.UserAuthenticationType;
import no.nibio.vips.logic.entity.UserUuid;
......@@ -47,26 +46,27 @@ import no.nibio.vips.util.ServletUtil;
/**
* Logs a user in or out
*
* @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 {
//private static final String CLOSE_AND_RELOAD_PARENT = "close_and_reload_parent";
// private static final String CLOSE_AND_RELOAD_PARENT = "close_and_reload_parent";
private static final String RETURN_UUID_PARAMETER_NAME = "returnUUID";
@EJB
UserBean userBean;
/**
* Processes requests for both HTTP
* <code>GET</code> and
* <code>POST</code> methods.
*
* @param request servlet request
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
* @throws IOException if an I/O error occurs
*/
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
......@@ -75,146 +75,124 @@ public class LoginController extends HttpServlet {
request.setAttribute("nextPage", nextPage);
// We remove the session attribute, so it doesn't stick
request.getSession().removeAttribute("nextPage");
Boolean returnUUID = getReturnUUID(request);
request.setAttribute(LoginController.RETURN_UUID_PARAMETER_NAME, returnUUID);
// We remove the session attribute, so it doesn't stick
request.getSession().removeAttribute(LoginController.RETURN_UUID_PARAMETER_NAME);
// A log out request
if(request.getServletPath().contains("logout"))
{
if (request.getServletPath().contains("logout")) {
VipsLogicUser user = request.getSession().getAttribute("user") != null ? (VipsLogicUser) request.getSession().getAttribute("user") : null;
// Make sure we delete the current user and their UUID
userBean.deleteUserUuid(user.getUserUuid());
request.getSession().removeAttribute("user");
// Check if we have a cookie to delete as well
Cookie rememberedUser = ServletUtil.getCookie(request, "rememberedUser");
if(rememberedUser != null)
{
if (rememberedUser != null) {
rememberedUser.setMaxAge(0);
response.addCookie(rememberedUser);
// This is likely duplication(?) - or are there cases where this makes sense?
userBean.deleteUserUuid(UUID.fromString(rememberedUser.getValue()));
}
request.setAttribute("messageKey","logoutsuccess");
request.setAttribute("messageKey", "logoutsuccess");
request.getRequestDispatcher("/login.ftl").forward(request, response);
}
// A login attempt
else if(request.getServletPath().contains("loginsubmit"))
{
else if (request.getServletPath().contains("loginsubmit")) {
// Which login method?
Integer userAuthenticationTypeId = -1;
try
{
try {
userAuthenticationTypeId = Integer.valueOf(request.getParameter("userAuthenticationTypeId"));
}
// No method found, redirect to form again
catch(NumberFormatException | NullPointerException ex)
{
catch (NumberFormatException | NullPointerException ex) {
request.getRequestDispatcher("/login.ftl").forward(request, response);
return;
}
// Standard username/password login
if(userAuthenticationTypeId.equals(UserAuthenticationType.TYPE_PASSWORD))
{
if (userAuthenticationTypeId.equals(UserAuthenticationType.TYPE_PASSWORD)) {
String username = request.getParameter("username");
String password = request.getParameter("password");
try (PrintWriter out = response.getWriter()) {
Map<String,String> creds = new HashMap();
Map<String, String> creds = new HashMap<>();
creds.put("username", username);
creds.put("password", password);
// Check user credentials
VipsLogicUser user = userBean.authenticateUser(creds);
if(user != null && user.getUserStatusId().equals(Globals.USER_STATUS_APPROVED))
{
if (user != null && user.getUserStatusId().equals(Globals.USER_STATUS_APPROVED)) {
UserUuid uUUID = userBean.createAndPersistUserUuid(user);
user.setUserUuid(uUUID.getUserUuidPK().getUserUuid());
request.getSession().setAttribute("user", user);
UUID uUUID = this.handleRememberUser(request, response, user, returnUUID);
if(returnUUID)
{
nextPage += (nextPage.contains("?") ? "&": "?") + "returnUUID=" + uUUID.toString();
this.handleRememberUser(request, response, user, returnUUID);
if (returnUUID) {
nextPage += (nextPage.contains("?") ? "&" : "?") + "returnUUID=" + uUUID.getUserUuidPK().getUserUuid().toString();
}
if(nextPage.indexOf(Globals.PROTOCOL) == 0)
{
//System.out.println("nextPage=" + nextPage);
if (nextPage.indexOf(Globals.PROTOCOL) == 0) {
// System.out.println("nextPage=" + nextPage);
response.sendRedirect(nextPage);
}
else
{
} else {
response.sendRedirect(new StringBuilder(Globals.PROTOCOL + "://").append(ServletUtil.getServerName(request)).append(nextPage).toString());
}
}
else if(user != null && user.getUserStatusId().equals(Globals.USER_STATUS_AWAITING_EMAIL_VERIFICATION))
{
} else if (user != null && user.getUserStatusId().equals(Globals.USER_STATUS_AWAITING_EMAIL_VERIFICATION)) {
request.setAttribute("errorMessageKey", "emailNotVerified");
request.getRequestDispatcher("/login.ftl").forward(request, response);
}
else if(user != null && user.getUserStatusId().equals(Globals.USER_STATUS_AWAITING_APPROVAL))
{
} else if (user != null && user.getUserStatusId().equals(Globals.USER_STATUS_AWAITING_APPROVAL)) {
request.setAttribute("errorMessageKey", "pleaseAwaitApproval");
request.getRequestDispatcher("/login.ftl").forward(request, response);
}
else
{
} else {
request.setAttribute("errorMessageKey", "invalidcredentials");
request.getRequestDispatcher("/login.ftl").forward(request, response);
}
}
}
// Authentication method not recognized, redirect to standard form
else
{
else {
request.getRequestDispatcher("/login.ftl").forward(request, response);
}
}
// Login from a remote resource. Return UUID
else if(request.getServletPath().contains("remotelogin"))
{
// Login from a remote resource, e.g. an app. Return UUID
else if (request.getServletPath().contains("remotelogin")) {
String username = request.getParameter("username");
String password = request.getParameter("password");
Map<String,String> creds = new HashMap();
Map<String, String> creds = new HashMap<>();
creds.put("username", username);
creds.put("password", password);
VipsLogicUser user = userBean.authenticateUser(creds);
PrintWriter out = response.getWriter();
if(user != null && user.getUserStatusId().equals(Globals.USER_STATUS_APPROVED))
{
if (user != null && user.getUserStatusId().equals(Globals.USER_STATUS_APPROVED)) {
request.getSession().setAttribute("user", user);
UUID uUUID = this.handleRememberUser(request, response, user, returnUUID);
UserUuid uUUID = userBean.createAndPersistUserUuid(user);
user.setUserUuid(uUUID.getUserUuidPK().getUserUuid());
this.handleRememberUser(request, response, user, returnUUID);
// All is well, return object
ObjectMapper mapper = new ObjectMapper();
user.setUserUuid(uUUID);
mapper.writeValue(out,user);
mapper.writeValue(out, user);
out.close();
}
else
{
} else {
response.setStatus(Response.Status.UNAUTHORIZED.getStatusCode());
if(user != null && user.getUserStatusId().equals(Globals.USER_STATUS_AWAITING_EMAIL_VERIFICATION))
{
if (user != null && user.getUserStatusId().equals(Globals.USER_STATUS_AWAITING_EMAIL_VERIFICATION)) {
out.print(SessionLocaleUtil.getI18nText(request, "emailNotVerified"));
}
else if(user != null && user.getUserStatusId().equals(Globals.USER_STATUS_AWAITING_APPROVAL))
{
} else if (user != null && user.getUserStatusId().equals(Globals.USER_STATUS_AWAITING_APPROVAL)) {
out.print(SessionLocaleUtil.getI18nText(request, "pleaseAwaitApproval"));
request.getRequestDispatcher("/login.ftl").forward(request, response);
}
else
{
} else {
out.print(SessionLocaleUtil.getI18nText(request, "invalidcredentials"));
}
}
}
// No login attempt. Show form
else
{
if(request.getParameter("nextPage") != null)
{
else {
if (request.getParameter("nextPage") != null) {
request.setAttribute("checkRemember", request.getParameter("nextPage").indexOf(Globals.PROTOCOL) == 0);
}
request.setAttribute("messageKey", request.getParameter("messageKey"));
......@@ -222,91 +200,81 @@ public class LoginController extends HttpServlet {
request.getRequestDispatcher("/login.ftl").forward(request, response);
}
}
/**
* Utility method (hiding noisy code)
*
* @param request
* @return
* @throws UnsupportedEncodingException
* @throws UnsupportedEncodingException
*/
private String getNextPage(HttpServletRequest request) throws UnsupportedEncodingException
{
String nextPage = request.getParameter("nextPage") != null ?
request.getParameter("nextPage")
: request.getSession().getAttribute("nextPage") != null ?
URLDecoder.decode((String)request.getSession().getAttribute("nextPage"),"UTF-8")
:null;
if(nextPage == null)
{
nextPage="/";
private String getNextPage(HttpServletRequest request) throws UnsupportedEncodingException {
String nextPage = request.getParameter("nextPage") != null ? request.getParameter("nextPage")
: request.getSession().getAttribute("nextPage") != null ? URLDecoder.decode((String) request.getSession().getAttribute("nextPage"), "UTF-8")
: null;
if (nextPage == null) {
nextPage = "/";
}
return nextPage;
}
/**
* Should the generated UUID be returned to login client?
*
* @param request
* @return
* @return
*/
private Boolean getReturnUUID(HttpServletRequest request)
{
return request.getParameter(LoginController.RETURN_UUID_PARAMETER_NAME) != null ?
request.getParameter(LoginController.RETURN_UUID_PARAMETER_NAME).equals("true")
: request.getSession().getAttribute(LoginController.RETURN_UUID_PARAMETER_NAME) != null ?
(Boolean) request.getSession().getAttribute(LoginController.RETURN_UUID_PARAMETER_NAME)
: false;
private Boolean getReturnUUID(HttpServletRequest request) {
return request.getParameter(LoginController.RETURN_UUID_PARAMETER_NAME) != null ? request.getParameter(LoginController.RETURN_UUID_PARAMETER_NAME).equals("true")
: request.getSession().getAttribute(LoginController.RETURN_UUID_PARAMETER_NAME) != null ? (Boolean) request.getSession().getAttribute(LoginController.RETURN_UUID_PARAMETER_NAME)
: false;
}
/**
*
* @param request
* @param response
* @param user
* @param user the VIPS user
* @param returnUUID has a UUID been requested to be returned to the client?
* @return
*/
private UUID handleRememberUser(HttpServletRequest request, HttpServletResponse response, VipsLogicUser user, Boolean returnUUID)
{
String rememberUser = request.getParameter("rememberUser") != null ?
request.getParameter("rememberUser")
private void handleRememberUser(HttpServletRequest request, HttpServletResponse response, VipsLogicUser user, Boolean returnUUID) {
// This is from the login form, the checkbox that you tick off to save your login
String rememberUser = request.getParameter("rememberUser") != null ? request.getParameter("rememberUser")
: (String) request.getSession().getAttribute("rememberUser");
request.getSession().removeAttribute("rememberUser");
if(returnUUID || (rememberUser != null && rememberUser.equals("on")))
{
UserUuid uUUID = userBean.createAndPersistUserUuid(user);
if(rememberUser != null && rememberUser.equals("on"))
{
Cookie rememberedUser = new Cookie("rememberedUser", uUUID.getUserUuidPK().getUserUuid().toString());
if (returnUUID || (rememberUser != null && rememberUser.equals("on"))) {
if (rememberUser != null && rememberUser.equals("on")) {
Cookie rememberedUser = new Cookie("rememberedUser", user.getUserUuid().toString());
rememberedUser.setPath("/");
rememberedUser.setMaxAge(Globals.DEFAULT_UUID_VALIDITY_DURATION_DAYS * 24 * 60 * 60);
response.addCookie(rememberedUser);
}
return uUUID.getUserUuidPK().getUserUuid();
// return uUUID.getUserUuidPK().getUserUuid();
}
else
{
// Unremember the user both server side and browser side
else {
Cookie rememberedUser = ServletUtil.getCookie(request, "rememberedUser");
if(rememberedUser != null)
{
if (rememberedUser != null) {
rememberedUser.setMaxAge(0);
response.addCookie(rememberedUser);
userBean.deleteUserUuid(UUID.fromString(rememberedUser.getValue()));
}
return null;
// return null;
}
}
// <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
/**
* Handles the HTTP
* <code>GET</code> method.
*
* @param request servlet request
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
* @throws IOException if an I/O error occurs
*/
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
......@@ -318,10 +286,10 @@ public class LoginController extends HttpServlet {
* Handles the HTTP
* <code>POST</code> method.
*
* @param request servlet request
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
* @throws IOException if an I/O error occurs
*/
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
......
......@@ -26,15 +26,15 @@ 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;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import jakarta.ejb.EJB;
import jakarta.persistence.EntityManager;
import jakarta.persistence.NoResultException;
import jakarta.persistence.PersistenceContext;
import jakarta.servlet.ServletContext;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import no.nibio.vips.logic.controller.session.MessageBean;
import no.nibio.vips.logic.controller.session.UserBean;
import no.nibio.vips.logic.entity.Message;
......@@ -51,10 +51,10 @@ import no.nibio.web.forms.FormUtil;
import no.nibio.web.forms.FormValidation;
import no.nibio.web.forms.FormValidationException;
import no.nibio.web.forms.FormValidator;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.commons.fileupload2.core.FileItem;
import org.apache.commons.fileupload2.core.FileUploadException;
import org.apache.commons.fileupload2.core.DiskFileItemFactory;
import org.apache.commons.fileupload2.jakarta.servlet6.JakartaServletFileUpload;
/**
* @copyright 2014-2022 <a href="http://www.nibio.no/">NIBIO</a>
......@@ -226,7 +226,11 @@ public class MessageController extends HttpServlet {
request.setAttribute("allCropCategoryIds", em.createNamedQuery("CropCategory.findByOrganizationId").setParameter("organizationId",user.getOrganizationId().getOrganizationId()).getResultList());
request.getRequestDispatcher("/messageForm.ftl").forward(request, response);
}
catch(NullPointerException | NumberFormatException | NoResultException ex)
catch(NoResultException ex)
{
response.sendError(404, "Message not found");
}
catch(NullPointerException | NumberFormatException ex)
{
response.sendError(500, ExceptionUtil.getStackTrace(ex));
}
......@@ -269,18 +273,10 @@ public class MessageController extends HttpServlet {
{
Map<String,String[]> parameterMap;
List<FileItem> items = null;
if(ServletFileUpload.isMultipartContent(request))
if(JakartaServletFileUpload.isMultipartContent(request))
{
// Create a factory for disk-based file items
DiskFileItemFactory factory = new DiskFileItemFactory();
// Configure a repository (to ensure a secure temp location is used)
ServletContext servletContext = this.getServletConfig().getServletContext();
File repository = (File) servletContext.getAttribute("javax.servlet.context.tempdir");
factory.setRepository(repository);
// Create a new file upload handler
ServletFileUpload upload = new ServletFileUpload(factory);
JakartaServletFileUpload upload = new JakartaServletFileUpload();
// Parse the request
items = upload.parseRequest(request);
......
......@@ -22,13 +22,13 @@ import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
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 jakarta.ejb.EJB;
import jakarta.persistence.EntityManager;
import jakarta.persistence.PersistenceContext;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.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;
......
......@@ -32,14 +32,14 @@ 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;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import jakarta.ejb.EJB;
import jakarta.persistence.EntityManager;
import jakarta.persistence.PersistenceContext;
import jakarta.servlet.ServletContext;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.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;
......@@ -65,10 +65,10 @@ import no.nibio.web.forms.FormUtil;
import no.nibio.web.forms.FormValidation;
import no.nibio.web.forms.FormValidationException;
import no.nibio.web.forms.FormValidator;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.commons.fileupload2.core.FileItem;
import org.apache.commons.fileupload2.core.FileUploadException;
import org.apache.commons.fileupload2.core.DiskFileItemFactory;
import org.apache.commons.fileupload2.jakarta.servlet6.JakartaServletFileUpload;
/**
* @copyright 2014-2022 <a href="http://www.nibio.no/">NIBIO</a>
......@@ -410,18 +410,11 @@ public class ObservationController extends HttpServlet {
{
Map<String,String[]> parameterMap;
List<FileItem> items = null;
if(ServletFileUpload.isMultipartContent(request))
if(JakartaServletFileUpload.isMultipartContent(request))
{
// Create a factory for disk-based file items
DiskFileItemFactory factory = new DiskFileItemFactory();
// Configure a repository (to ensure a secure temp location is used)
ServletContext servletContext = this.getServletConfig().getServletContext();
File repository = (File) servletContext.getAttribute("javax.servlet.context.tempdir");
factory.setRepository(repository);
// Create a new file upload handler
ServletFileUpload upload = new ServletFileUpload(factory);
JakartaServletFileUpload upload = new JakartaServletFileUpload();
// Parse the request
items = upload.parseRequest(request);
......
......@@ -23,13 +23,13 @@ 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 jakarta.ejb.EJB;
import jakarta.persistence.EntityManager;
import jakarta.persistence.PersistenceContext;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.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;
......@@ -377,8 +377,7 @@ public class OrganismController extends HttpServlet {
{
Integer cropOrganismId = formValidation.getFormField("cropOrganismId").getValueAsInteger();
boolean includeAllChildCrops = formValidation.getFormField("includeAllChildCrops").getWebValue() != null;
List<Integer> poTemp = FormUtil.getIdsFromMultipleSelect(formValidation.getFormField("pestOrganismIds").getWebValues());
Integer[] pestOrganismIds = poTemp.toArray(new Integer[poTemp.size()]);
List<Integer> pestOrganismIds = FormUtil.getIdsFromMultipleSelect(formValidation.getFormField("pestOrganismIds").getWebValues());
CropPest cropPest = em.find(CropPest.class, cropOrganismId);
if(cropPest == null)
{
......
......@@ -22,13 +22,14 @@ 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 jakarta.ejb.EJB;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import no.nibio.vips.gis.GISUtil;
import no.nibio.vips.gis.LonLatStringFormatException;
import no.nibio.vips.logic.controller.session.PointOfInterestBean;
import no.nibio.vips.logic.controller.session.UserBean;
import no.nibio.vips.logic.entity.Organization;
import no.nibio.vips.logic.entity.VipsLogicUser;
......@@ -46,6 +47,9 @@ public class OrganizationController extends HttpServlet {
@EJB
UserBean userBean;
@EJB
PointOfInterestBean poiBean;
/**
* Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
......@@ -101,6 +105,7 @@ public class OrganizationController extends HttpServlet {
request.setAttribute("countries", userBean.getCountries());
request.setAttribute("timeZones", TimeZone.getAvailableIDs());
request.setAttribute("organization", organization);
request.setAttribute("gridWeatherDataSources", poiBean.getGridWeatherStationDataSources());
request.getRequestDispatcher("/organizationForm.ftl").forward(request, response);
}
else if(action.equals("organizationFormSubmit"))
......@@ -142,6 +147,11 @@ public class OrganizationController extends HttpServlet {
: new GISUtil().getJtsPointFromString(formValidation.getFormField("defaultMapCenter").getWebValue())
);
organization.setDefaultGridWeatherStationDataSource(
formValidation.getFormField("defaultGridWeatherStationDataSourceId").getValueAsInteger() < 0 ?
null
: poiBean.getWeatherStationDataSource(formValidation.getFormField("defaultGridWeatherStationDataSourceId").getValueAsInteger())
);
organization = userBean.storeOrganization(organization);
response.sendRedirect(
......
......@@ -19,11 +19,11 @@ 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 jakarta.ejb.EJB;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.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;
......
......@@ -27,13 +27,13 @@ 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;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import jakarta.ejb.EJB;
import jakarta.persistence.EntityManager;
import jakarta.persistence.PersistenceContext;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import no.nibio.vips.logic.entity.Country;
import no.nibio.vips.logic.entity.ForecastConfiguration;
import no.nibio.vips.logic.entity.ModelInformation;
......@@ -298,6 +298,8 @@ public class PointOfInterestController extends HttpServlet {
{
weatherStation.setIsForecastLocation(Boolean.TRUE);
}
weatherStation.setIsPrivate(formValidation.getFormField("isPrivate").getWebValue() != null);
Double altitude = 0.0;
Point p2d = formValidation.getFormField("location").getValueAsPointWGS84();
......@@ -657,6 +659,8 @@ public class PointOfInterestController extends HttpServlet {
{
poi.setIsForecastLocation(Boolean.FALSE);
}
poi.setIsPrivate(formValidation.getFormField("isPrivate").getWebValue() != null);
Double altitude = 0.0;
Point p2d = formValidation.getFormField("location").getValueAsPointWGS84();
......