From 0852eeb6375086915a6ce6f0de7d1e283d3f6c7a Mon Sep 17 00:00:00 2001 From: Tor-Einar Skog <tor-einar.skog@bioforsk.no> Date: Thu, 21 Nov 2013 14:26:58 +0100 Subject: [PATCH] Added fecting of forecastconfiguration ++ --- .../vips/logic/VIPSLogicApplication.java | 1 + .../vips/logic/entity/ForecastResult.java | 19 +++++++++++- .../model/ForecastConfiguration.java | 8 ++--- .../vips/logic/service/LogicService.java | 29 ++++++++++++++++++ .../vips/logic/session/ForecastBean.java | 30 +++++++++++++++++-- 5 files changed, 79 insertions(+), 8 deletions(-) diff --git a/src/main/java/no/bioforsk/vips/logic/VIPSLogicApplication.java b/src/main/java/no/bioforsk/vips/logic/VIPSLogicApplication.java index 75ece71e..342d21df 100644 --- a/src/main/java/no/bioforsk/vips/logic/VIPSLogicApplication.java +++ b/src/main/java/no/bioforsk/vips/logic/VIPSLogicApplication.java @@ -36,6 +36,7 @@ public class VIPSLogicApplication extends Application * given list with all resources defined in the project. */ private void addRestResourceClasses(Set<Class<?>> resources) { + resources.add(no.bioforsk.vips.core.service.ModelResource.class); resources.add(no.bioforsk.vips.coremanager.service.ManagerResource.class); resources.add(no.bioforsk.vips.logic.service.LogicService.class); diff --git a/src/main/java/no/bioforsk/vips/logic/entity/ForecastResult.java b/src/main/java/no/bioforsk/vips/logic/entity/ForecastResult.java index 9d8fd7dd..651f6820 100644 --- a/src/main/java/no/bioforsk/vips/logic/entity/ForecastResult.java +++ b/src/main/java/no/bioforsk/vips/logic/entity/ForecastResult.java @@ -15,13 +15,13 @@ import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.NamedQueries; import javax.persistence.NamedQuery; -import javax.persistence.OrderBy; import javax.persistence.Table; import javax.persistence.Temporal; import javax.persistence.TemporalType; import javax.persistence.Transient; import javax.xml.bind.annotation.XmlRootElement; import no.bioforsk.vips.entity.Result; +import no.bioforsk.vips.logic.scheduling.model.ForecastConfiguration; import org.codehaus.jackson.annotate.JsonIgnore; import org.codehaus.jackson.annotate.JsonProperty; import org.codehaus.jackson.map.ObjectMapper; @@ -37,6 +37,7 @@ import org.codehaus.jackson.type.TypeReference; @NamedQueries({ @NamedQuery(name = "ForecastResult.findAll", query = "SELECT f FROM ForecastResult f ORDER BY f.resultValidTime ASC"), @NamedQuery(name = "ForecastResult.findByForecastResultId", query = "SELECT f FROM ForecastResult f WHERE f.forecastResultId = :forecastResultId ORDER BY f.resultValidTime ASC"), + @NamedQuery(name = "ForecastResult.findByForecastConfigurationId", query = "SELECT f FROM ForecastResult f WHERE f.forecastConfigurationId = :forecastConfigurationId ORDER BY f.resultValidTime ASC"), @NamedQuery(name = "ForecastResult.findByResultValidTime", query = "SELECT f FROM ForecastResult f WHERE f.resultValidTime = :resultValidTime ORDER BY f.resultValidTime ASC"), @NamedQuery(name = "ForecastResult.findByWarningStatus", query = "SELECT f FROM ForecastResult f WHERE f.warningStatus = :warningStatus ORDER BY f.resultValidTime ASC")}) public class ForecastResult implements Serializable, Comparable { @@ -53,6 +54,8 @@ public class ForecastResult implements Serializable, Comparable { private Integer warningStatus; @Column(name = "all_values") private String allValues; + @Column(name = "forecast_configuration_id") + private ForecastConfiguration forecastConfigurationId; public ForecastResult() { } @@ -170,4 +173,18 @@ public class ForecastResult implements Serializable, Comparable { { return this.getResultValidTime().compareTo(other.getResultValidTime()); } + + /** + * @return the forecastConfigurationId + */ + public ForecastConfiguration getForecastConfigurationId() { + return forecastConfigurationId; + } + + /** + * @param forecastConfigurationId the forecastConfigurationId to set + */ + public void setForecastConfigurationId(ForecastConfiguration forecastConfigurationId) { + this.forecastConfigurationId = forecastConfigurationId; + } } diff --git a/src/main/java/no/bioforsk/vips/logic/scheduling/model/ForecastConfiguration.java b/src/main/java/no/bioforsk/vips/logic/scheduling/model/ForecastConfiguration.java index 40646b90..8d56546a 100644 --- a/src/main/java/no/bioforsk/vips/logic/scheduling/model/ForecastConfiguration.java +++ b/src/main/java/no/bioforsk/vips/logic/scheduling/model/ForecastConfiguration.java @@ -46,7 +46,7 @@ public class ForecastConfiguration implements Serializable { @GeneratedValue(strategy = GenerationType.IDENTITY) @Basic(optional = false) @Column(name = "forecast_configuration_id") - private Integer forecastConfigurationId; + private Long forecastConfigurationId; @Size(max = 10) @Column(name = "model_id") private String modelId; @@ -65,15 +65,15 @@ public class ForecastConfiguration implements Serializable { public ForecastConfiguration() { } - public ForecastConfiguration(Integer forecastConfigurationId) { + public ForecastConfiguration(Long forecastConfigurationId) { this.forecastConfigurationId = forecastConfigurationId; } - public Integer getForecastConfigurationId() { + public Long getForecastConfigurationId() { return forecastConfigurationId; } - public void setForecastConfigurationId(Integer forecastConfigurationId) { + public void setForecastConfigurationId(Long forecastConfigurationId) { this.forecastConfigurationId = forecastConfigurationId; } diff --git a/src/main/java/no/bioforsk/vips/logic/service/LogicService.java b/src/main/java/no/bioforsk/vips/logic/service/LogicService.java index 6fef3d8f..8eea7117 100644 --- a/src/main/java/no/bioforsk/vips/logic/service/LogicService.java +++ b/src/main/java/no/bioforsk/vips/logic/service/LogicService.java @@ -50,6 +50,25 @@ public class LogicService { return Response.ok().entity(results).build(); } + /** + * Returns the requested forecast configuration + * @param forecastConfigurationId + * @return + */ + @GET + @Path("forecastconfigurations/{forecastConfigurationId}") + @Produces("application/json;charset=UTF-8") + public Response getForecastConfiguration(@PathParam("forecastConfigurationId") Long forecastConfigurationId) + { + ForecastConfiguration forecastConfiguration = SessionControllerGetter.getForecastBean().getForecastConfiguration(forecastConfigurationId); + return Response.ok().entity(forecastConfiguration).build(); + } + + /** + * Returns a list of forecasts for given organization + * @param organizationId + * @return + */ @GET @Path("organizationforecastconfigurations/{organizationId}") @Produces("application/json;charset=UTF-8") @@ -73,6 +92,16 @@ public class LogicService { return Response.ok().entity(forecasts).build(); } + + + @GET + @Path("blah") + @Produces("text/plain;charset=UTF-8") + public Response test() + { + return Response.ok().entity("Blah").build(); + } + private ManagerResource getManagerResource() { Client client = ClientBuilder.newClient(); diff --git a/src/main/java/no/bioforsk/vips/logic/session/ForecastBean.java b/src/main/java/no/bioforsk/vips/logic/session/ForecastBean.java index dd557a34..d4669911 100644 --- a/src/main/java/no/bioforsk/vips/logic/session/ForecastBean.java +++ b/src/main/java/no/bioforsk/vips/logic/session/ForecastBean.java @@ -18,22 +18,46 @@ public class ForecastBean { @PersistenceContext(unitName="VIPSLogic-PU") EntityManager em; + /** + * Returns all forecast results. TODO: put out of use! + * @return + */ public List<ForecastResult> getForecastResults() { return em.createNamedQuery("ForecastResult.findAll").getResultList(); } - public List<ForecastResult> getForecastResults(Long forecastResultId) + public List<ForecastResult> getForecastResults(Long forecastConfigurationId) { - Query q = em.createNamedQuery("ForecastResult.findByForecastResultId", ForecastResult.class); - q.setParameter("forecastResultId", forecastResultId); + ForecastConfiguration config = this.getForecastConfiguration(forecastConfigurationId); + Query q = em.createNamedQuery("ForecastResult.findByForecastConfigurationId"); + q.setParameter("forecastConfigurationId", config); return q.getResultList(); + } + + + /** + * Get all forecast configurations for one user. + * TODO: Should be season based, or possibly based on start/stop date + * @param userId + * @return + */ public List<ForecastConfiguration> getForecastConfigurationsForUser(Integer userId) { Query q = em.createNamedQuery("ForecastConfiguration.findByVipsCoreUserId"); q.setParameter("vipsCoreUserId", userId); return q.getResultList(); } + + /** + * Fetches one specific forecast configuration + * @param forecastConfigurationId + * @return + */ + public ForecastConfiguration getForecastConfiguration(Long forecastConfigurationId) + { + return em.find(ForecastConfiguration.class, forecastConfigurationId); + } } -- GitLab