diff --git a/src/main/java/no/bioforsk/vips/logic/VIPSLogicApplication.java b/src/main/java/no/bioforsk/vips/logic/VIPSLogicApplication.java index 75ece71eb439f7f22f63d60de434223536477f9b..342d21df3b3f68e6a58b0f68dbea03cc71b33e73 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 9d8fd7ddec2dc28398acc59efd3a477c162819c4..651f682041c098f36c330b6ad1dd31f84c6db27c 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 40646b90893535f40143302b65a0bde19f0e13db..8d56546aba6c4e2388c1c6c2f4257eefcf4b5332 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 6fef3d8f6d902a8405b310f60349165b18211fed..8eea7117fa4a4ca7665f056f29b985634748edf5 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 dd557a347f7b9c207fb59579fcba0e864aa61b11..d4669911ea30fe7cb3861b213aeb396d29d0e4f6 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); + } }