dhis2-devs team mailing list archive
-
dhis2-devs team
-
Mailing list archive
-
Message #36298
[Branch ~dhis2-devs-core/dhis2/trunk] Rev 18592: Refactor of event search. Using EventSearchParams class instead of method arguments. Centralizing...
------------------------------------------------------------
revno: 18592
committer: Lars Helge Overland <larshelge@xxxxxxxxx>
branch nick: dhis2
timestamp: Thu 2015-03-12 12:03:32 +0100
message:
Refactor of event search. Using EventSearchParams class instead of method arguments. Centralizing input parameter handling to service method getFromUrl.
added:
dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/events/event/EventSearchParams.java
modified:
dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/event/data/DefaultEventAnalyticsService.java
dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/events/event/AbstractEventService.java
dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/events/event/EventService.java
dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/events/event/EventStore.java
dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/events/event/JdbcEventStore.java
dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/events/report/AbstractEventRowService.java
dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/events/report/EventRowService.java
dhis-2/dhis-services/dhis-service-dxf2/src/test/java/org/hisp/dhis/dxf2/events/RegistrationMultiEventsServiceTest.java
dhis-2/dhis-services/dhis-service-dxf2/src/test/java/org/hisp/dhis/dxf2/events/RegistrationSingleEventServiceTest.java
dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/webapi/controller/event/EventController.java
--
lp:dhis2
https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk
Your team DHIS 2 developers is subscribed to branch lp:dhis2.
To unsubscribe from this branch go to https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk/+edit-subscription
=== modified file 'dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/event/data/DefaultEventAnalyticsService.java'
--- dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/event/data/DefaultEventAnalyticsService.java 2015-03-05 15:38:58 +0000
+++ dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/event/data/DefaultEventAnalyticsService.java 2015-03-12 11:03:32 +0000
@@ -50,6 +50,7 @@
import java.util.Map;
import java.util.Set;
+import org.apache.commons.lang.StringUtils;
import org.hisp.dhis.analytics.AggregationType;
import org.hisp.dhis.analytics.AnalyticsSecurityManager;
import org.hisp.dhis.analytics.AnalyticsService;
@@ -394,7 +395,7 @@
ProgramStage ps = programStageService.getProgramStage( stage );
- if ( stage != null && !stage.isEmpty() && ps == null )
+ if ( StringUtils.isNotEmpty( stage ) && ps == null )
{
throw new IllegalQueryException( "Program stage is specified but does not exist: " + stage );
}
=== modified file 'dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/events/event/AbstractEventService.java'
--- dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/events/event/AbstractEventService.java 2015-03-10 14:59:27 +0000
+++ dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/events/event/AbstractEventService.java 2015-03-12 11:03:32 +0000
@@ -40,12 +40,14 @@
import java.util.Map;
import java.util.Set;
+import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hibernate.SessionFactory;
import org.hisp.dhis.common.CodeGenerator;
import org.hisp.dhis.common.IdentifiableObjectManager;
import org.hisp.dhis.common.IdentifiableProperty;
+import org.hisp.dhis.common.IllegalQueryException;
import org.hisp.dhis.common.OrganisationUnitSelectionMode;
import org.hisp.dhis.dataelement.DataElement;
import org.hisp.dhis.dataelement.DataElementService;
@@ -87,7 +89,6 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.Assert;
-import org.springframework.util.StringUtils;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
@@ -131,6 +132,9 @@
@Autowired
protected TrackedEntityInstanceService entityInstanceService;
+
+ @Autowired
+ private org.hisp.dhis.dxf2.events.trackedentity.TrackedEntityInstanceService trackedEntityInstanceService;
@Autowired
protected TrackedEntityCommentService commentService;
@@ -394,19 +398,14 @@
// -------------------------------------------------------------------------
@Override
- public Events getEvents( Program program, OrganisationUnit organisationUnit, OrganisationUnitSelectionMode orgUnitSelectionMode )
- {
- return getEvents( program, null, null, null, organisationUnit, orgUnitSelectionMode, null, null, null, null, null, null );
- }
-
- @Override
- public Events getEvents( Program program, ProgramStage programStage, ProgramStatus programStatus, Boolean followUp, OrganisationUnit orgUnit,
- OrganisationUnitSelectionMode orgUnitSelectionMode, TrackedEntityInstance trackedEntityInstance,
- Date startDate, Date endDate, EventStatus status, Date lastUpdated, IdSchemes idSchemes )
+ public Events getEvents( EventSearchParams params )
{
List<OrganisationUnit> organisationUnits = new ArrayList<>();
- if ( orgUnit != null )
+ OrganisationUnit orgUnit = params.getOrgUnit();
+ OrganisationUnitSelectionMode orgUnitSelectionMode = params.getOrgUnitSelectionMode();
+
+ if ( params.getOrgUnit() != null )
{
if ( OrganisationUnitSelectionMode.DESCENDANTS.equals( orgUnitSelectionMode ) )
{
@@ -423,15 +422,60 @@
}
}
- List<Event> eventList = eventStore.getEvents( program, programStage, programStatus, followUp, organisationUnits,
- trackedEntityInstance, startDate, endDate, status, lastUpdated, idSchemes );
+ List<Event> eventList = eventStore.getEvents( params, organisationUnits );
Events events = new Events();
events.setEvents( eventList );
return events;
}
-
+
+ public EventSearchParams getFromUrl( String program, String programStage, ProgramStatus programStatus, Boolean followUp, String orgUnit,
+ OrganisationUnitSelectionMode orgUnitSelectionMode, String trackedEntityInstance, Date startDate, Date endDate,
+ EventStatus status, Date lastUpdated, IdSchemes idSchemes )
+ {
+ EventSearchParams params = new EventSearchParams();
+
+ Program pr = programService.getProgram( program );
+
+ if ( StringUtils.isNotEmpty( program ) && pr == null )
+ {
+ throw new IllegalQueryException( "Program is specified but does not exist: " + program );
+ }
+
+ ProgramStage ps = programStageService.getProgramStage( programStage );
+
+ if ( StringUtils.isNotEmpty( programStage ) && ps == null )
+ {
+ throw new IllegalQueryException( "Program stage is specified but does not exist: " + programStage );
+ }
+
+ OrganisationUnit ou = organisationUnitService.getOrganisationUnit( orgUnit );
+
+ if ( StringUtils.isNotEmpty( orgUnit ) && ou == null )
+ {
+ throw new IllegalQueryException( "Org unit is specified but does not exist: " + orgUnit );
+ }
+
+ TrackedEntityInstance tei = trackedEntityInstanceService.getTrackedEntityInstance( trackedEntityInstance );
+
+ if ( StringUtils.isNotEmpty( trackedEntityInstance ) && tei == null )
+ {
+ throw new IllegalQueryException( "Tracked entity instance is specified but does not exist: " + trackedEntityInstance );
+ }
+
+ params.setProgramStatus( programStatus );
+ params.setFollowUp( followUp );
+ params.setOrgUnitSelectionMode( orgUnitSelectionMode );
+ params.setStartDate( startDate );
+ params.setEndDate( endDate );
+ params.setEventStatus( status );
+ params.setLastUpdated( lastUpdated );
+ params.setIdSchemes( idSchemes );
+
+ return params;
+ }
+
@Override
public Event getEvent( String uid )
{
=== added file 'dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/events/event/EventSearchParams.java'
--- dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/events/event/EventSearchParams.java 1970-01-01 00:00:00 +0000
+++ dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/events/event/EventSearchParams.java 2015-03-12 11:03:32 +0000
@@ -0,0 +1,202 @@
+package org.hisp.dhis.dxf2.events.event;
+
+/*
+ * Copyright (c) 2004-2015, University of Oslo
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ *
+ * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ * Neither the name of the HISP project nor the names of its contributors may
+ * be used to endorse or promote products derived from this software without
+ * specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+import java.util.Date;
+
+import org.hisp.dhis.common.OrganisationUnitSelectionMode;
+import org.hisp.dhis.dxf2.common.IdSchemes;
+import org.hisp.dhis.dxf2.events.trackedentity.TrackedEntityInstance;
+import org.hisp.dhis.event.EventStatus;
+import org.hisp.dhis.organisationunit.OrganisationUnit;
+import org.hisp.dhis.program.Program;
+import org.hisp.dhis.program.ProgramStage;
+import org.hisp.dhis.program.ProgramStatus;
+
+/**
+ * @author Lars Helge Overland
+ */
+public class EventSearchParams
+{
+ private Program program;
+
+ private ProgramStage programStage;
+
+ private ProgramStatus programStatus;
+
+ private Boolean followUp;
+
+ private OrganisationUnit orgUnit;
+
+ private OrganisationUnitSelectionMode orgUnitSelectionMode;
+
+ private TrackedEntityInstance trackedEntityInstance;
+
+ private Date startDate;
+
+ private Date endDate;
+
+ private EventStatus eventStatus;
+
+ private Date lastUpdated;
+
+ private IdSchemes idSchemes;
+
+ // -------------------------------------------------------------------------
+ // Constructors
+ // -------------------------------------------------------------------------
+
+ public EventSearchParams()
+ {
+ }
+
+ // -------------------------------------------------------------------------
+ // Getters and setters
+ // -------------------------------------------------------------------------
+
+ public Program getProgram()
+ {
+ return program;
+ }
+
+ public void setProgram( Program program )
+ {
+ this.program = program;
+ }
+
+ public ProgramStage getProgramStage()
+ {
+ return programStage;
+ }
+
+ public void setProgramStage( ProgramStage programStage )
+ {
+ this.programStage = programStage;
+ }
+
+ public ProgramStatus getProgramStatus()
+ {
+ return programStatus;
+ }
+
+ public void setProgramStatus( ProgramStatus programStatus )
+ {
+ this.programStatus = programStatus;
+ }
+
+ public Boolean getFollowUp()
+ {
+ return followUp;
+ }
+
+ public void setFollowUp( Boolean followUp )
+ {
+ this.followUp = followUp;
+ }
+
+ public OrganisationUnit getOrgUnit()
+ {
+ return orgUnit;
+ }
+
+ public void setOrgUnit( OrganisationUnit orgUnit )
+ {
+ this.orgUnit = orgUnit;
+ }
+
+ public OrganisationUnitSelectionMode getOrgUnitSelectionMode()
+ {
+ return orgUnitSelectionMode;
+ }
+
+ public void setOrgUnitSelectionMode( OrganisationUnitSelectionMode orgUnitSelectionMode )
+ {
+ this.orgUnitSelectionMode = orgUnitSelectionMode;
+ }
+
+ public TrackedEntityInstance getTrackedEntityInstance()
+ {
+ return trackedEntityInstance;
+ }
+
+ public void setTrackedEntityInstance( TrackedEntityInstance trackedEntityInstance )
+ {
+ this.trackedEntityInstance = trackedEntityInstance;
+ }
+
+ public Date getStartDate()
+ {
+ return startDate;
+ }
+
+ public void setStartDate( Date startDate )
+ {
+ this.startDate = startDate;
+ }
+
+ public Date getEndDate()
+ {
+ return endDate;
+ }
+
+ public void setEndDate( Date endDate )
+ {
+ this.endDate = endDate;
+ }
+
+ public EventStatus getEventStatus()
+ {
+ return eventStatus;
+ }
+
+ public void setEventStatus( EventStatus eventStatus )
+ {
+ this.eventStatus = eventStatus;
+ }
+
+ public Date getLastUpdated()
+ {
+ return lastUpdated;
+ }
+
+ public void setLastUpdated( Date lastUpdated )
+ {
+ this.lastUpdated = lastUpdated;
+ }
+
+ public IdSchemes getIdSchemes()
+ {
+ return idSchemes;
+ }
+
+ public void setIdSchemes( IdSchemes idSchemes )
+ {
+ this.idSchemes = idSchemes;
+ }
+}
=== modified file 'dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/events/event/EventService.java'
--- dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/events/event/EventService.java 2015-03-10 14:59:27 +0000
+++ dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/events/event/EventService.java 2015-03-12 11:03:32 +0000
@@ -28,25 +28,21 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Date;
+import java.util.List;
+
import org.hisp.dhis.common.OrganisationUnitSelectionMode;
-import org.hisp.dhis.dxf2.events.trackedentity.TrackedEntityInstance;
+import org.hisp.dhis.dxf2.common.IdSchemes;
+import org.hisp.dhis.dxf2.common.ImportOptions;
import org.hisp.dhis.dxf2.importsummary.ImportSummaries;
import org.hisp.dhis.dxf2.importsummary.ImportSummary;
-import org.hisp.dhis.dxf2.common.ImportOptions;
-import org.hisp.dhis.dxf2.common.IdSchemes;
import org.hisp.dhis.event.EventStatus;
-import org.hisp.dhis.organisationunit.OrganisationUnit;
-import org.hisp.dhis.program.Program;
-import org.hisp.dhis.program.ProgramStage;
import org.hisp.dhis.program.ProgramStageInstance;
import org.hisp.dhis.program.ProgramStatus;
import org.hisp.dhis.scheduling.TaskId;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.Date;
-import java.util.List;
-
/**
* @author Morten Olav Hansen <mortenoh@xxxxxxxxx>
*/
@@ -56,12 +52,12 @@
// READ
// -------------------------------------------------------------------------
- Events getEvents( Program program, OrganisationUnit organisationUnit, OrganisationUnitSelectionMode orgUnitSelectionMode );
-
- Events getEvents( Program program, ProgramStage programStage, ProgramStatus programStatus, Boolean followUp, OrganisationUnit orgUnit,
- OrganisationUnitSelectionMode orgUnitSelectionMode, TrackedEntityInstance trackedEntityInstance,
- Date startDate, Date endDate, EventStatus status, Date lastUpdated, IdSchemes idSchemes );
-
+ Events getEvents( EventSearchParams params );
+
+ EventSearchParams getFromUrl( String program, String programStage, ProgramStatus programStatus, Boolean followUp, String orgUnit,
+ OrganisationUnitSelectionMode orgUnitSelectionMode, String trackedEntityInstance, Date startDate, Date endDate,
+ EventStatus status, Date lastUpdated, IdSchemes idSchemes );
+
Event getEvent( String uid );
Event getEvent( ProgramStageInstance programStageInstance );
=== modified file 'dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/events/event/EventStore.java'
--- dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/events/event/EventStore.java 2015-03-10 14:59:27 +0000
+++ dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/events/event/EventStore.java 2015-03-12 11:03:32 +0000
@@ -28,22 +28,14 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-import org.hisp.dhis.dxf2.events.trackedentity.TrackedEntityInstance;
-import org.hisp.dhis.dxf2.common.IdSchemes;
-import org.hisp.dhis.event.EventStatus;
+import java.util.List;
+
import org.hisp.dhis.organisationunit.OrganisationUnit;
-import org.hisp.dhis.program.Program;
-import org.hisp.dhis.program.ProgramStage;
-import org.hisp.dhis.program.ProgramStatus;
-
-import java.util.Date;
-import java.util.List;
/**
* @author Morten Olav Hansen <mortenoh@xxxxxxxxx>
*/
public interface EventStore
{
- List<Event> getEvents( Program program, ProgramStage programStage, ProgramStatus programStatus, Boolean followUp, List<OrganisationUnit> organisationUnits,
- TrackedEntityInstance trackedEntityInstance, Date startDate, Date endDate, EventStatus status, Date lastUpdated, IdSchemes idSchemes );
+ List<Event> getEvents( EventSearchParams params, List<OrganisationUnit> organisationUnits );
}
=== modified file 'dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/events/event/JdbcEventStore.java'
--- dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/events/event/JdbcEventStore.java 2015-03-10 14:59:27 +0000
+++ dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/events/event/JdbcEventStore.java 2015-03-12 11:03:32 +0000
@@ -34,7 +34,6 @@
import java.io.IOException;
import java.util.ArrayList;
-import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
@@ -42,12 +41,9 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hisp.dhis.dxf2.common.IdSchemes;
-import org.hisp.dhis.dxf2.events.trackedentity.TrackedEntityInstance;
import org.hisp.dhis.event.EventStatus;
import org.hisp.dhis.organisationunit.OrganisationUnit;
import org.hisp.dhis.program.Program;
-import org.hisp.dhis.program.ProgramStage;
-import org.hisp.dhis.program.ProgramStatus;
import org.hisp.dhis.system.util.DateUtils;
import org.hisp.dhis.system.util.SqlHelper;
import org.hisp.dhis.trackedentity.TrackedEntityInstanceService;
@@ -76,28 +72,12 @@
private static final ObjectMapper objectMapper = new ObjectMapper();
@Override
- public List<Event> getEvents( Program program, ProgramStage programStage, ProgramStatus programStatus, Boolean followUp,
- List<OrganisationUnit> organisationUnits, TrackedEntityInstance trackedEntityInstance,
- Date startDate, Date endDate, EventStatus status, Date lastUpdated, IdSchemes idSchemes )
+ public List<Event> getEvents( EventSearchParams params, List<OrganisationUnit> organisationUnits )
{
List<Event> events = new ArrayList<>();
- Integer trackedEntityInstanceId = null;
-
- if ( trackedEntityInstance != null )
- {
- org.hisp.dhis.trackedentity.TrackedEntityInstance entityInstance = entityInstanceService
- .getTrackedEntityInstance( trackedEntityInstance.getTrackedEntityInstance() );
-
- if ( entityInstance != null )
- {
- trackedEntityInstanceId = entityInstance.getId();
- }
- }
-
- String sql = buildSql( program, programStage, programStatus, followUp, getIdList( organisationUnits ),
- trackedEntityInstanceId, startDate, endDate, status, lastUpdated );
-
+ String sql = buildSql( params, organisationUnits );
+
SqlRowSet rowSet = jdbcTemplate.queryForRowSet( sql );
log.debug( "Event query SQL: " + sql );
@@ -107,7 +87,7 @@
Set<String> notes = new HashSet<>();
- idSchemes = ObjectUtils.firstNonNull( idSchemes, new IdSchemes() );
+ IdSchemes idSchemes = ObjectUtils.firstNonNull( params.getIdSchemes(), new IdSchemes() );
while ( rowSet.next() )
{
@@ -204,9 +184,23 @@
return events;
}
- private String buildSql( Program program, ProgramStage programStage, ProgramStatus programStatus, Boolean followUp,
- List<Integer> orgUnitIds, Integer trackedEntityInstanceId, Date startDate, Date endDate, EventStatus status, Date lastUpdated )
+ private String buildSql( EventSearchParams params, List<OrganisationUnit> organisationUnits )
{
+ List<Integer> orgUnitIds = getIdList( organisationUnits );
+
+ Integer trackedEntityInstanceId = null;
+
+ if ( params.getTrackedEntityInstance() != null )
+ {
+ org.hisp.dhis.trackedentity.TrackedEntityInstance entityInstance = entityInstanceService
+ .getTrackedEntityInstance( params.getTrackedEntityInstance().getTrackedEntityInstance() );
+
+ if ( entityInstance != null )
+ {
+ trackedEntityInstanceId = entityInstance.getId();
+ }
+ }
+
SqlHelper hlp = new SqlHelper();
String sql =
@@ -225,7 +219,7 @@
"left join programstageinstancecomments psic on psi.programstageinstanceid=psic.programstageinstanceid " +
"left join trackedentitycomment psinote on psic.trackedentitycommentid=psinote.trackedentitycommentid ";
- if ( status == null || EventStatus.isExistingEvent( status ) )
+ if ( params.getEventStatus() == null || EventStatus.isExistingEvent( params.getEventStatus() ) )
{
sql += "left join organisationunit ou on (psi.organisationunitid=ou.organisationunitid) ";
}
@@ -246,46 +240,46 @@
sql += hlp.whereAnd() + " pa.trackedentityinstanceid=" + trackedEntityInstanceId + " ";
}
- if ( program != null )
- {
- sql += hlp.whereAnd() + " p.programid = " + program.getId() + " ";
- }
-
- if ( programStage != null )
- {
- sql += hlp.whereAnd() + " ps.programstageid = " + programStage.getId() + " ";
- }
-
- if ( programStatus != null )
- {
- sql += hlp.whereAnd() + " pi.status = " + programStatus.getValue() + " ";
- }
-
- if ( followUp != null )
- {
- sql += hlp.whereAnd() + " pi.followup is " + (followUp ? "true" : "false") + " ";
+ if ( params.getProgram() != null )
+ {
+ sql += hlp.whereAnd() + " p.programid = " + params.getProgram().getId() + " ";
+ }
+
+ if ( params.getProgramStage() != null )
+ {
+ sql += hlp.whereAnd() + " ps.programstageid = " + params.getProgramStage().getId() + " ";
+ }
+
+ if ( params.getProgramStatus() != null )
+ {
+ sql += hlp.whereAnd() + " pi.status = " + params.getProgramStatus().getValue() + " ";
+ }
+
+ if ( params.getFollowUp() != null )
+ {
+ sql += hlp.whereAnd() + " pi.followup is " + ( params.getFollowUp() ? "true" : "false" ) + " ";
}
- if ( lastUpdated != null )
+ if ( params.getLastUpdated() != null )
{
- sql += hlp.whereAnd() + " psi.lastupdated > '" + DateUtils.getLongDateString( lastUpdated ) + "' ";
+ sql += hlp.whereAnd() + " psi.lastupdated > '" + DateUtils.getLongDateString( params.getLastUpdated() ) + "' ";
}
- if ( status == null || EventStatus.isExistingEvent( status ) )
+ if ( params.getEventStatus() == null || EventStatus.isExistingEvent( params.getEventStatus() ) )
{
if ( orgUnitIds != null && !orgUnitIds.isEmpty() )
{
sql += hlp.whereAnd() + " psi.organisationunitid in (" + getCommaDelimitedString( orgUnitIds ) + ") ";
}
- if ( startDate != null )
+ if ( params.getStartDate() != null )
{
- sql += hlp.whereAnd() + " psi.executiondate >= '" + getMediumDateString( startDate ) + "' ";
+ sql += hlp.whereAnd() + " psi.executiondate >= '" + getMediumDateString( params.getStartDate() ) + "' ";
}
- if ( endDate != null )
+ if ( params.getEndDate() != null )
{
- sql += hlp.whereAnd() + " psi.executiondate <= '" + getMediumDateString( endDate ) + "' ";
+ sql += hlp.whereAnd() + " psi.executiondate <= '" + getMediumDateString( params.getEndDate() ) + "' ";
}
}
else
@@ -295,37 +289,37 @@
sql += hlp.whereAnd() + " tei.organisationunitid in (" + getCommaDelimitedString( orgUnitIds ) + ") ";
}
- if ( startDate != null )
- {
- sql += hlp.whereAnd() + " psi.duedate >= '" + getMediumDateString( startDate ) + "' ";
- }
-
- if ( endDate != null )
- {
- sql += hlp.whereAnd() + " psi.duedate <= '" + getMediumDateString( endDate ) + "' ";
- }
-
- if ( status == EventStatus.VISITED )
+ if ( params.getStartDate() != null )
+ {
+ sql += hlp.whereAnd() + " psi.duedate >= '" + getMediumDateString( params.getStartDate() ) + "' ";
+ }
+
+ if ( params.getEndDate() != null )
+ {
+ sql += hlp.whereAnd() + " psi.duedate <= '" + getMediumDateString( params.getEndDate() ) + "' ";
+ }
+
+ if ( params.getEventStatus() == EventStatus.VISITED )
{
sql = "and psi.status = '" + EventStatus.ACTIVE.name() + "' and psi.executiondate is not null ";
}
- else if ( status == EventStatus.COMPLETED )
+ else if ( params.getEventStatus() == EventStatus.COMPLETED )
{
sql = "and psi.status = '" + EventStatus.COMPLETED.name() + "' ";
}
- else if ( status == EventStatus.SCHEDULE )
+ else if ( params.getEventStatus() == EventStatus.SCHEDULE )
{
sql += "and psi.executiondate is null and date(now()) <= date(psi.duedate) and psi.status = '" + EventStatus.SCHEDULE
.name() + "' ";
}
- else if ( status == EventStatus.OVERDUE )
+ else if ( params.getEventStatus() == EventStatus.OVERDUE )
{
sql += "and psi.executiondate is null and date(now()) > date(psi.duedate) and psi.status = '" + EventStatus.SCHEDULE.name
() + "' ";
}
else
{
- sql += "and psi.status = '" + status.name() + "' ";
+ sql += "and psi.status = '" + params.getEventStatus().name() + "' ";
}
}
=== modified file 'dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/events/report/AbstractEventRowService.java'
--- dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/events/report/AbstractEventRowService.java 2015-03-10 14:59:27 +0000
+++ dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/events/report/AbstractEventRowService.java 2015-03-12 11:03:32 +0000
@@ -29,25 +29,19 @@
*/
import java.util.ArrayList;
-import java.util.Date;
import java.util.List;
import org.hisp.dhis.common.IdentifiableObjectManager;
-import org.hisp.dhis.common.OrganisationUnitSelectionMode;
import org.hisp.dhis.dxf2.events.event.Event;
+import org.hisp.dhis.dxf2.events.event.EventSearchParams;
import org.hisp.dhis.dxf2.events.event.EventService;
import org.hisp.dhis.dxf2.events.event.Events;
import org.hisp.dhis.dxf2.events.trackedentity.TrackedEntityInstance;
import org.hisp.dhis.dxf2.events.trackedentity.TrackedEntityInstanceService;
-import org.hisp.dhis.event.EventStatus;
-import org.hisp.dhis.organisationunit.OrganisationUnit;
-import org.hisp.dhis.program.Program;
-import org.hisp.dhis.program.ProgramStatus;
import org.springframework.beans.factory.annotation.Autowired;
/**
* @author Abyot Asalefew Gizaw <abyota@xxxxxxxxx>
- *
*/
public class AbstractEventRowService
implements EventRowService
@@ -66,26 +60,24 @@
private TrackedEntityInstanceService trackedEntityInstanceService;
@Override
- public EventRows getEventRows( Program program, OrganisationUnit orgUnit, OrganisationUnitSelectionMode orgUnitSelectionMode,
- ProgramStatus programStatus, EventStatus eventStatus, Date startDate, Date endDate )
+ public EventRows getEventRows( EventSearchParams params )
{
List<EventRow> eventRowList = new ArrayList<EventRow>();
EventRows eventRows = new EventRows();
-
- Events events = eventService.getEvents( program, null, programStatus, null, orgUnit, orgUnitSelectionMode,
- null, startDate, endDate, eventStatus, null, null );
+
+ Events events = eventService.getEvents( params );
for ( Event event : events.getEvents() )
{
if ( event.getTrackedEntityInstance() != null )
{
- TrackedEntityInstance tei = trackedEntityInstanceService.getTrackedEntityInstance( event
- .getTrackedEntityInstance() );
+ TrackedEntityInstance tei = trackedEntityInstanceService.getTrackedEntityInstance( event.getTrackedEntityInstance() );
+
EventRow eventRow = new EventRow();
eventRow.setTrackedEntityInstance( event.getTrackedEntityInstance() );
eventRow.setAttributes( tei.getAttributes() );
eventRow.setEvent( event.getEvent() );
- eventRow.setProgram( program.getUid() );
+ eventRow.setProgram( params.getProgram().getUid() );
eventRow.setProgramStage( event.getProgramStage() );
eventRow.setRegistrationOrgUnit( tei.getOrgUnit() );
eventRow.setRegistrationDate( tei.getCreated() );
=== modified file 'dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/events/report/EventRowService.java'
--- dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/events/report/EventRowService.java 2015-03-10 14:44:53 +0000
+++ dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/events/report/EventRowService.java 2015-03-12 11:03:32 +0000
@@ -28,19 +28,12 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-import java.util.Date;
-
-import org.hisp.dhis.common.OrganisationUnitSelectionMode;
-import org.hisp.dhis.event.EventStatus;
-import org.hisp.dhis.organisationunit.OrganisationUnit;
-import org.hisp.dhis.program.Program;
-import org.hisp.dhis.program.ProgramStatus;
+import org.hisp.dhis.dxf2.events.event.EventSearchParams;
/**
* @author Abyot Asalefew Gizaw <abyota@xxxxxxxxx>
*/
public interface EventRowService
{
- EventRows getEventRows( Program program, OrganisationUnit orgUnit, OrganisationUnitSelectionMode orgUnitSelectionMode,
- ProgramStatus programStatus, EventStatus eventStatus, Date startDate, Date endDate );
+ EventRows getEventRows( EventSearchParams params );
}
=== modified file 'dhis-2/dhis-services/dhis-service-dxf2/src/test/java/org/hisp/dhis/dxf2/events/RegistrationMultiEventsServiceTest.java'
--- dhis-2/dhis-services/dhis-service-dxf2/src/test/java/org/hisp/dhis/dxf2/events/RegistrationMultiEventsServiceTest.java 2015-03-10 14:59:27 +0000
+++ dhis-2/dhis-services/dhis-service-dxf2/src/test/java/org/hisp/dhis/dxf2/events/RegistrationMultiEventsServiceTest.java 2015-03-12 11:03:32 +0000
@@ -43,6 +43,7 @@
import org.hisp.dhis.dxf2.events.enrollment.EnrollmentService;
import org.hisp.dhis.dxf2.events.event.DataValue;
import org.hisp.dhis.dxf2.events.event.Event;
+import org.hisp.dhis.dxf2.events.event.EventSearchParams;
import org.hisp.dhis.dxf2.events.event.EventService;
import org.hisp.dhis.dxf2.events.trackedentity.TrackedEntityInstance;
import org.hisp.dhis.dxf2.events.trackedentity.TrackedEntityInstanceService;
@@ -234,8 +235,13 @@
importSummary = eventService.addEvent( event );
assertEquals( ImportStatus.SUCCESS, importSummary.getStatus() );
- assertEquals( 1, eventService.getEvents( programA, programStageA, null, null, organisationUnitA,
- OrganisationUnitSelectionMode.SELECTED, null, null, null, null, null, null ).getEvents().size() );
+ EventSearchParams params = new EventSearchParams();
+ params.setProgram( programA );
+ params.setProgramStage( programStageA );
+ params.setOrgUnit( organisationUnitA );
+ params.setOrgUnitSelectionMode( OrganisationUnitSelectionMode.SELECTED );
+
+ assertEquals( 1, eventService.getEvents( params ).getEvents().size() );
}
@Test
@@ -256,14 +262,21 @@
assertEquals( ImportStatus.SUCCESS, importSummary.getStatus() );
sessionFactory.getCurrentSession().flush();
- assertEquals( 2, eventService.getEvents( programA, organisationUnitA, OrganisationUnitSelectionMode.SELECTED ).getEvents().size() );
+
+ EventSearchParams params = new EventSearchParams();
+ params.setProgram( programA );
+ params.setOrgUnit( organisationUnitA );
+ params.setOrgUnitSelectionMode( OrganisationUnitSelectionMode.SELECTED );
+
+ assertEquals( 2, eventService.getEvents( params ).getEvents().size() );
event = createEvent( programA.getUid(), programStageB.getUid(), organisationUnitA.getUid(),
trackedEntityInstanceMaleA.getTrackedEntityInstance(), dataElementB.getUid() );
+
importSummary = eventService.addEvent( event );
assertEquals( ImportStatus.SUCCESS, importSummary.getStatus() );
- assertEquals( 3, eventService.getEvents( programA, organisationUnitA, OrganisationUnitSelectionMode.SELECTED ).getEvents().size() );
+ assertEquals( 3, eventService.getEvents( params ).getEvents().size() );
}
@Test
@@ -284,7 +297,13 @@
assertEquals( ImportStatus.SUCCESS, importSummary.getStatus() );
sessionFactory.getCurrentSession().flush();
- assertEquals( 2, eventService.getEvents( programA, organisationUnitA, OrganisationUnitSelectionMode.SELECTED ).getEvents().size() );
+
+ EventSearchParams params = new EventSearchParams();
+ params.setProgram( programA );
+ params.setOrgUnit( organisationUnitA );
+ params.setOrgUnitSelectionMode( OrganisationUnitSelectionMode.SELECTED );
+
+ assertEquals( 2, eventService.getEvents( params ).getEvents().size() );
event = createEvent( programA.getUid(), programStageB.getUid(), organisationUnitA.getUid(),
trackedEntityInstanceMaleA.getTrackedEntityInstance(), dataElementB.getUid() );
@@ -292,14 +311,14 @@
importSummary = eventService.addEvent( event );
assertEquals( ImportStatus.SUCCESS, importSummary.getStatus() );
- assertEquals( 2, eventService.getEvents( programA, organisationUnitA, OrganisationUnitSelectionMode.SELECTED ).getEvents().size() );
+ assertEquals( 2, eventService.getEvents( params ).getEvents().size() );
event = createEvent( programA.getUid(), programStageA.getUid(), organisationUnitA.getUid(),
trackedEntityInstanceMaleA.getTrackedEntityInstance(), dataElementA.getUid() );
importSummary = eventService.addEvent( event );
assertEquals( ImportStatus.SUCCESS, importSummary.getStatus() );
- assertEquals( 2, eventService.getEvents( programA, organisationUnitA, OrganisationUnitSelectionMode.SELECTED ).getEvents().size() );
+ assertEquals( 2, eventService.getEvents( params ).getEvents().size() );
}
private Enrollment createEnrollment( String program, String person )
=== modified file 'dhis-2/dhis-services/dhis-service-dxf2/src/test/java/org/hisp/dhis/dxf2/events/RegistrationSingleEventServiceTest.java'
--- dhis-2/dhis-services/dhis-service-dxf2/src/test/java/org/hisp/dhis/dxf2/events/RegistrationSingleEventServiceTest.java 2015-03-10 14:44:53 +0000
+++ dhis-2/dhis-services/dhis-service-dxf2/src/test/java/org/hisp/dhis/dxf2/events/RegistrationSingleEventServiceTest.java 2015-03-12 11:03:32 +0000
@@ -43,6 +43,7 @@
import org.hisp.dhis.dxf2.events.enrollment.EnrollmentService;
import org.hisp.dhis.dxf2.events.event.DataValue;
import org.hisp.dhis.dxf2.events.event.Event;
+import org.hisp.dhis.dxf2.events.event.EventSearchParams;
import org.hisp.dhis.dxf2.events.event.EventService;
import org.hisp.dhis.dxf2.events.trackedentity.TrackedEntityInstance;
import org.hisp.dhis.dxf2.events.trackedentity.TrackedEntityInstanceService;
@@ -189,19 +190,24 @@
importSummary = eventService.addEvent( event );
assertEquals( ImportStatus.SUCCESS, importSummary.getStatus() );
- assertEquals( 1, eventService.getEvents( programA, organisationUnitA, OrganisationUnitSelectionMode.SELECTED ).getEvents().size() );
-
- event = createEvent( programA.getUid(), organisationUnitA.getUid(), trackedEntityInstanceMaleA.getTrackedEntityInstance() );
- importSummary = eventService.addEvent( event );
- assertEquals( ImportStatus.SUCCESS, importSummary.getStatus() );
-
- assertEquals( 1, eventService.getEvents( programA, organisationUnitA, OrganisationUnitSelectionMode.SELECTED ).getEvents().size() );
-
- event = createEvent( programA.getUid(), organisationUnitA.getUid(), trackedEntityInstanceMaleA.getTrackedEntityInstance() );
- importSummary = eventService.addEvent( event );
- assertEquals( ImportStatus.SUCCESS, importSummary.getStatus() );
-
- assertEquals( 1, eventService.getEvents( programA, organisationUnitA, OrganisationUnitSelectionMode.SELECTED ).getEvents().size() );
+ EventSearchParams params = new EventSearchParams();
+ params.setProgram( programA );
+ params.setOrgUnit( organisationUnitA );
+ params.setOrgUnitSelectionMode( OrganisationUnitSelectionMode.SELECTED );
+
+ assertEquals( 1, eventService.getEvents( params ).getEvents().size() );
+
+ event = createEvent( programA.getUid(), organisationUnitA.getUid(), trackedEntityInstanceMaleA.getTrackedEntityInstance() );
+ importSummary = eventService.addEvent( event );
+ assertEquals( ImportStatus.SUCCESS, importSummary.getStatus() );
+
+ assertEquals( 1, eventService.getEvents( params ).getEvents().size() );
+
+ event = createEvent( programA.getUid(), organisationUnitA.getUid(), trackedEntityInstanceMaleA.getTrackedEntityInstance() );
+ importSummary = eventService.addEvent( event );
+ assertEquals( ImportStatus.SUCCESS, importSummary.getStatus() );
+
+ assertEquals( 1, eventService.getEvents( params ).getEvents().size() );
}
@Test
=== modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/webapi/controller/event/EventController.java'
--- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/webapi/controller/event/EventController.java 2015-03-10 14:59:27 +0000
+++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/webapi/controller/event/EventController.java 2015-03-12 11:03:32 +0000
@@ -50,6 +50,7 @@
import org.hisp.dhis.dxf2.common.ImportOptions;
import org.hisp.dhis.dxf2.common.JacksonUtils;
import org.hisp.dhis.dxf2.events.event.Event;
+import org.hisp.dhis.dxf2.events.event.EventSearchParams;
import org.hisp.dhis.dxf2.events.event.EventService;
import org.hisp.dhis.dxf2.events.event.Events;
import org.hisp.dhis.dxf2.events.event.ImportEventTask;
@@ -57,17 +58,14 @@
import org.hisp.dhis.dxf2.events.event.csv.CsvEventService;
import org.hisp.dhis.dxf2.events.report.EventRowService;
import org.hisp.dhis.dxf2.events.report.EventRows;
-import org.hisp.dhis.dxf2.events.trackedentity.TrackedEntityInstance;
import org.hisp.dhis.dxf2.events.trackedentity.TrackedEntityInstanceService;
import org.hisp.dhis.dxf2.importsummary.ImportStatus;
import org.hisp.dhis.dxf2.importsummary.ImportSummaries;
import org.hisp.dhis.dxf2.importsummary.ImportSummary;
import org.hisp.dhis.event.EventStatus;
import org.hisp.dhis.importexport.ImportStrategy;
-import org.hisp.dhis.organisationunit.OrganisationUnit;
import org.hisp.dhis.organisationunit.OrganisationUnitService;
import org.hisp.dhis.program.Program;
-import org.hisp.dhis.program.ProgramStage;
import org.hisp.dhis.program.ProgramStatus;
import org.hisp.dhis.scheduling.TaskCategory;
import org.hisp.dhis.scheduling.TaskId;
@@ -154,34 +152,10 @@
{
WebOptions options = new WebOptions( parameters );
- Program pr = manager.get( Program.class, program );
- ProgramStage prs = manager.get( ProgramStage.class, programStage );
- TrackedEntityInstance tei = null;
- OrganisationUnit ou = null;
-
- if ( trackedEntityInstance != null )
- {
- tei = trackedEntityInstanceService.getTrackedEntityInstance( trackedEntityInstance );
-
- if ( tei == null )
- {
- ContextUtils.conflictResponse( response, "Invalid trackedEntityInstance ID." );
- return;
- }
- }
-
- if ( orgUnit != null )
- {
- ou = manager.get( OrganisationUnit.class, orgUnit );
-
- if ( ou == null )
- {
- ContextUtils.conflictResponse( response, "Invalid orgUnit ID." );
- return;
- }
- }
-
- Events events = eventService.getEvents( pr, prs, programStatus, followUp, ou, ouMode, tei, startDate, endDate, status, lastUpdated, idSchemes );
+ EventSearchParams params = eventService.getFromUrl( program, programStage, programStatus, followUp, orgUnit, ouMode,
+ trackedEntityInstance, startDate, endDate, status, lastUpdated, idSchemes );
+
+ Events events = eventService.getEvents( params );
if ( options.hasPaging() )
{
@@ -230,34 +204,10 @@
{
WebOptions options = new WebOptions( parameters );
- Program pr = manager.get( Program.class, program );
- ProgramStage prs = manager.get( ProgramStage.class, programStage );
- TrackedEntityInstance tei = null;
- OrganisationUnit ou = null;
-
- if ( trackedEntityInstance != null )
- {
- tei = trackedEntityInstanceService.getTrackedEntityInstance( trackedEntityInstance );
-
- if ( tei == null )
- {
- ContextUtils.conflictResponse( response, "Invalid trackedEntityInstance ID." );
- return null;
- }
- }
-
- if ( orgUnit != null )
- {
- ou = manager.get( OrganisationUnit.class, orgUnit );
-
- if ( ou == null )
- {
- ContextUtils.conflictResponse( response, "Invalid orgUnit ID." );
- return null;
- }
- }
-
- Events events = eventService.getEvents( pr, prs, programStatus, followUp, ou, ouMode, tei, startDate, endDate, status, lastUpdated, idSchemes );
+ EventSearchParams params = eventService.getFromUrl( program, programStage, programStatus, followUp, orgUnit, ouMode,
+ trackedEntityInstance, startDate, endDate, status, lastUpdated, idSchemes );
+
+ Events events = eventService.getEvents( params );
if ( options.hasLinks() )
{
@@ -274,9 +224,9 @@
events.setEvents( PagerUtils.pageCollection( events.getEvents(), pager ) );
}
- if ( !skipMeta && pr != null )
+ if ( !skipMeta && params.getProgram() != null )
{
- events.setMetaData( getMetaData( pr ) );
+ events.setMetaData( getMetaData( params.getProgram() ) );
}
model.addAttribute( "model", events );
@@ -304,15 +254,9 @@
{
WebOptions options = new WebOptions( parameters );
- Program pr = manager.get( Program.class, program );
- OrganisationUnit ou = null;
-
- if ( orgUnit != null )
- {
- ou = manager.get( OrganisationUnit.class, orgUnit );
- }
-
- EventRows eventRows = eventRowService.getEventRows( pr, ou, ouMode, programStatus, eventStatus, startDate, endDate );
+ EventSearchParams params = eventService.getFromUrl( program, null, programStatus, false, orgUnit, ouMode, null, startDate, endDate, null, null, null );
+
+ EventRows eventRows = eventRowService.getEventRows( params );
if ( options.hasPaging() )
{