------------------------------------------------------------ revno: 22104 committer: Morten Olav Hansen <mor...@dhis2.org> 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 <morte...@gmail.com> @@ -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 ); } }
_______________________________________________ Mailing list: https://launchpad.net/~dhis2-devs Post to : dhis2-devs@lists.launchpad.net Unsubscribe : https://launchpad.net/~dhis2-devs More help : https://help.launchpad.net/ListHelp