=== modified file 'dhis-2/dhis-dxf2/src/main/java/org/hisp/dhis/dxf2/metadata/DefaultImportService.java' --- dhis-2/dhis-dxf2/src/main/java/org/hisp/dhis/dxf2/metadata/DefaultImportService.java 2012-04-13 01:16:51 +0000 +++ dhis-2/dhis-dxf2/src/main/java/org/hisp/dhis/dxf2/metadata/DefaultImportService.java 2012-04-13 08:17:00 +0000 @@ -27,25 +27,15 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -import org.hisp.dhis.common.BaseIdentifiableObject; -import org.hisp.dhis.constant.Constant; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.hisp.dhis.dxf2.importsummary.ImportConflict; import org.hisp.dhis.dxf2.importsummary.ImportCount; import org.hisp.dhis.dxf2.importsummary.ImportSummary; -import org.hisp.dhis.dxf2.metadata.importers.DefaultImporter; -import org.hisp.dhis.indicator.Indicator; -import org.hisp.dhis.indicator.IndicatorGroup; -import org.hisp.dhis.indicator.IndicatorGroupSet; -import org.hisp.dhis.indicator.IndicatorType; -import org.hisp.dhis.organisationunit.OrganisationUnit; -import org.hisp.dhis.organisationunit.OrganisationUnitGroup; -import org.hisp.dhis.organisationunit.OrganisationUnitGroupSet; -import org.hisp.dhis.organisationunit.OrganisationUnitLevel; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import javax.annotation.PostConstruct; import java.util.HashSet; import java.util.List; import java.util.Set; @@ -58,6 +48,8 @@ public class DefaultImportService implements ImportService { + private static final Log log = LogFactory.getLog( DefaultImportService.class ); + //------------------------------------------------------------------------------------------------------- // Dependencies //------------------------------------------------------------------------------------------------------- @@ -65,46 +57,6 @@ @Autowired( required = false ) private Set importerClasses = new HashSet(); - private Importer findImporterClass( List clazzes ) - { - if ( !clazzes.isEmpty() ) - { - return findImporterClass( clazzes.get( 0 ).getClass() ); - } - - return null; - } - - private Importer findImporterClass( Class clazz ) - { - for ( Importer i : importerClasses ) - { - if ( i.canHandle( clazz ) ) - { - return i; - } - } - - return null; - } - - private void doImport( List objects, ImportOptions importOptions, ImportSummary importSummary ) - { - if ( !objects.isEmpty() ) - { - Importer importer = findImporterClass( objects ); - - if ( importer != null ) - { - List conflicts = importer.importObjects( objects, importOptions ); - ImportCount count = importer.getCurrentImportCount(); - - importSummary.getConflicts().addAll( conflicts ); - // importSummary.getCounts().add( count ); //FIXME - } - } - } - //------------------------------------------------------------------------------------------------------- // ImportService Implementation //------------------------------------------------------------------------------------------------------- @@ -124,7 +76,11 @@ // the correct order // FIXME this is not currently in the "correct" order + doImport( metaData.getConcepts(), importOptions, importSummary ); + doImport( metaData.getConstants(), importOptions, importSummary ); + doImport( metaData.getDocuments(), importOptions, importSummary ); doImport( metaData.getAttributeTypes(), importOptions, importSummary ); + doImport( metaData.getOptionSets(), importOptions, importSummary ); doImport( metaData.getCategories(), importOptions, importSummary ); doImport( metaData.getCategoryCombos(), importOptions, importSummary ); doImport( metaData.getCategoryOptions(), importOptions, importSummary ); @@ -132,10 +88,6 @@ doImport( metaData.getDataElements(), importOptions, importSummary ); doImport( metaData.getDataElementGroups(), importOptions, importSummary ); doImport( metaData.getDataElementGroupSets(), importOptions, importSummary ); - doImport( metaData.getCharts(), importOptions, importSummary ); - doImport( metaData.getConstants(), importOptions, importSummary ); - doImport( metaData.getDataSets(), importOptions, importSummary ); - doImport( metaData.getDocuments(), importOptions, importSummary ); doImport( metaData.getIndicatorTypes(), importOptions, importSummary ); doImport( metaData.getIndicators(), importOptions, importSummary ); doImport( metaData.getIndicatorGroups(), importOptions, importSummary ); @@ -148,15 +100,66 @@ doImport( metaData.getOrganisationUnits(), importOptions, importSummary ); doImport( metaData.getOrganisationUnitGroups(), importOptions, importSummary ); doImport( metaData.getOrganisationUnitGroupSets(), importOptions, importSummary ); - doImport( metaData.getReports(), importOptions, importSummary ); - doImport( metaData.getReportTables(), importOptions, importSummary ); doImport( metaData.getSqlViews(), importOptions, importSummary ); doImport( metaData.getUsers(), importOptions, importSummary ); doImport( metaData.getUserGroups(), importOptions, importSummary ); doImport( metaData.getUserAuthorityGroups(), importOptions, importSummary ); doImport( metaData.getValidationRules(), importOptions, importSummary ); doImport( metaData.getValidationRuleGroups(), importOptions, importSummary ); + doImport( metaData.getDataDictionaries(), importOptions, importSummary ); + doImport( metaData.getReports(), importOptions, importSummary ); + doImport( metaData.getReportTables(), importOptions, importSummary ); + doImport( metaData.getCharts(), importOptions, importSummary ); + doImport( metaData.getDataSets(), importOptions, importSummary ); return importSummary; } + + //------------------------------------------------------------------------------------------------------- + // Helpers + //------------------------------------------------------------------------------------------------------- + + private Importer findImporterClass( List clazzes ) + { + if ( !clazzes.isEmpty() ) + { + return findImporterClass( clazzes.get( 0 ).getClass() ); + } + + return null; + } + + private Importer findImporterClass( Class clazz ) + { + for ( Importer i : importerClasses ) + { + if ( i.canHandle( clazz ) ) + { + return i; + } + } + + return null; + } + + private void doImport( List objects, ImportOptions importOptions, ImportSummary importSummary ) + { + if ( !objects.isEmpty() ) + { + Importer importer = findImporterClass( objects ); + + if ( importer != null ) + { + List conflicts = importer.importObjects( objects, importOptions ); + ImportCount count = importer.getCurrentImportCount(); + + importSummary.getConflicts().addAll( conflicts ); + // importSummary.getCounts().add( count ); //FIXME + } + else + { + log.info( "Importer for object of type " + objects.get( 0 ).getClass().getSimpleName() + " not found." ); + } + } + } } === modified file 'dhis-2/dhis-dxf2/src/main/java/org/hisp/dhis/dxf2/metadata/importers/DefaultImporter.java' --- dhis-2/dhis-dxf2/src/main/java/org/hisp/dhis/dxf2/metadata/importers/DefaultImporter.java 2012-04-13 01:16:51 +0000 +++ dhis-2/dhis-dxf2/src/main/java/org/hisp/dhis/dxf2/metadata/importers/DefaultImporter.java 2012-04-13 08:17:00 +0000 @@ -154,54 +154,6 @@ return null; } - private void findAndUpdateReferences( T object ) - { - Field[] fields = object.getClass().getDeclaredFields(); - - for ( Field field : fields ) - { - if ( ReflectionUtils.isType( field, IdentifiableObject.class ) ) - { - IdentifiableObject identifiableObject = ReflectionUtils.invokeGetterMethod( field.getName(), object ); - - if ( identifiableObject != null ) - { - log.info( "VERIFYING: " + identifiableObject ); - } - } - else - { - boolean b = ReflectionUtils.isCollection( field.getName(), object, IdentifiableObject.class ); - - if ( b ) - { - Collection identifiableObjects = ReflectionUtils.invokeGetterMethod( field.getName(), object ); - - if ( !identifiableObjects.isEmpty() ) - { - log.info( "VERIFYING: " + identifiableObjects ); - } - } - } - } - } - - /** - * Current object name, used to fill name part of a ImportConflict - * - * @return Name of object - */ - protected String getObjectName() - { - return importerClass.getSimpleName(); - } - - @Override - public boolean canHandle( Class clazz ) - { - return importerClass.equals( clazz ); - } - //------------------------------------------------------------------------------------------------------- // Importer Implementation //------------------------------------------------------------------------------------------------------- @@ -245,8 +197,82 @@ return new ImportCount( imported, updated, ignored ); } - //------------------------------------------------------------------------------------------------------- - // Internal methods + @Override + public boolean canHandle( Class clazz ) + { + return importerClass.equals( clazz ); + } + + //------------------------------------------------------------------------------------------------------- + // Protected methods + //------------------------------------------------------------------------------------------------------- + + protected void updateIdMaps( T object ) + { + if ( object.getUid() != null ) + { + uidMap.put( object.getUid(), object ); + } + + if ( object.getCode() != null ) + { + codeMap.put( object.getCode(), object ); + } + + if ( object.getName() != null ) + { + nameMap.put( object.getName(), object ); + } + + if ( nameable ) + { + NameableObject nameableObject = (NameableObject) object; + + if ( nameableObject.getShortName() != null ) + { + shortNameMap.put( nameableObject.getShortName(), object ); + } + + if ( nameableObject.getAlternativeName() != null ) + { + alternativeNameMap.put( nameableObject.getAlternativeName(), object ); + } + } + } + + protected void prepareIdentifiableObject( BaseIdentifiableObject object ) + { + if ( object.getUid() == null && object.getLastUpdated() == null ) + { + object.setAutoFields(); + } + else if ( object.getUid() == null ) + { + object.setUid( CodeGenerator.generateCode() ); + } + } + + /** + * @param object Object to get display name for + * @return A usable display name + */ + protected String getDisplayName( IdentifiableObject object ) + { + return object.getClass().getName(); + } + + /** + * Current object name, used to fill name part of a ImportConflict + * + * @return Name of object + */ + protected String getObjectName() + { + return importerClass.getSimpleName(); + } + + //------------------------------------------------------------------------------------------------------- + // Helpers //------------------------------------------------------------------------------------------------------- private void reset() @@ -529,61 +555,35 @@ return matchedObject; } - //------------------------------------------------------------------------------------------------------- - // Protected methods - //------------------------------------------------------------------------------------------------------- - - protected void updateIdMaps( T object ) - { - if ( object.getUid() != null ) - { - uidMap.put( object.getUid(), object ); - } - - if ( object.getCode() != null ) - { - codeMap.put( object.getCode(), object ); - } - - if ( object.getName() != null ) - { - nameMap.put( object.getName(), object ); - } - - if ( nameable ) - { - NameableObject nameableObject = (NameableObject) object; - - if ( nameableObject.getShortName() != null ) - { - shortNameMap.put( nameableObject.getShortName(), object ); - } - - if ( nameableObject.getAlternativeName() != null ) - { - alternativeNameMap.put( nameableObject.getAlternativeName(), object ); - } - } - } - - protected void prepareIdentifiableObject( BaseIdentifiableObject object ) - { - if ( object.getUid() == null && object.getLastUpdated() == null ) - { - object.setAutoFields(); - } - else if ( object.getUid() == null ) - { - object.setUid( CodeGenerator.generateCode() ); - } - } - - /** - * @param object Object to get display name for - * @return A usable display name - */ - protected String getDisplayName( IdentifiableObject object ) - { - return object.getClass().getName(); + private void findAndUpdateReferences( T object ) + { + Field[] fields = object.getClass().getDeclaredFields(); + + for ( Field field : fields ) + { + if ( ReflectionUtils.isType( field, IdentifiableObject.class ) ) + { + IdentifiableObject identifiableObject = ReflectionUtils.invokeGetterMethod( field.getName(), object ); + + if ( identifiableObject != null ) + { + log.info( "VERIFYING: " + identifiableObject ); + } + } + else + { + boolean b = ReflectionUtils.isCollection( field.getName(), object, IdentifiableObject.class ); + + if ( b ) + { + Collection identifiableObjects = ReflectionUtils.invokeGetterMethod( field.getName(), object ); + + if ( !identifiableObjects.isEmpty() ) + { + log.info( "VERIFYING: " + identifiableObjects ); + } + } + } + } } }