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

Adding multi org to forecast summaries and forecast config list

parent 050da2c5
No related branches found
No related tags found
2 merge requests!17Develop,!16Spotit multi org
...@@ -344,6 +344,29 @@ public class ForecastBean { ...@@ -344,6 +344,29 @@ public class ForecastBean {
} }
} }
public List<ForecastConfiguration> getForecastConfigurations(List<Integer> organizationIds, Date from, Date to)
{
List<VipsLogicUser> organizationUsers = em
.createNamedQuery("VipsLogicUser.findByOrganizationIds")
.setParameter("organizationIds", organizationIds)
.getResultList();
if(!organizationUsers.isEmpty())
{
return em
.createNamedQuery("ForecastConfiguration.findByVipsLogicUserIdsAndDate")
.setParameter("vipsLogicUserIds", organizationUsers)
.setParameter("from", from)
.setParameter("to", to)
.getResultList();
}
else
{
return new ArrayList<>();
}
}
public List<ForecastConfiguration> getForecastConfigurationsByWeatherStation(PointOfInterestWeatherStation weatherStation) public List<ForecastConfiguration> getForecastConfigurationsByWeatherStation(PointOfInterestWeatherStation weatherStation)
{ {
return em return em
...@@ -938,11 +961,18 @@ public class ForecastBean { ...@@ -938,11 +961,18 @@ public class ForecastBean {
summaryForForecast.add(s); summaryForForecast.add(s);
mappedSummaries.put(s.getForecastSummaryPK().getForecastConfigurationId(), summaryForForecast); mappedSummaries.put(s.getForecastSummaryPK().getForecastConfigurationId(), summaryForForecast);
}); });
List<ForecastConfiguration> configurations = em.createNamedQuery("ForecastConfiguration.findByForecastConfigurationIds").setParameter("forecastConfigurationIds", mappedSummaries.keySet()).getResultList(); if(mappedSummaries.size() > 0)
configurations.forEach((conf) -> { {
conf.setForecastSummaries(mappedSummaries.get(conf.getForecastConfigurationId())); List<ForecastConfiguration> configurations = em.createNamedQuery("ForecastConfiguration.findByForecastConfigurationIds").setParameter("forecastConfigurationIds", mappedSummaries.keySet()).getResultList();
}); configurations.forEach((conf) -> {
return configurations; conf.setForecastSummaries(mappedSummaries.get(conf.getForecastConfigurationId()));
});
return configurations;
}
else
{
return new ArrayList<>();
}
} }
/** /**
......
...@@ -81,7 +81,9 @@ import org.hibernate.annotations.TypeDefs; ...@@ -81,7 +81,9 @@ import org.hibernate.annotations.TypeDefs;
@NamedQuery(name = "ForecastConfiguration.findPrivateByVipsLogicUserIdAndCropOrganismIdsAndDate", query = "SELECT f FROM ForecastConfiguration f WHERE f.vipsLogicUserId = :vipsLogicUserId AND f.cropOrganismId.organismId IN (:cropOrganismIds) AND f.dateStart <= :to AND f.dateEnd >= :from AND f.isPrivate = TRUE"), @NamedQuery(name = "ForecastConfiguration.findPrivateByVipsLogicUserIdAndCropOrganismIdsAndDate", query = "SELECT f FROM ForecastConfiguration f WHERE f.vipsLogicUserId = :vipsLogicUserId AND f.cropOrganismId.organismId IN (:cropOrganismIds) AND f.dateStart <= :to AND f.dateEnd >= :from AND f.isPrivate = TRUE"),
@NamedQuery(name = "ForecastConfiguration.findByVipsLogicUserIds", query = "SELECT f FROM ForecastConfiguration f WHERE f.vipsLogicUserId IN (:vipsLogicUserIds) AND f.isPrivate = FALSE"), @NamedQuery(name = "ForecastConfiguration.findByVipsLogicUserIds", query = "SELECT f FROM ForecastConfiguration f WHERE f.vipsLogicUserId IN (:vipsLogicUserIds) AND f.isPrivate = FALSE"),
@NamedQuery(name = "ForecastConfiguration.findByVipsLogicUserIdsAndModelIds", query = "SELECT f FROM ForecastConfiguration f WHERE f.vipsLogicUserId IN (:vipsLogicUserIds) AND f.modelId IN (:modelIds) AND f.isPrivate = FALSE"), @NamedQuery(name = "ForecastConfiguration.findByVipsLogicUserIdsAndModelIds", query = "SELECT f FROM ForecastConfiguration f WHERE f.vipsLogicUserId IN (:vipsLogicUserIds) AND f.modelId IN (:modelIds) AND f.isPrivate = FALSE"),
@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 AND f.isPrivate = FALSE")}) @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 AND f.isPrivate = FALSE"),
@NamedQuery(name = "ForecastConfiguration.findByVipsLogicUserIdsAndDate", query = "SELECT f FROM ForecastConfiguration f WHERE f.vipsLogicUserId IN (:vipsLogicUserIds) AND f.dateStart <= :to AND f.dateEnd >= :from AND f.isPrivate = FALSE")
})
public class ForecastConfiguration implements Serializable, Comparable { public class ForecastConfiguration implements Serializable, Comparable {
@OneToMany(cascade = CascadeType.ALL, mappedBy = "forecastConfiguration", fetch = FetchType.EAGER) @OneToMany(cascade = CascadeType.ALL, mappedBy = "forecastConfiguration", fetch = FetchType.EAGER)
private Set<ForecastModelConfiguration> forecastModelConfigurationSet; private Set<ForecastModelConfiguration> forecastModelConfigurationSet;
......
...@@ -245,6 +245,10 @@ public class LogicService { ...@@ -245,6 +245,10 @@ public class LogicService {
try try
{ {
Integer includeOrgId = Integer.valueOf(orgId); Integer includeOrgId = Integer.valueOf(orgId);
if(includeOrgId.equals(organizationId))
{
continue;
}
summaries.addAll(SessionControllerGetter.getForecastBean().getForecastConfigurationSummaries(includeOrgId)); summaries.addAll(SessionControllerGetter.getForecastBean().getForecastConfigurationSummaries(includeOrgId));
} }
catch(NumberFormatException ex){} catch(NumberFormatException ex){}
...@@ -335,6 +339,46 @@ public class LogicService { ...@@ -335,6 +339,46 @@ public class LogicService {
} }
@GET
@Path("forecastconfigurationsincludeorgs/{organizationId}")
@GZIP
@Produces("application/json;charset=UTF-8")
public Response getActiveForecastConfigurationsWithIncludeOrganizations(
@PathParam("organizationId") Integer organizationId,
@QueryParam("includeOrganizationIds") String includeOrganizationIds
)
{
Calendar cal = Calendar.getInstance();
cal.setTime(SystemTime.getSystemTime());
cal.set(cal.get(Calendar.YEAR), Calendar.JANUARY, 1, 0, 0, 0);
Date from = cal.getTime();
cal.set(cal.get(Calendar.YEAR), Calendar.DECEMBER, 31, 23, 0, 0);
Date to = cal.getTime();
List<Integer> orgIds = new ArrayList<>();
orgIds.add(organizationId);
if(includeOrganizationIds != null)
{
String[] includeOrgIdStrs = includeOrganizationIds.split(",");
for(String orgIdStr:includeOrgIdStrs)
{
try
{
Integer includeOrgId = Integer.valueOf(orgIdStr.trim());
if(includeOrgId.equals(organizationId))
{
continue;
}
orgIds.add(includeOrgId);
}
catch(NumberFormatException ex){}
}
}
List<ForecastConfiguration> forecastConfigs = SessionControllerGetter.getForecastBean().getForecastConfigurations(orgIds, from, to);
return Response.ok().entity(forecastConfigs).build();
}
/** /**
* Returns a list of forecasts for given organization * Returns a list of forecasts for given organization
* @param organizationId * @param organizationId
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment