=== modified file 'dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/events/trackedentity/AbstractTrackedEntityInstanceService.java' --- dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/events/trackedentity/AbstractTrackedEntityInstanceService.java 2015-10-22 05:16:58 +0000 +++ dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/events/trackedentity/AbstractTrackedEntityInstanceService.java 2015-10-23 05:08:59 +0000 @@ -358,10 +358,10 @@ if ( entityInstance != null ) { teiService.deleteTrackedEntityInstance( entityInstance ); - return new ImportSummary( ImportStatus.SUCCESS, "Deletion of tracked entity instance " + uid + " was successful." ); + return new ImportSummary( ImportStatus.SUCCESS, "Deletion of tracked entity instance " + uid + " was successful." ).incrementDeleted(); } - return new ImportSummary( ImportStatus.ERROR, "ID " + uid + " does not point to a valid tracked entity instance" ); + return new ImportSummary( ImportStatus.ERROR, "ID " + uid + " does not point to a valid tracked entity instance" ).incrementIgnored(); } @Override === modified file 'dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/events/trackedentity/JacksonTrackedEntityInstanceService.java' --- dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/events/trackedentity/JacksonTrackedEntityInstanceService.java 2015-10-20 06:46:47 +0000 +++ dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/events/trackedentity/JacksonTrackedEntityInstanceService.java 2015-10-23 05:08:59 +0000 @@ -31,6 +31,7 @@ import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.dataformat.xml.XmlMapper; +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.importexport.ImportStrategy; @@ -43,6 +44,7 @@ import java.nio.charset.Charset; import java.util.ArrayList; import java.util.List; +import java.util.stream.Collectors; /** * @author Morten Olav Hansen @@ -97,7 +99,7 @@ // ------------------------------------------------------------------------- @Override - public ImportSummaries addTrackedEntityInstanceXml( InputStream inputStream, ImportStrategy strategy ) throws IOException + public ImportSummaries addTrackedEntityInstanceXml( InputStream inputStream, ImportOptions importOptions ) throws IOException { String input = StreamUtils.copyToString( inputStream, Charset.forName( "UTF-8" ) ); List trackedEntityInstances = new ArrayList<>(); @@ -113,11 +115,11 @@ trackedEntityInstances.add( fromXml ); } - return addTrackedEntityInstance( trackedEntityInstances, strategy ); + return addTrackedEntityInstance( trackedEntityInstances, importOptions ); } @Override - public ImportSummaries addTrackedEntityInstanceJson( InputStream inputStream, ImportStrategy strategy ) throws IOException + public ImportSummaries addTrackedEntityInstanceJson( InputStream inputStream, ImportOptions importOptions ) throws IOException { String input = StreamUtils.copyToString( inputStream, Charset.forName( "UTF-8" ) ); List trackedEntityInstances = new ArrayList<>(); @@ -133,44 +135,50 @@ trackedEntityInstances.add( fromJson ); } - return addTrackedEntityInstance( trackedEntityInstances, strategy ); + return addTrackedEntityInstance( trackedEntityInstances, importOptions ); } - private ImportSummaries addTrackedEntityInstance( List trackedEntityInstances, ImportStrategy strategy ) + private ImportSummaries addTrackedEntityInstance( List trackedEntityInstances, ImportOptions importOptions ) { ImportSummaries importSummaries = new ImportSummaries(); - TrackedEntityInstances create = new TrackedEntityInstances(); - TrackedEntityInstances update = new TrackedEntityInstances(); + List create = new ArrayList<>(); + List update = new ArrayList<>(); + List delete = new ArrayList<>(); - if ( strategy.isCreate() ) + if ( importOptions.getImportStrategy().isCreate() ) { - create.getTrackedEntityInstances().addAll( trackedEntityInstances ); + create.addAll( trackedEntityInstances ); } - else if ( strategy.isCreateAndUpdate() ) + else if ( importOptions.getImportStrategy().isCreateAndUpdate() ) { for ( TrackedEntityInstance trackedEntityInstance : trackedEntityInstances ) { if ( StringUtils.isEmpty( trackedEntityInstance.getTrackedEntityInstance() ) ) { - create.getTrackedEntityInstances().add( trackedEntityInstance ); + create.add( trackedEntityInstance ); } else { if ( !teiService.trackedEntityInstanceExists( trackedEntityInstance.getTrackedEntityInstance() ) ) { - create.getTrackedEntityInstances().add( trackedEntityInstance ); + create.add( trackedEntityInstance ); } else { - update.getTrackedEntityInstances().add( trackedEntityInstance ); + update.add( trackedEntityInstance ); } } } } + else if ( importOptions.getImportStrategy().isDelete() ) + { + delete.addAll( trackedEntityInstances.stream().map( TrackedEntityInstance::getTrackedEntityInstance ).collect( Collectors.toList() ) ); + } - importSummaries.addImportSummaries( addTrackedEntityInstances( create.getTrackedEntityInstances() ) ); - importSummaries.addImportSummaries( updateTrackedEntityInstances( update.getTrackedEntityInstances() ) ); + importSummaries.addImportSummaries( addTrackedEntityInstances( create ) ); + importSummaries.addImportSummaries( updateTrackedEntityInstances( update ) ); + importSummaries.addImportSummaries( deleteTrackedEntityInstances( delete ) ); return importSummaries; } === modified file 'dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/events/trackedentity/TrackedEntityInstanceService.java' --- dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/events/trackedentity/TrackedEntityInstanceService.java 2015-10-22 05:16:58 +0000 +++ dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/events/trackedentity/TrackedEntityInstanceService.java 2015-10-23 05:08:59 +0000 @@ -28,9 +28,9 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +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.importexport.ImportStrategy; import org.hisp.dhis.trackedentity.TrackedEntityInstanceQueryParams; import java.io.IOException; @@ -60,9 +60,9 @@ // CREATE // ------------------------------------------------------------------------- - ImportSummaries addTrackedEntityInstanceXml( InputStream inputStream, ImportStrategy strategy ) throws IOException; + ImportSummaries addTrackedEntityInstanceXml( InputStream inputStream, ImportOptions importOptions ) throws IOException; - ImportSummaries addTrackedEntityInstanceJson( InputStream inputStream, ImportStrategy strategy ) throws IOException; + ImportSummaries addTrackedEntityInstanceJson( InputStream inputStream, ImportOptions importOptions ) throws IOException; ImportSummaries addTrackedEntityInstances( List trackedEntityInstances ); === modified file 'dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/metadata/ImportTypeSummary.java' --- dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/metadata/ImportTypeSummary.java 2015-07-08 04:24:08 +0000 +++ dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/metadata/ImportTypeSummary.java 2015-10-23 05:08:59 +0000 @@ -123,24 +123,32 @@ // Helpers //------------------------------------------------------------------------- - public void incrementImported() + @Override + public ImportTypeSummary incrementImported() { importCount.incrementImported(); + return this; } - public void incrementUpdated() + @Override + public ImportTypeSummary incrementUpdated() { importCount.incrementUpdated(); + return this; } - public void incrementIgnored() + @Override + public ImportTypeSummary incrementIgnored() { importCount.incrementIgnored(); + return this; } - public void incrementDeleted() + @Override + public ImportTypeSummary incrementDeleted() { importCount.incrementDeleted(); + return this; } @Override === modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/webapi/controller/event/TrackedEntityInstanceController.java' --- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/webapi/controller/event/TrackedEntityInstanceController.java 2015-10-22 05:16:58 +0000 +++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/webapi/controller/event/TrackedEntityInstanceController.java 2015-10-23 05:08:59 +0000 @@ -34,6 +34,7 @@ import org.hisp.dhis.common.OrganisationUnitSelectionMode; import org.hisp.dhis.common.cache.CacheStrategy; import org.hisp.dhis.commons.util.TextUtils; +import org.hisp.dhis.dxf2.common.ImportOptions; import org.hisp.dhis.dxf2.events.trackedentity.TrackedEntityInstance; import org.hisp.dhis.dxf2.events.trackedentity.TrackedEntityInstanceService; import org.hisp.dhis.dxf2.importsummary.ImportStatus; @@ -315,10 +316,11 @@ @RequestMapping( value = "", method = RequestMethod.POST, consumes = MediaType.APPLICATION_XML_VALUE ) @PreAuthorize( "hasRole('ALL') or hasRole('F_TRACKED_ENTITY_INSTANCE_ADD')" ) - public void postTrackedEntityInstanceXml( @RequestParam( defaultValue = "CREATE" ) ImportStrategy strategy, HttpServletRequest request, HttpServletResponse response ) - throws IOException + public void postTrackedEntityInstanceXml( @RequestParam( defaultValue = "CREATE" ) ImportStrategy strategy, + ImportOptions importOptions, HttpServletRequest request, HttpServletResponse response ) throws IOException { - ImportSummaries importSummaries = trackedEntityInstanceService.addTrackedEntityInstanceXml( request.getInputStream(), strategy ); + importOptions.setStrategy( strategy ); + ImportSummaries importSummaries = trackedEntityInstanceService.addTrackedEntityInstanceXml( request.getInputStream(), importOptions ); response.setContentType( MediaType.APPLICATION_XML_VALUE ); if ( importSummaries.getImportSummaries().size() > 1 ) @@ -352,10 +354,11 @@ @RequestMapping( value = "", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE ) @PreAuthorize( "hasRole('ALL') or hasRole('F_TRACKED_ENTITY_INSTANCE_ADD')" ) - public void postTrackedEntityInstanceJson( @RequestParam( defaultValue = "CREATE" ) ImportStrategy strategy, HttpServletRequest request, HttpServletResponse response ) - throws IOException + public void postTrackedEntityInstanceJson( @RequestParam( defaultValue = "CREATE" ) ImportStrategy strategy, + ImportOptions importOptions, HttpServletRequest request, HttpServletResponse response ) throws IOException { - ImportSummaries importSummaries = trackedEntityInstanceService.addTrackedEntityInstanceJson( request.getInputStream(), strategy ); + importOptions.setStrategy( strategy ); + ImportSummaries importSummaries = trackedEntityInstanceService.addTrackedEntityInstanceJson( request.getInputStream(), importOptions ); response.setContentType( MediaType.APPLICATION_JSON_VALUE ); if ( importSummaries.getImportSummaries().size() > 1 )