← Back to team overview

dhis2-devs team mailing list archive

[Branch ~dhis2-devs-core/dhis2/trunk] Rev 22104: minor fixes to importer

 

------------------------------------------------------------
revno: 22104
committer: Morten Olav Hansen <morten@xxxxxxxxx>
branch nick: dhis2
timestamp: Wed 2016-03-02 14:56:41 +0700
message:
  minor fixes to importer
modified:
  dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataelement/DataElementCategoryOptionCombo.java
  dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/preheat/DefaultPreheatService.java
  dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/metadata2/DefaultMetadataImportService.java
  dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/metadata2/MetadataImportParams.java
  dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/metadata2/MetadataImportService.java
  dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/metadata2/feedback/ImportReport.java
  dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/metadata2/objectbundle/DefaultObjectBundleService.java
  dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/metadata2/objectbundle/ObjectBundleValidation.java
  dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/webapi/controller/metadata/MetadataImportController.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-api/src/main/java/org/hisp/dhis/dataelement/DataElementCategoryOptionCombo.java'
--- dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataelement/DataElementCategoryOptionCombo.java	2016-03-01 22:30:53 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataelement/DataElementCategoryOptionCombo.java	2016-03-02 07:56:41 +0000
@@ -28,11 +28,13 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Set;
-
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonView;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper;
+import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
+import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;
 import org.apache.commons.lang3.StringUtils;
 import org.hisp.dhis.common.BaseDimensionalItemObject;
 import org.hisp.dhis.common.BaseIdentifiableObject;
@@ -43,13 +45,10 @@
 import org.hisp.dhis.common.view.DetailedView;
 import org.hisp.dhis.common.view.ExportView;
 
-import com.fasterxml.jackson.annotation.JsonIgnore;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.annotation.JsonView;
-import com.fasterxml.jackson.databind.annotation.JsonSerialize;
-import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper;
-import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
-import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
 
 /**
  * @author Abyot Aselefew
@@ -72,7 +71,7 @@
      */
     @Scanned
     private Set<DataElementCategoryOption> categoryOptions = new HashSet<>();
-    
+
     /**
      * Indicates whether to ignore data approval.
      */
@@ -85,7 +84,7 @@
     public DataElementCategoryOptionCombo()
     {
     }
-    
+
     // -------------------------------------------------------------------------
     // hashCode, equals and toString
     // -------------------------------------------------------------------------
@@ -224,28 +223,34 @@
         {
             return name;
         }
-        
+
         StringBuilder builder = new StringBuilder();
-        
+
+        if ( categoryCombo == null || categoryCombo.getCategories().isEmpty() )
+        {
+            return uid;
+        }
+
         List<DataElementCategory> categories = this.categoryCombo.getCategories();
-            
+
         for ( DataElementCategory category : categories )
         {
             List<DataElementCategoryOption> options = category.getCategoryOptions();
-            
-            optionLoop: for ( DataElementCategoryOption option : this.categoryOptions )
+
+            optionLoop:
+            for ( DataElementCategoryOption option : this.categoryOptions )
             {
                 if ( options.contains( option ) )
                 {
                     builder.append( option.getDisplayName() ).append( ", " );
-                    
+
                     continue optionLoop;
                 }
             }
         }
-        
+
         builder.delete( Math.max( builder.length() - 2, 0 ), builder.length() );
-        
+
         return StringUtils.substring( builder.toString(), 0, 255 );
     }
 
@@ -308,7 +313,7 @@
     {
         this.ignoreApproval = ignoreApproval;
     }
-    
+
     @Override
     public void mergeWith( IdentifiableObject other, MergeMode mergeMode )
     {

=== modified file 'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/preheat/DefaultPreheatService.java'
--- dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/preheat/DefaultPreheatService.java	2016-03-01 09:29:51 +0000
+++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/preheat/DefaultPreheatService.java	2016-03-02 07:56:41 +0000
@@ -116,10 +116,14 @@
                 for ( Class<? extends IdentifiableObject> klass : uidMap.keySet() )
                 {
                     Collection<String> identifiers = uidMap.get( klass );
-                    Query query = Query.from( schemaService.getDynamicSchema( klass ) );
-                    query.add( Restrictions.in( "id", identifiers ) );
-                    List<? extends IdentifiableObject> objects = queryService.query( query );
-                    preheat.put( PreheatIdentifier.UID, objects );
+
+                    if ( !identifiers.isEmpty() )
+                    {
+                        Query query = Query.from( schemaService.getDynamicSchema( klass ) );
+                        query.add( Restrictions.in( "id", identifiers ) );
+                        List<? extends IdentifiableObject> objects = queryService.query( query );
+                        preheat.put( PreheatIdentifier.UID, objects );
+                    }
                 }
             }
 
@@ -128,10 +132,14 @@
                 for ( Class<? extends IdentifiableObject> klass : codeMap.keySet() )
                 {
                     Collection<String> identifiers = codeMap.get( klass );
-                    Query query = Query.from( schemaService.getDynamicSchema( klass ) );
-                    query.add( Restrictions.in( "code", identifiers ) );
-                    List<? extends IdentifiableObject> objects = queryService.query( query );
-                    preheat.put( PreheatIdentifier.CODE, objects );
+
+                    if ( !identifiers.isEmpty() )
+                    {
+                        Query query = Query.from( schemaService.getDynamicSchema( klass ) );
+                        query.add( Restrictions.in( "code", identifiers ) );
+                        List<? extends IdentifiableObject> objects = queryService.query( query );
+                        preheat.put( PreheatIdentifier.CODE, objects );
+                    }
                 }
             }
         }

=== modified file 'dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/metadata2/DefaultMetadataImportService.java'
--- dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/metadata2/DefaultMetadataImportService.java	2016-03-02 05:22:04 +0000
+++ dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/metadata2/DefaultMetadataImportService.java	2016-03-02 07:56:41 +0000
@@ -29,6 +29,10 @@
  */
 
 import org.hisp.dhis.dxf2.metadata2.feedback.ImportReport;
+import org.hisp.dhis.dxf2.metadata2.objectbundle.ObjectBundle;
+import org.hisp.dhis.dxf2.metadata2.objectbundle.ObjectBundleParams;
+import org.hisp.dhis.dxf2.metadata2.objectbundle.ObjectBundleService;
+import org.hisp.dhis.dxf2.metadata2.objectbundle.ObjectBundleValidation;
 import org.hisp.dhis.user.CurrentUserService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
@@ -45,6 +49,9 @@
     @Autowired
     private CurrentUserService currentUserService;
 
+    @Autowired
+    private ObjectBundleService objectBundleService;
+
     @Override
     public ImportReport importMetadata( MetadataImportParams params )
     {
@@ -55,13 +62,12 @@
             params.setUser( currentUserService.getCurrentUser() );
         }
 
-        return report;
-    }
-
-    @Override
-    public ImportReport validate( MetadataImportParams params )
-    {
-        ImportReport report = new ImportReport();
+        ObjectBundleParams bundleParams = params.toObjectBundleParams();
+        ObjectBundle objectBundle = objectBundleService.create( bundleParams );
+
+        ObjectBundleValidation validation = objectBundleService.validate( objectBundle );
+        report.setErrorReports( validation.getErrorReports() );
+
         return report;
     }
 

=== modified file 'dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/metadata2/MetadataImportParams.java'
--- dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/metadata2/MetadataImportParams.java	2016-03-02 05:22:04 +0000
+++ dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/metadata2/MetadataImportParams.java	2016-03-02 07:56:41 +0000
@@ -31,6 +31,7 @@
 import org.hisp.dhis.common.IdentifiableObject;
 import org.hisp.dhis.common.MergeMode;
 import org.hisp.dhis.dxf2.metadata2.objectbundle.ObjectBundleMode;
+import org.hisp.dhis.dxf2.metadata2.objectbundle.ObjectBundleParams;
 import org.hisp.dhis.importexport.ImportStrategy;
 import org.hisp.dhis.preheat.PreheatIdentifier;
 import org.hisp.dhis.preheat.PreheatMode;
@@ -168,4 +169,18 @@
         objects.forEach( this::addObject );
         return this;
     }
+
+    public ObjectBundleParams toObjectBundleParams()
+    {
+        ObjectBundleParams params = new ObjectBundleParams();
+        params.setUser( user );
+        params.setImportMode( importMode );
+        params.setObjects( objects );
+        params.setPreheatIdentifier( preheatIdentifier );
+        params.setPreheatMode( preheatMode );
+        params.setObjectBundleMode( objectBundleMode );
+        params.setMergeMode( mergeMode );
+
+        return params;
+    }
 }

=== modified file 'dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/metadata2/MetadataImportService.java'
--- dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/metadata2/MetadataImportService.java	2016-03-02 05:22:04 +0000
+++ dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/metadata2/MetadataImportService.java	2016-03-02 07:56:41 +0000
@@ -40,7 +40,5 @@
 {
     ImportReport importMetadata( MetadataImportParams params );
 
-    ImportReport validate( MetadataImportParams params );
-
     MetadataImportParams getParamsFromMap( Map<String, List<String>> parameters );
 }

=== modified file 'dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/metadata2/feedback/ImportReport.java'
--- dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/metadata2/feedback/ImportReport.java	2016-03-02 05:22:04 +0000
+++ dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/metadata2/feedback/ImportReport.java	2016-03-02 07:56:41 +0000
@@ -32,6 +32,7 @@
 import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
 import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;
 import org.hisp.dhis.common.DxfNamespaces;
+import org.hisp.dhis.feedback.ErrorCode;
 import org.hisp.dhis.feedback.ErrorReport;
 
 import java.util.ArrayList;
@@ -47,7 +48,7 @@
 {
     private ImportStats stats = new ImportStats();
 
-    private Map<Class<?>, List<ErrorReport>> errorReportMap = new HashMap<>();
+    private Map<Class<?>, Map<ErrorCode, List<ErrorReport>>> errorReports = new HashMap<>();
 
     public ImportReport()
     {
@@ -60,42 +61,65 @@
         return stats;
     }
 
-    public void addErrorReport( ErrorReport errorReport )
-    {
-        if ( !errorReportMap.containsKey( errorReport.getMainKlass() ) )
-        {
-            errorReportMap.put( errorReport.getMainKlass(), new ArrayList<>() );
-        }
-
-        errorReportMap.get( errorReport.getMainKlass() ).add( errorReport );
-    }
-
     public void addErrorReports( List<ErrorReport> errorReports )
     {
-        if ( errorReports == null || errorReports.isEmpty() )
-        {
-            return;
-        }
-
-        Class<?> mainKlass = errorReports.get( 0 ).getMainKlass();
-
-        if ( !errorReportMap.containsKey( mainKlass ) )
-        {
-            errorReportMap.put( mainKlass, new ArrayList<>() );
-        }
-
-        errorReportMap.get( mainKlass ).addAll( errorReports );
+        errorReports.forEach( this::addErrorReport );
+    }
+
+    public <T extends ErrorReport> void addErrorReport( T errorReport )
+    {
+        if ( !errorReports.containsKey( errorReport.getMainKlass() ) )
+        {
+            errorReports.put( errorReport.getMainKlass(), new HashMap<>() );
+        }
+
+        if ( !errorReports.get( errorReport.getMainKlass() ).containsKey( errorReport.getErrorCode() ) )
+        {
+            errorReports.get( errorReport.getMainKlass() ).put( errorReport.getErrorCode(), new ArrayList<>() );
+        }
+
+        errorReports.get( errorReport.getMainKlass() ).get( errorReport.getErrorCode() ).add( errorReport );
+    }
+
+    public void addErrorReport( Class<?> mainKlass, ErrorCode errorCode, Object... args )
+    {
+        ErrorReport errorReport = new ErrorReport( mainKlass, errorCode, args );
+        addErrorReport( errorReport );
     }
 
     @JsonProperty
     @JacksonXmlProperty( namespace = DxfNamespaces.DXF_2_0 )
-    public Map<Class<?>, List<ErrorReport>> getErrorReportMap()
-    {
-        return errorReportMap;
-    }
-
-    public List<List<ErrorReport>> getErrorReports()
-    {
-        return new ArrayList<>( errorReportMap.values() );
+    public Map<Class<?>, Map<ErrorCode, List<ErrorReport>>> getErrorReports()
+    {
+        return errorReports;
+    }
+
+    public Map<ErrorCode, List<ErrorReport>> getErrorReports( Class<?> klass )
+    {
+        Map<ErrorCode, List<ErrorReport>> map = errorReports.get( klass );
+
+        if ( map == null )
+        {
+            return new HashMap<>();
+        }
+
+        return map;
+    }
+
+    public List<ErrorReport> getErrorReports( Class<?> klass, ErrorCode errorCode )
+    {
+        Map<ErrorCode, List<ErrorReport>> map = errorReports.get( klass );
+
+        if ( !map.containsKey( errorCode ) )
+        {
+            return new ArrayList<>();
+        }
+
+        return map.get( errorCode );
+    }
+
+    public void setErrorReports( Map<Class<?>, Map<ErrorCode, List<ErrorReport>>> errorReports )
+    {
+        this.errorReports = errorReports;
     }
 }

=== modified file 'dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/metadata2/objectbundle/DefaultObjectBundleService.java'
--- dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/metadata2/objectbundle/DefaultObjectBundleService.java	2016-03-01 07:51:42 +0000
+++ dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/metadata2/objectbundle/DefaultObjectBundleService.java	2016-03-02 07:56:41 +0000
@@ -191,7 +191,7 @@
             }
 
             List<List<PreheatErrorReport>> referenceErrors = preheatService.checkReferences( bundle.getObjects().get( klass ), bundle.getPreheat(), bundle.getPreheatIdentifier() );
-            referenceErrors.forEach( objectBundleValidation::addPreheatErrorReports ); // collapsing for now, we might want to give pr object ref list
+            referenceErrors.forEach( objectBundleValidation::addErrorReports ); // collapsing for now, we might want to give pr object ref list
 
             List<List<ValidationViolation>> validationViolations = new ArrayList<>();
 

=== modified file 'dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/metadata2/objectbundle/ObjectBundleValidation.java'
--- dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/metadata2/objectbundle/ObjectBundleValidation.java	2016-03-01 07:51:42 +0000
+++ dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/metadata2/objectbundle/ObjectBundleValidation.java	2016-03-02 07:56:41 +0000
@@ -31,7 +31,6 @@
 import org.hisp.dhis.common.IdentifiableObject;
 import org.hisp.dhis.feedback.ErrorCode;
 import org.hisp.dhis.feedback.ErrorReport;
-import org.hisp.dhis.preheat.PreheatErrorReport;
 import org.hisp.dhis.schema.validation.ValidationViolation;
 
 import java.util.ArrayList;
@@ -52,9 +51,9 @@
     {
     }
 
-    public void addPreheatErrorReports( List<PreheatErrorReport> preheatErrorReports )
+    public void addErrorReports( List<? extends ErrorReport> errorReports )
     {
-        preheatErrorReports.forEach( this::addErrorReport );
+        errorReports.forEach( this::addErrorReport );
     }
 
     public <T extends ErrorReport> void addErrorReport( T errorReport )

=== modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/webapi/controller/metadata/MetadataImportController.java'
--- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/webapi/controller/metadata/MetadataImportController.java	2016-03-02 05:22:04 +0000
+++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/webapi/controller/metadata/MetadataImportController.java	2016-03-02 07:56:41 +0000
@@ -28,11 +28,9 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-import org.hisp.dhis.common.IdentifiableObject;
 import org.hisp.dhis.dxf2.metadata2.MetadataImportParams;
 import org.hisp.dhis.dxf2.metadata2.MetadataImportService;
 import org.hisp.dhis.dxf2.metadata2.feedback.ImportReport;
-import org.hisp.dhis.dxf2.metadata2.objectbundle.ObjectBundleMode;
 import org.hisp.dhis.render.RenderFormat;
 import org.hisp.dhis.render.RenderService;
 import org.hisp.dhis.webapi.service.ContextService;
@@ -45,8 +43,6 @@
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
-import java.util.List;
-import java.util.Map;
 
 /**
  * @author Morten Olav Hansen <mortenoh@xxxxxxxxx>
@@ -68,18 +64,9 @@
     public void postMetadata( HttpServletRequest request, HttpServletResponse response ) throws IOException
     {
         MetadataImportParams params = metadataImportService.getParamsFromMap( contextService.getParameterValuesMap() );
-        Map<Class<? extends IdentifiableObject>, List<IdentifiableObject>> objects = renderService.fromMetadata( request.getInputStream(), RenderFormat.JSON );
-        params.setObjects( objects );
+        params.setObjects( renderService.fromMetadata( request.getInputStream(), RenderFormat.JSON ) );
 
-        if ( ObjectBundleMode.VALIDATE == params.getObjectBundleMode() )
-        {
-            ImportReport importReport = metadataImportService.validate( params );
-            renderService.toJson( response.getOutputStream(), importReport );
-        }
-        else if ( ObjectBundleMode.COMMIT == params.getObjectBundleMode() )
-        {
-            ImportReport importReport = metadataImportService.importMetadata( params );
-            renderService.toJson( response.getOutputStream(), importReport );
-        }
+        ImportReport importReport = metadataImportService.importMetadata( params );
+        renderService.toJson( response.getOutputStream(), importReport );
     }
 }