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

Adding season and date selection for broadcasted messages

parent 9dd727bc
No related branches found
No related tags found
No related merge requests found
......@@ -48,6 +48,7 @@ import no.nibio.vips.logic.entity.Organization;
import no.nibio.vips.logic.entity.PointOfInterest;
import no.nibio.vips.logic.entity.VipsLogicUser;
import no.nibio.vips.logic.util.SessionControllerGetter;
import no.nibio.vips.logic.util.SystemTime;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.io.FilenameUtils;
import org.wololo.geojson.Feature;
......@@ -234,6 +235,12 @@ public class ObservationBean {
em.remove(observation);
}
/**
*
* @param organizationId
* @param season
* @return
*/
public List<Observation> getBroadcastObservations(Integer organizationId, Integer season) {
Organization organization= em.find(Organization.class, organizationId);
/*List<VipsLogicUser> users = em.createNamedQuery("VipsLogicUser.findByOrganizationId", VipsLogicUser.class)
......@@ -255,15 +262,44 @@ public class ObservationBean {
Date start = cal.getTime();
cal.set(season, Calendar.DECEMBER, 31, 23, 59, 59);
Date end = cal.getTime();
retVal = this.getObservationsWithGeoInfo(em.createNamedQuery("Observation.findByOrganizationIdAndStatusTypeIdAndBroadcastMessageAndSeason")
.setParameter("organizationId", organization)
.setParameter("statusTypeId", Observation.STATUS_TYPE_ID_APPROVED)
.setParameter("start", start)
.setParameter("end", end)
.getResultList());
retVal = this.getBroadcastObservations(organizationId, start, end);
}
return retVal;
}
/**
*
* @param organizationId
* @param start When period starts. Default: Jan 1st 2000
* @param end When period ends. Default: 100 years from now
* @return
*/
public List<Observation> getBroadcastObservations(Integer organizationId, Date start, Date end) {
if(start == null || end == null)
{
Calendar cal = Calendar.getInstance();
if(start == null) // Default Jan 1st 2000
{
cal.set(2000, Calendar.JANUARY,1,0,0,0);
start = cal.getTime();
}
if(end == null) // Default: Today + 100 years
{
cal.setTime(SystemTime.getSystemTime());
cal.add(Calendar.YEAR, 100);
end = cal.getTime();
}
}
Organization organization= em.find(Organization.class, organizationId);
return this.getObservationsWithGeoInfo(em.createNamedQuery("Observation.findByOrganizationIdAndStatusTypeIdAndBroadcastMessageAndPeriod")
.setParameter("organizationId", organization)
.setParameter("statusTypeId", Observation.STATUS_TYPE_ID_APPROVED)
.setParameter("start", start)
.setParameter("end", end)
.getResultList());
}
/**
*
* @param message
......
......@@ -69,7 +69,7 @@ import org.hibernate.annotations.TypeDefs;
@NamedQuery(name = "Observation.findByOrganizationId", query = "SELECT o FROM Observation o WHERE o.userId IN(SELECT v.userId FROM VipsLogicUser v WHERE v.organizationId = :organizationId OR v.organizationId IN(SELECT o.organizationId FROM Organization o WHERE o.parentOrganizationId = :organizationId))"),
@NamedQuery(name = "Observation.findByOrganizationIdAndStatusTypeId", query = "SELECT o FROM Observation o WHERE o.userId IN(SELECT v.userId FROM VipsLogicUser v WHERE v.organizationId = :organizationId OR v.organizationId IN(SELECT o.organizationId FROM Organization o WHERE o.parentOrganizationId = :organizationId)) AND o.statusTypeId= :statusTypeId"),
@NamedQuery(name = "Observation.findByOrganizationIdAndStatusTypeIdAndBroadcastMessage", query = "SELECT o FROM Observation o WHERE o.userId IN(SELECT v.userId FROM VipsLogicUser v WHERE v.organizationId = :organizationId OR v.organizationId IN(SELECT o.organizationId FROM Organization o WHERE o.parentOrganizationId = :organizationId)) AND o.statusTypeId= :statusTypeId AND o.broadcastMessage IS TRUE"),
@NamedQuery(name = "Observation.findByOrganizationIdAndStatusTypeIdAndBroadcastMessageAndSeason", query = "SELECT o FROM Observation o WHERE o.timeOfObservation BETWEEN :start AND :end AND o.userId IN(SELECT v.userId FROM VipsLogicUser v WHERE v.organizationId = :organizationId OR v.organizationId IN(SELECT o.organizationId FROM Organization o WHERE o.parentOrganizationId = :organizationId)) AND o.statusTypeId= :statusTypeId AND o.broadcastMessage IS TRUE"),
@NamedQuery(name = "Observation.findByOrganizationIdAndStatusTypeIdAndBroadcastMessageAndPeriod", query = "SELECT o FROM Observation o WHERE o.timeOfObservation BETWEEN :start AND :end AND o.userId IN(SELECT v.userId FROM VipsLogicUser v WHERE v.organizationId = :organizationId OR v.organizationId IN(SELECT o.organizationId FROM Organization o WHERE o.parentOrganizationId = :organizationId)) AND o.statusTypeId= :statusTypeId AND o.broadcastMessage IS TRUE"),
@NamedQuery(name = "Observation.findByOrganism", query = "SELECT o FROM Observation o WHERE o.organism = :organism"),
@NamedQuery(name = "Observation.findByTimeOfObservation", query = "SELECT o FROM Observation o WHERE o.timeOfObservation = :timeOfObservation")
})
......
......@@ -197,10 +197,38 @@ public class ObservationService {
@Produces("application/json;charset=UTF-8")
public Response getBroadcastObservations(
@PathParam("organizationId") Integer organizationId,
@QueryParam("season") Integer season
@QueryParam("season") Integer season,
@QueryParam("timeOfObservationFrom") String timeOfObservationFrom,
@QueryParam("timeOfObservationTo") String timeOfObservationTo
)
{
return Response.ok().entity(SessionControllerGetter.getObservationBean().getBroadcastObservations(organizationId, season)).build();
if((timeOfObservationFrom != null && ! timeOfObservationFrom.isEmpty())
|| (timeOfObservationTo != null && ! timeOfObservationTo.isEmpty()))
{
Date from = null;
Date to = null;
try
{
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
if(timeOfObservationFrom != null && ! timeOfObservationFrom.isEmpty())
{
from = format.parse(timeOfObservationFrom);
}
if(timeOfObservationTo != null && ! timeOfObservationTo.isEmpty())
{
to = format.parse(timeOfObservationTo);
}
return Response.ok().entity(SessionControllerGetter.getObservationBean().getBroadcastObservations(organizationId, from, to)).build();
}
catch(ParseException ex)
{
return Response.status(Response.Status.BAD_REQUEST).entity("Invalid date format").build();
}
}
else
{
return Response.ok().entity(SessionControllerGetter.getObservationBean().getBroadcastObservations(organizationId, season)).build();
}
}
@GET
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment