Skip to content
Snippets Groups Projects
Commit c0ca5a11 authored by Tor-Einar Skog's avatar Tor-Einar Skog
Browse files

Added date filter for forecast configuration service. Removed obsolete help...

Added date filter for forecast configuration service. Removed obsolete help file servlet reference in web.xml
parent 08625934
Branches
Tags
No related merge requests found
......@@ -28,7 +28,6 @@ import java.util.Arrays;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
......
......@@ -171,6 +171,16 @@ public class ForecastBean {
return q.getResultList();
}
public List<ForecastConfiguration> getForecastConfigurationsForUserAndDate(Integer userId, Date from, Date to)
{
VipsLogicUser user = em.find(VipsLogicUser.class, userId);
Query q = em.createNamedQuery("ForecastConfiguration.findByVipsLogicUserIdAndDate");
q.setParameter("vipsLogicUserId", user);
q.setParameter("from", from);
q.setParameter("to", to);
return q.getResultList();
}
public List<ForecastConfiguration> getForecastConfigurationsForUserAndCrops(Integer userId, List<Integer> cropOrganismIds)
{
VipsLogicUser user = em.find(VipsLogicUser.class, userId);
......@@ -179,6 +189,17 @@ public class ForecastBean {
q.setParameter("cropOrganismIds", cropOrganismIds);
return q.getResultList();
}
public List<ForecastConfiguration> getForecastConfigurationsForUserAndCropsAndDate(Integer userId, List<Integer> cropOrganismIds, Date from, Date to)
{
VipsLogicUser user = em.find(VipsLogicUser.class, userId);
Query q = em.createNamedQuery("ForecastConfiguration.findByVipsLogicUserIdAndCropOrganismIdsAndDate");
q.setParameter("vipsLogicUserId", user);
q.setParameter("cropOrganismIds", cropOrganismIds);
q.setParameter("from", from);
q.setParameter("to", to);
return q.getResultList();
}
/**
* Returns _ALL_ forecasts. Not for the faint hearted
......
......@@ -61,11 +61,12 @@ import javax.persistence.Transient;
@NamedQuery(name = "ForecastConfiguration.findActiveAtDate", query = "SELECT f FROM ForecastConfiguration f WHERE f.dateStart <= :currentDate AND f.dateEnd >= :currentDate"),
@NamedQuery(name = "ForecastConfiguration.findByLocationPointOfInterestId", query = "SELECT f FROM ForecastConfiguration f WHERE f.locationPointOfInterestId = :locationPointOfInterestId"),
@NamedQuery(name = "ForecastConfiguration.findByVipsLogicUserId", query = "SELECT f FROM ForecastConfiguration f WHERE f.vipsLogicUserId = :vipsLogicUserId"),
@NamedQuery(name = "ForecastConfiguration.findByVipsLogicUserIdAndDate", query = "SELECT f FROM ForecastConfiguration f WHERE f.vipsLogicUserId = :vipsLogicUserId AND f.dateStart <= :to AND f.dateEnd >= :from" ),
@NamedQuery(name = "ForecastConfiguration.findByVipsLogicUserIdAndCropOrganismId", query = "SELECT f FROM ForecastConfiguration f WHERE f.vipsLogicUserId = :vipsLogicUserId AND f.cropOrganismId.organismId IN (:cropOrganismIds)"),
@NamedQuery(name = "ForecastConfiguration.findByVipsLogicUserIdAndCropOrganismIdsAndDate", query = "SELECT f FROM ForecastConfiguration f WHERE f.vipsLogicUserId = :vipsLogicUserId AND f.cropOrganismId.organismId IN (:cropOrganismIds) AND f.dateStart <= :to AND f.dateEnd >= :from"),
@NamedQuery(name = "ForecastConfiguration.findByVipsLogicUserIds", query = "SELECT f FROM ForecastConfiguration f WHERE f.vipsLogicUserId IN (:vipsLogicUserIds)"),
@NamedQuery(name = "ForecastConfiguration.findByVipsLogicUserIdsAndModelIds", query = "SELECT f FROM ForecastConfiguration f WHERE f.vipsLogicUserId IN (:vipsLogicUserIds) AND f.modelId IN (:modelIds)"),
@NamedQuery(name = "ForecastConfiguration.findByVipsLogicUserIdsAndModelIdsAndDate", query = "SELECT f FROM ForecastConfiguration f WHERE f.vipsLogicUserId IN (:vipsLogicUserIds) AND f.modelId IN (:modelIds) AND f.dateStart <= :to AND f.dateEnd >= :from")
})
@NamedQuery(name = "ForecastConfiguration.findByVipsLogicUserIdsAndModelIdsAndDate", query = "SELECT f FROM ForecastConfiguration f WHERE f.vipsLogicUserId IN (:vipsLogicUserIds) AND f.modelId IN (:modelIds) AND f.dateStart <= :to AND f.dateEnd >= :from")})
public class ForecastConfiguration implements Serializable, Comparable {
@OneToMany(cascade = CascadeType.ALL, mappedBy = "forecastConfiguration", fetch = FetchType.EAGER)
private Set<ForecastModelConfiguration> forecastModelConfigurationSet;
......
......@@ -21,10 +21,10 @@ package no.bioforsk.vips.logic.service;
import com.ibm.icu.util.ULocale;
import de.micromata.opengis.kml.v_2_2_0.Kml;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.Map;
......@@ -130,18 +130,32 @@ public class LogicService {
@Produces("application/json;charset=UTF-8")
public Response getForecastConfigurationsForOrganization(
@PathParam("organizationId") Integer organizationId,
@QueryParam("cropOrganismId") List<Integer> cropOrganismIds)
@QueryParam("cropOrganismId") List<Integer> cropOrganismIds,
@QueryParam("from") Date from,
@QueryParam("to") Date to
)
{
if(from == null || to == null)
{
to = SystemTime.getSystemTime();
Calendar cal = Calendar.getInstance();
cal.setTime(to);
cal.add(Calendar.MONTH, -2);
from = cal.getTime();
}
// First: Get all users for organization
List<VipsLogicUser> organizationUsers = SessionControllerGetter.getUserBean().getUsersByOrganization(organizationId);
// Then: Get forecasts for these users, collate and return
List<ForecastConfiguration> forecasts = new ArrayList<>();
for(VipsLogicUser user:organizationUsers)
{
Integer userId = user.getUserId();
List<ForecastConfiguration> result = cropOrganismIds != null && ! cropOrganismIds.isEmpty() ?
SessionControllerGetter.getForecastBean().getForecastConfigurationsForUserAndCrops(userId,cropOrganismIds)
: SessionControllerGetter.getForecastBean().getForecastConfigurationsForUser(userId);
SessionControllerGetter.getForecastBean().getForecastConfigurationsForUserAndCropsAndDate(userId,cropOrganismIds, from, to)
: SessionControllerGetter.getForecastBean().getForecastConfigurationsForUserAndDate(userId, from, to);
if(forecasts == null)
forecasts = result;
else
......
......@@ -63,10 +63,6 @@
<servlet-name>ObservationServlet</servlet-name>
<servlet-class>no.bioforsk.vips.logic.controller.servlet.ObservationController</servlet-class>
</servlet>
<servlet>
<servlet-name>HelpFileServlet</servlet-name>
<servlet-class>no.bioforsk.vips.logic.controller.servlet.HelpFileServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>PointOfInterestController</servlet-name>
<url-pattern>/poi/*</url-pattern>
......@@ -114,10 +110,6 @@
<servlet-name>ObservationServlet</servlet-name>
<url-pattern>/observation</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>HelpFileServlet</servlet-name>
<url-pattern>/help</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment