=== modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/webapi/controller/AuditController.java' --- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/webapi/controller/AuditController.java 2015-11-27 05:26:25 +0000 +++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/webapi/controller/AuditController.java 2015-11-27 09:12:45 +0000 @@ -40,6 +40,10 @@ import org.hisp.dhis.organisationunit.OrganisationUnit; import org.hisp.dhis.period.Period; import org.hisp.dhis.period.PeriodType; +import org.hisp.dhis.program.ProgramStageInstance; +import org.hisp.dhis.program.ProgramStageInstanceService; +import org.hisp.dhis.trackedentitydatavalue.TrackedEntityDataValueAudit; +import org.hisp.dhis.trackedentitydatavalue.TrackedEntityDataValueAuditService; import org.hisp.dhis.webapi.utils.WebMessageUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; @@ -62,9 +66,15 @@ private IdentifiableObjectManager manager; @Autowired + private ProgramStageInstanceService programStageInstanceService; + + @Autowired private DataValueAuditService dataValueAuditService; @Autowired + private TrackedEntityDataValueAuditService trackedEntityDataValueAuditService; + + @Autowired private FieldFilterService fieldFilterService; @RequestMapping( value = "dataValue", method = RequestMethod.GET ) @@ -91,10 +101,78 @@ return rootNode; } + @RequestMapping( value = "trackedEntityDataValue", method = RequestMethod.GET ) + public @ResponseBody RootNode getTrackedEntityDataValueAudit( + @RequestParam( required = false, defaultValue = "" ) List de, + @RequestParam( required = false, defaultValue = "" ) List ps + ) throws WebMessageException + { + List dataElements = getDataElements( de ); + List programStageInstances = getProgramStageInstances( ps ); + + List dataValueAudits = trackedEntityDataValueAuditService.getTrackedEntityDataValueAudits( dataElements, programStageInstances ); + + RootNode rootNode = NodeUtils.createRootNode( "trackedEntityDataValueAudits" ); + rootNode.addChild( fieldFilterService.filter( TrackedEntityDataValueAudit.class, dataValueAudits, new ArrayList<>() ) ); + + return rootNode; + } + //----------------------------------------------------------------------------------------------------------------- // Helpers //----------------------------------------------------------------------------------------------------------------- + private List getProgramStageInstances( List psIdentifier ) throws WebMessageException + { + List programStageInstances = new ArrayList<>(); + + for ( String ps : psIdentifier ) + { + ProgramStageInstance programStageInstance = getProgramStageInstance( ps ); + + if ( programStageInstance != null ) + { + programStageInstances.add( programStageInstance ); + } + } + + return programStageInstances; + } + + private ProgramStageInstance getProgramStageInstance( String ps ) throws WebMessageException + { + if ( ps == null ) + { + return null; + } + + ProgramStageInstance programStageInstance = programStageInstanceService.getProgramStageInstance( ps ); + + if ( programStageInstance == null ) + { + throw new WebMessageException( WebMessageUtils.conflict( "Illegal programStageInstance identifier: " + ps ) ); + } + + return programStageInstance; + } + + private List getDataElements( List deIdentifier ) throws WebMessageException + { + List dataElements = new ArrayList<>(); + + for ( String de : deIdentifier ) + { + DataElement dataElement = getDataElement( de ); + + if ( dataElement != null ) + { + dataElements.add( dataElement ); + } + } + + return dataElements; + } + private DataElement getDataElement( String de ) throws WebMessageException { if ( de == null )