=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataset/DataSet.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataset/DataSet.java 2012-05-21 09:25:15 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataset/DataSet.java 2012-05-21 13:28:46 +0000 @@ -417,12 +417,10 @@ this.indicators = indicators; } - /* @JsonProperty @JsonView( {DetailedView.class, ExportView.class} ) @JacksonXmlElementWrapper( localName = "compulsoryDataElementOperands", namespace = Dxf2Namespace.NAMESPACE ) @JacksonXmlProperty( localName = "compulsoryDataElementOperand", namespace = Dxf2Namespace.NAMESPACE ) - */ public Set getCompulsoryDataElementOperands() { return compulsoryDataElementOperands; === modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataset/Section.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataset/Section.java 2012-05-21 09:25:15 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataset/Section.java 2012-05-21 13:28:46 +0000 @@ -233,12 +233,10 @@ this.sortOrder = sortOrder; } - /* @JsonProperty @JsonView( {DetailedView.class, ExportView.class} ) @JacksonXmlElementWrapper( localName = "greyedFields", namespace = Dxf2Namespace.NAMESPACE ) @JacksonXmlProperty( localName = "greyedField", namespace = Dxf2Namespace.NAMESPACE ) - */ public Set getGreyedFields() { return greyedFields; === modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/validation/ValidationRule.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/validation/ValidationRule.java 2012-05-17 09:11:30 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/validation/ValidationRule.java 2012-05-21 13:28:46 +0000 @@ -86,7 +86,7 @@ } public ValidationRule( String name, String description, String type, - Operator operator, Expression leftSide, Expression rightSide ) + Operator operator, Expression leftSide, Expression rightSide ) { this.name = name; this.description = description; @@ -207,11 +207,9 @@ this.type = type; } - /* @JsonProperty @JsonView( {DetailedView.class, ExportView.class} ) @JacksonXmlProperty( namespace = Dxf2Namespace.NAMESPACE ) - */ public Expression getLeftSide() { return leftSide; @@ -222,11 +220,9 @@ this.leftSide = leftSide; } - /* @JsonProperty @JsonView( {DetailedView.class, ExportView.class} ) @JacksonXmlProperty( namespace = Dxf2Namespace.NAMESPACE ) - */ public Expression getRightSide() { return rightSide; === modified file 'dhis-2/dhis-dxf2/src/main/java/org/hisp/dhis/dxf2/metadata/importers/DefaultIdentifiableObjectImporter.java' --- dhis-2/dhis-dxf2/src/main/java/org/hisp/dhis/dxf2/metadata/importers/DefaultIdentifiableObjectImporter.java 2012-05-17 20:26:32 +0000 +++ dhis-2/dhis-dxf2/src/main/java/org/hisp/dhis/dxf2/metadata/importers/DefaultIdentifiableObjectImporter.java 2012-05-21 13:28:46 +0000 @@ -37,17 +37,19 @@ import org.hisp.dhis.common.IdentifiableObject; import org.hisp.dhis.common.NameableObject; import org.hisp.dhis.common.annotation.Scanned; +import org.hisp.dhis.dataelement.DataElementOperand; import org.hisp.dhis.dxf2.importsummary.ImportConflict; import org.hisp.dhis.dxf2.importsummary.ImportCount; import org.hisp.dhis.dxf2.metadata.ImportOptions; import org.hisp.dhis.dxf2.metadata.Importer; import org.hisp.dhis.dxf2.metadata.ObjectBridge; import org.hisp.dhis.dxf2.utils.OrganisationUnitUtils; +import org.hisp.dhis.expression.Expression; import org.hisp.dhis.importexport.ImportStrategy; import org.hisp.dhis.organisationunit.OrganisationUnit; import org.hisp.dhis.organisationunit.comparator.OrganisationUnitComparator; import org.hisp.dhis.period.Period; -import org.hisp.dhis.period.PeriodStore; +import org.hisp.dhis.period.PeriodService; import org.hisp.dhis.period.PeriodType; import org.hisp.dhis.system.util.ReflectionUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -70,7 +72,7 @@ //------------------------------------------------------------------------------------------------------- @Autowired - private PeriodStore periodStore; + private PeriodService periodService; @Autowired private AttributeService attributeService; @@ -208,7 +210,14 @@ for ( T object : objects ) { + log.info( "Importing object " + object + " (" + object.getClass().getSimpleName() + ")" ); + Set attributeValues = getAndClearAttributeValues( object ); + Set greyedFields = getAndClearDataElementOperands( object, "greyedFields" ); + Set compulsoryDataElementOperands = getAndClearDataElementOperands( object, "compulsoryDataElementOperands" ); + Expression leftSide = getAndClearExpression( object, "leftSide" ); + Expression rightSide = getAndClearExpression( object, "rightSide" ); + List conflicts = importObjectLocal( object, options ); if ( !options.isDryRun() ) @@ -227,11 +236,43 @@ return importConflicts; } - private void setAttributeValues( T object, Set attributeValues ) - { - ReflectionUtils.invokeSetterMethod( "attributeValues", object, attributeValues ); - } - + // FIXME add type check + private Expression getAndClearExpression( T object, String field ) + { + Expression expression = null; + + if ( ReflectionUtils.findGetterMethod( field, object ) != null ) + { + expression = ReflectionUtils.invokeGetterMethod( field, object ); + + if ( expression != null ) + { + ReflectionUtils.invokeSetterMethod( field, object, new Object[]{null} ); + } + } + + return expression; + } + + // FIXME add type check + private Set getAndClearDataElementOperands( T object, String field ) + { + Set dataElementOperands = new HashSet(); + + if ( ReflectionUtils.findGetterMethod( field, object ) != null ) + { + dataElementOperands = ReflectionUtils.invokeGetterMethod( field, object ); + + if ( dataElementOperands.size() > 0 ) + { + ReflectionUtils.invokeSetterMethod( field, object, new HashSet() ); + } + } + + return dataElementOperands; + } + + // FIXME add type check private Set getAndClearAttributeValues( T object ) { Set attributeValues = new HashSet(); @@ -242,7 +283,7 @@ if ( attributeValues.size() > 0 ) { - setAttributeValues( object, new HashSet() ); + ReflectionUtils.invokeSetterMethod( "attributeValues", object, new HashSet() ); } } @@ -277,7 +318,7 @@ sessionFactory.getCurrentSession().flush(); } - setAttributeValues( object, attributeValues ); + ReflectionUtils.invokeSetterMethod( "attributeValues", object, attributeValues ); if ( !dryRun ) { @@ -517,7 +558,7 @@ else if ( Period.class.isAssignableFrom( identifiableObject.getClass() ) ) { Period period = (Period) identifiableObject; - period = periodStore.reloadForceAddPeriod( period ); + period = periodService.reloadPeriod( period ); if ( !options.isDryRun() ) { @@ -544,7 +585,7 @@ if ( ref != null ) { identifiableObjects.put( field, ref ); - ReflectionUtils.invokeSetterMethod( field.getName(), identifiableObject, new Object[]{ null } ); + ReflectionUtils.invokeSetterMethod( field.getName(), identifiableObject, new Object[]{null} ); } }