diff --git a/src/main/java/no/bioforsk/vips/logic/VIPSLogicApplication.java b/src/main/java/no/bioforsk/vips/logic/VIPSLogicApplication.java index f2c98be2f194cecf11590ce2570f94426948cd65..75ece71eb439f7f22f63d60de434223536477f9b 100644 --- a/src/main/java/no/bioforsk/vips/logic/VIPSLogicApplication.java +++ b/src/main/java/no/bioforsk/vips/logic/VIPSLogicApplication.java @@ -36,7 +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/PointOfInterestWeatherStation.java b/src/main/java/no/bioforsk/vips/logic/entity/PointOfInterestWeatherStation.java index 489bca986eb241a78043ca11863033f8e6418af8..82da918030950b11aa2b4024a6ab81118ddd38f3 100644 --- a/src/main/java/no/bioforsk/vips/logic/entity/PointOfInterestWeatherStation.java +++ b/src/main/java/no/bioforsk/vips/logic/entity/PointOfInterestWeatherStation.java @@ -13,6 +13,7 @@ import javax.persistence.OneToOne; import javax.persistence.Table; import javax.validation.constraints.Size; import javax.xml.bind.annotation.XmlRootElement; +import org.codehaus.jackson.annotate.JsonIgnore; /** * Extension of {@see PointOfInterest}, with additional info for weather stations @@ -35,6 +36,7 @@ public class PointOfInterestWeatherStation extends PointOfInterest implements Se @JoinColumn(name = "weather_station_data_source_id", referencedColumnName = "weather_station_data_source_id") @ManyToOne private WeatherStationDataSource weatherStationDataSourceId; + @JsonIgnore @JoinColumn(name = "point_of_interest_id", referencedColumnName = "point_of_interest_id", insertable = false, updatable = false) @OneToOne(optional = false) private PointOfInterest pointOfInterest; 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 f127dfcdad74bca388df9a7ffd4c06e3c07b3dff..6fef3d8f6d902a8405b310f60349165b18211fed 100644 --- a/src/main/java/no/bioforsk/vips/logic/service/LogicService.java +++ b/src/main/java/no/bioforsk/vips/logic/service/LogicService.java @@ -1,9 +1,11 @@ package no.bioforsk.vips.logic.service; import java.util.List; +import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.ws.rs.GET; import javax.ws.rs.Path; +import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import javax.ws.rs.client.Client; import javax.ws.rs.client.ClientBuilder; @@ -12,6 +14,7 @@ import javax.ws.rs.core.Context; import javax.ws.rs.core.Response; import no.bioforsk.vips.coremanager.service.ManagerResource; import no.bioforsk.vips.logic.entity.ForecastResult; +import no.bioforsk.vips.logic.scheduling.model.ForecastConfiguration; import no.bioforsk.vips.logic.session.SessionControllerGetter; import org.jboss.resteasy.client.jaxrs.ResteasyWebTarget; import org.jboss.resteasy.spi.HttpRequest; @@ -38,6 +41,37 @@ public class LogicService { return Response.ok().entity(results).build(); } + @GET + @Path("forecastresults/{forecastResultId}") + @Produces("application/json;charset=UTF-8") + public Response getForecastResults(@PathParam("forecastResultId") Long forecastResultId) + { + List<ForecastResult> results = SessionControllerGetter.getForecastBean().getForecastResults(); + return Response.ok().entity(results).build(); + } + + @GET + @Path("organizationforecastconfigurations/{organizationId}") + @Produces("application/json;charset=UTF-8") + public Response getForecastConfigurationsForOrganization(@PathParam("organizationId") Integer organizationId) + { + // First: Get all users for organization + // TODO: Should be authenticated + Response resp = this.getManagerResource().getUsersForOrganization(organizationId); + List<Map> userList = resp.readEntity(List.class); + // Then: Get forecasts for these users, collate and return + List<ForecastConfiguration> forecasts = null; + for(Map user:userList) + { + Integer userId = (Integer) user.get("vipsCoreUserId"); + if(forecasts == null) + forecasts = SessionControllerGetter.getForecastBean().getForecastConfigurationsForUser(userId); + else + forecasts.addAll(SessionControllerGetter.getForecastBean().getForecastConfigurationsForUser(userId)); + } + + return Response.ok().entity(forecasts).build(); + } private ManagerResource getManagerResource() { 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 aab4ed0a162fcc4c618ab9db33300033053c0f61..dd557a347f7b9c207fb59579fcba0e864aa61b11 100644 --- a/src/main/java/no/bioforsk/vips/logic/session/ForecastBean.java +++ b/src/main/java/no/bioforsk/vips/logic/session/ForecastBean.java @@ -4,7 +4,9 @@ import java.util.List; import javax.ejb.Stateless; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; +import javax.persistence.Query; import no.bioforsk.vips.logic.entity.ForecastResult; +import no.bioforsk.vips.logic.scheduling.model.ForecastConfiguration; /** * @copyright 2013 <a href="http://www.bioforsk.no/">Bioforsk</a> @@ -20,4 +22,18 @@ public class ForecastBean { { return em.createNamedQuery("ForecastResult.findAll").getResultList(); } + + public List<ForecastResult> getForecastResults(Long forecastResultId) + { + Query q = em.createNamedQuery("ForecastResult.findByForecastResultId", ForecastResult.class); + q.setParameter("forecastResultId", forecastResultId); + return q.getResultList(); + } + + public List<ForecastConfiguration> getForecastConfigurationsForUser(Integer userId) + { + Query q = em.createNamedQuery("ForecastConfiguration.findByVipsCoreUserId"); + q.setParameter("vipsCoreUserId", userId); + return q.getResultList(); + } }