dhis2-devs team mailing list archive
-
dhis2-devs team
-
Mailing list archive
-
Message #43605
[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 );
}
}