=== 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 19:54:21 +0000 +++ dhis-2/dhis-dxf2/src/main/java/org/hisp/dhis/dxf2/metadata/importers/DefaultIdentifiableObjectImporter.java 2012-05-17 20:26:32 +0000 @@ -37,7 +37,6 @@ import org.hisp.dhis.common.IdentifiableObject; import org.hisp.dhis.common.NameableObject; import org.hisp.dhis.common.annotation.Scanned; -import org.hisp.dhis.dataelement.DataElement; import org.hisp.dhis.dxf2.importsummary.ImportConflict; import org.hisp.dhis.dxf2.importsummary.ImportCount; import org.hisp.dhis.dxf2.metadata.ImportOptions; @@ -45,14 +44,12 @@ import org.hisp.dhis.dxf2.metadata.ObjectBridge; import org.hisp.dhis.dxf2.utils.OrganisationUnitUtils; import org.hisp.dhis.importexport.ImportStrategy; -import org.hisp.dhis.indicator.Indicator; 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.PeriodType; import org.hisp.dhis.system.util.ReflectionUtils; -import org.hisp.dhis.user.User; import org.springframework.beans.factory.annotation.Autowired; import java.lang.reflect.Field; @@ -211,13 +208,7 @@ for ( T object : objects ) { - Set attributeValues = getAttributeValues( object ); - - if ( attributeValues.size() > 0 ) - { - setAttributeValues( object, new HashSet() ); - } - + Set attributeValues = getAndClearAttributeValues( object ); List conflicts = importObjectLocal( object, options ); if ( !options.isDryRun() ) @@ -225,28 +216,7 @@ sessionFactory.getCurrentSession().flush(); } - if ( attributeValues.size() > 0 ) - { - updateAttributeValues( attributeValues ); - - for ( AttributeValue attributeValue : attributeValues ) - { - attributeService.addAttributeValue( attributeValue ); - } - - if ( !options.isDryRun() ) - { - sessionFactory.getCurrentSession().flush(); - } - - setAttributeValues( object, attributeValues ); - - if ( !options.isDryRun() ) - { - sessionFactory.getCurrentSession().flush(); - } - } - + updateAttributeValues( object, attributeValues, options.isDryRun() ); if ( !conflicts.isEmpty() ) { @@ -262,44 +232,57 @@ ReflectionUtils.invokeSetterMethod( "attributeValues", object, attributeValues ); } - private Set getAttributeValues( T object ) + private Set getAndClearAttributeValues( T object ) { - if ( DataElement.class.isInstance( object ) ) - { - return ((DataElement) object).getAttributeValues(); - } - else if ( Indicator.class.isInstance( object ) ) - { - return ((Indicator) object).getAttributeValues(); - } - else if ( OrganisationUnit.class.isInstance( object ) ) - { - return ((OrganisationUnit) object).getAttributeValues(); - } - else if ( User.class.isInstance( object ) ) - { - return ((User) object).getAttributeValues(); - } - - return new HashSet(); + Set attributeValues = new HashSet(); + + if ( ReflectionUtils.findGetterMethod( "attributeValues", object ) != null ) + { + attributeValues = ReflectionUtils.invokeGetterMethod( "attributeValues", object ); + + if ( attributeValues.size() > 0 ) + { + setAttributeValues( object, new HashSet() ); + } + } + + return attributeValues; } - private void updateAttributeValues( Set attributeValues ) + private void updateAttributeValues( T object, Set attributeValues, boolean dryRun ) { - for ( AttributeValue attributeValue : attributeValues ) + if ( attributeValues.size() > 0 ) { - Attribute attribute = objectBridge.getObject( attributeValue.getAttribute() ); - - log.info( "Attribute: " + attribute ); - - if ( attribute == null ) - { - log.warn( "Unknown reference to " + attributeValue.getAttribute() + " on object " + attributeValue ); - continue; - } - - attributeValue.setId( 0 ); - attributeValue.setAttribute( attribute ); + for ( AttributeValue attributeValue : attributeValues ) + { + Attribute attribute = objectBridge.getObject( attributeValue.getAttribute() ); + + if ( attribute == null ) + { + log.warn( "Unknown reference to " + attributeValue.getAttribute() + " on object " + attributeValue ); + continue; + } + + attributeValue.setId( 0 ); + attributeValue.setAttribute( attribute ); + } + + for ( AttributeValue attributeValue : attributeValues ) + { + attributeService.addAttributeValue( attributeValue ); + } + + if ( !dryRun ) + { + sessionFactory.getCurrentSession().flush(); + } + + setAttributeValues( object, attributeValues ); + + if ( !dryRun ) + { + sessionFactory.getCurrentSession().flush(); + } } } === modified file 'dhis-2/dhis-support/dhis-support-system/src/main/java/org/hisp/dhis/system/util/ReflectionUtils.java' --- dhis-2/dhis-support/dhis-support-system/src/main/java/org/hisp/dhis/system/util/ReflectionUtils.java 2012-04-18 20:24:12 +0000 +++ dhis-2/dhis-support/dhis-support-system/src/main/java/org/hisp/dhis/system/util/ReflectionUtils.java 2012-05-17 20:26:32 +0000 @@ -217,9 +217,10 @@ return object.getClass().getMethod( "get" + StringUtils.capitalize( fieldName ), classes ); } catch ( NoSuchMethodException e ) { - log.info( "Getter method was not found for fieldName: " + fieldName ); - return null; + // log.warn( "Getter method was not found for fieldName: " + fieldName ); } + + return null; } public static Method findSetterMethod( String fieldName, Object object, Class... classes ) @@ -248,7 +249,7 @@ if ( method == null ) { - log.info( "Setter method was not found for fieldName: " + fieldName ); + // log.warn( "Setter method was not found for fieldName: " + fieldName ); } return method; @@ -269,11 +270,11 @@ return (T) method.invoke( object ); } catch ( InvocationTargetException e ) { - log.info( "InvocationTargetException for fieldName: " + fieldName ); + log.warn( "InvocationTargetException for fieldName: " + fieldName ); return null; } catch ( IllegalAccessException e ) { - log.info( "IllegalAccessException for fieldName: " + fieldName ); + log.warn( "IllegalAccessException for fieldName: " + fieldName ); return null; } } @@ -293,11 +294,11 @@ return (T) method.invoke( object, objects ); } catch ( InvocationTargetException e ) { - log.info( "InvocationTargetException for fieldName: " + fieldName ); + log.warn( "InvocationTargetException for fieldName: " + fieldName ); return null; } catch ( IllegalAccessException e ) { - log.info( "IllegalAccessException for fieldName: " + fieldName ); + log.warn( "IllegalAccessException for fieldName: " + fieldName ); return null; } }