dhis2-devs team mailing list archive
-
dhis2-devs team
-
Mailing list archive
-
Message #40946
[Branch ~dhis2-devs-core/dhis2/trunk] Rev 20858: support bulk deletion of tei
------------------------------------------------------------
revno: 20858
committer: Morten Olav Hansen <mortenoh@xxxxxxxxx>
branch nick: dhis2
timestamp: Fri 2015-10-23 12:08:59 +0700
message:
support bulk deletion of tei
modified:
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/JacksonTrackedEntityInstanceService.java
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/metadata/ImportTypeSummary.java
dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/webapi/controller/event/TrackedEntityInstanceController.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-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 <mortenoh@xxxxxxxxx>
@@ -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<TrackedEntityInstance> 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<TrackedEntityInstance> trackedEntityInstances = new ArrayList<>();
@@ -133,44 +135,50 @@
trackedEntityInstances.add( fromJson );
}
- return addTrackedEntityInstance( trackedEntityInstances, strategy );
+ return addTrackedEntityInstance( trackedEntityInstances, importOptions );
}
- private ImportSummaries addTrackedEntityInstance( List<TrackedEntityInstance> trackedEntityInstances, ImportStrategy strategy )
+ private ImportSummaries addTrackedEntityInstance( List<TrackedEntityInstance> trackedEntityInstances, ImportOptions importOptions )
{
ImportSummaries importSummaries = new ImportSummaries();
- TrackedEntityInstances create = new TrackedEntityInstances();
- TrackedEntityInstances update = new TrackedEntityInstances();
+ List<TrackedEntityInstance> create = new ArrayList<>();
+ List<TrackedEntityInstance> update = new ArrayList<>();
+ List<String> 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<TrackedEntityInstance> 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 )