diff --git a/src/main/java/no/nibio/vips/logic/controller/session/ObservationBean.java b/src/main/java/no/nibio/vips/logic/controller/session/ObservationBean.java index 6ac249a898286a269b87bb31b8795ea93e9ced03..356e7c92270881ee360253bb0dcd4629d543ab2a 100755 --- a/src/main/java/no/nibio/vips/logic/controller/session/ObservationBean.java +++ b/src/main/java/no/nibio/vips/logic/controller/session/ObservationBean.java @@ -20,27 +20,24 @@ package no.nibio.vips.logic.controller.session; import com.fasterxml.jackson.databind.ObjectMapper; -import com.vividsolutions.jts.geom.Geometry; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; +import java.util.Calendar; import java.util.Date; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; +import java.util.TimeZone; import javax.ejb.Stateless; import javax.persistence.EntityManager; -import javax.persistence.NoResultException; import javax.persistence.PersistenceContext; import javax.persistence.Query; import no.nibio.vips.logic.entity.CropCategory; import no.nibio.vips.logic.entity.Gis; -import no.nibio.vips.logic.entity.Message; -import no.nibio.vips.logic.entity.MessageIllustration; -import no.nibio.vips.logic.entity.MessageIllustrationPK; import no.nibio.vips.logic.entity.Observation; import no.nibio.vips.logic.entity.ObservationFormShortcut; import no.nibio.vips.logic.entity.ObservationIllustration; @@ -51,7 +48,6 @@ 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.observationdata.ObservationDataSchema; import org.apache.commons.fileupload.FileItem; import org.apache.commons.io.FilenameUtils; import org.wololo.geojson.Feature; @@ -238,17 +234,34 @@ public class ObservationBean { em.remove(observation); } - public List<Observation> getBroadcastObservations(Integer organizationId) { + public List<Observation> getBroadcastObservations(Integer organizationId, Integer season) { Organization organization= em.find(Organization.class, organizationId); /*List<VipsLogicUser> users = em.createNamedQuery("VipsLogicUser.findByOrganizationId", VipsLogicUser.class) .setParameter("organizationId", organization) - .getResultList();*/ - - List<Observation> retVal = this.getObservationsWithGeoInfo(em.createNamedQuery("Observation.findByOrganizationIdAndStatusTypeIdAndBroadcastMessage") - .setParameter("organizationId", organization) - .setParameter("statusTypeId", Observation.STATUS_TYPE_ID_APPROVED) - .getResultList()); + .getResultList();*/ + List<Observation> retVal = null; + if(season == null) + { + retVal = this.getObservationsWithGeoInfo(em.createNamedQuery("Observation.findByOrganizationIdAndStatusTypeIdAndBroadcastMessage") + .setParameter("organizationId", organization) + .setParameter("statusTypeId", Observation.STATUS_TYPE_ID_APPROVED) + .getResultList()); + } + else + { + Calendar cal = Calendar.getInstance(); + cal.set(season, Calendar.JANUARY, 1, 0, 0, 0); + 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()); + } return retVal; } /** diff --git a/src/main/java/no/nibio/vips/logic/controller/session/UserBean.java b/src/main/java/no/nibio/vips/logic/controller/session/UserBean.java index 545a8de8a202f1d4ce46c3f035fb28c636797bc3..dc8825c0ac5c1331e6d7fa346ea8c61f4c9f3c19 100755 --- a/src/main/java/no/nibio/vips/logic/controller/session/UserBean.java +++ b/src/main/java/no/nibio/vips/logic/controller/session/UserBean.java @@ -21,8 +21,6 @@ package no.nibio.vips.logic.controller.session; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; -import com.ibm.icu.util.Calendar; -import com.ibm.icu.util.TimeZone; import com.ibm.icu.util.ULocale; import java.io.IOException; @@ -30,6 +28,8 @@ import java.io.InputStream; import java.text.MessageFormat; import java.util.ArrayList; import java.util.Arrays; +import java.util.Calendar; +import java.util.TimeZone; import java.util.Date; import java.util.List; import java.util.Map; @@ -640,7 +640,7 @@ public class UserBean { */ public UserUuid createAndPersistUserUuid(VipsLogicUser user) { - Calendar cal = Calendar.getInstance(TimeZone.getDefault()); + Calendar cal = Calendar.getInstance(TimeZone.getTimeZone(user.getOrganizationId().getDefaultTimeZone())); cal.setTime(new Date()); cal.add(Calendar.DATE, Globals.DEFAULT_UUID_VALIDITY_DURATION_DAYS); UserUuid u = new UserUuid(); diff --git a/src/main/java/no/nibio/vips/logic/entity/Observation.java b/src/main/java/no/nibio/vips/logic/entity/Observation.java index 0329a9d5cd116ecd736be349ffe5b9297fafcb0b..2ef03bff78356a0547a756f88171be349643c3af 100755 --- a/src/main/java/no/nibio/vips/logic/entity/Observation.java +++ b/src/main/java/no/nibio/vips/logic/entity/Observation.java @@ -69,6 +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.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") }) diff --git a/src/main/java/no/nibio/vips/logic/service/ObservationService.java b/src/main/java/no/nibio/vips/logic/service/ObservationService.java index 65dc4caa549642aa6e70ecfe817e9104e4a2abe5..b4fda92d7b3b2bc9ebbdf8be256c6cde1cbfe50a 100755 --- a/src/main/java/no/nibio/vips/logic/service/ObservationService.java +++ b/src/main/java/no/nibio/vips/logic/service/ObservationService.java @@ -195,8 +195,12 @@ public class ObservationService { @Path("broadcast/list/{organizationId}") @GZIP @Produces("application/json;charset=UTF-8") - public Response getBroadcastObservations(@PathParam("organizationId") Integer organizationId){ - return Response.ok().entity(SessionControllerGetter.getObservationBean().getBroadcastObservations(organizationId)).build(); + public Response getBroadcastObservations( + @PathParam("organizationId") Integer organizationId, + @QueryParam("season") Integer season + ) + { + return Response.ok().entity(SessionControllerGetter.getObservationBean().getBroadcastObservations(organizationId, season)).build(); } @GET