← Back to team overview

dhis2-devs team mailing list archive

[Branch ~dhis2-devs-core/dhis2/trunk] Rev 3441: Applied patch from Jason. Makes the 1.4 import of calculated data elements more robust.

 

------------------------------------------------------------
revno: 3441
committer: Lars Helge Overland <larshelge@xxxxxxxxx>
branch nick: dhis2
timestamp: Thu 2011-04-21 17:24:52 +0200
message:
  Applied patch from Jason. Makes the 1.4 import of calculated data elements more robust.
modified:
  dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/dhis14/xml/converter/OrganisationUnitConverter.java
  dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/service/DefaultImportObjectManager.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-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/dhis14/xml/converter/OrganisationUnitConverter.java'
--- dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/dhis14/xml/converter/OrganisationUnitConverter.java	2011-02-17 09:51:48 +0000
+++ dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/dhis14/xml/converter/OrganisationUnitConverter.java	2011-04-21 15:24:52 +0000
@@ -28,6 +28,7 @@
  */
 
 import static org.hisp.dhis.importexport.dhis14.util.Dhis14TypeHandler.convertBooleanToDhis14;
+import static org.hisp.dhis.importexport.dhis14.util.Dhis14TypeHandler.convertBooleanFromDhis14;
 
 import java.util.Collection;
 import java.util.Map;
@@ -44,6 +45,7 @@
 import org.hisp.dhis.organisationunit.OrganisationUnit;
 import org.hisp.dhis.organisationunit.OrganisationUnitService;
 
+
 /**
  * @author Lars Helge Overland
  * @version $Id: OrganisationUnitConverter.java 6455 2008-11-24 08:59:37Z larshelg $
@@ -61,9 +63,11 @@
     private static final String FIELD_VALID_FROM = "ValidFrom";
     private static final String FIELD_VALID_TO = "ValidTo";
     private static final String FIELD_ACTIVE = "Active";
+    private static final String FIELD_COMMENT = "Comment";
     private static final String FIELD_SELECTED = "Selected";
     private static final String FIELD_LAST_USER = "LastUserID";
     private static final String FIELD_LAST_UPDATED = "LastUpdated";
+    private static final String FIELD_ALT_NAME = "OrgUnitNameAlt1"; //1.4 has multiple alternative names. Support the first.
 
     private static final int VALID_FROM = 34335;
     private static final int VALID_TO = 2958465;
@@ -119,6 +123,7 @@
                 writer.writeElement( FIELD_VALID_FROM, String.valueOf( VALID_FROM ) );
                 writer.writeElement( FIELD_VALID_TO, String.valueOf( VALID_TO ) );
                 writer.writeElement( FIELD_ACTIVE, convertBooleanToDhis14( unit.isActive() ) );
+                writer.writeElement (FIELD_COMMENT, unit.getComment() );
                 writer.writeElement( FIELD_SELECTED, String.valueOf( 0 ) );
                 writer.writeElement( FIELD_LAST_USER, String.valueOf( 1 ) );
                 writer.writeElement( FIELD_LAST_UPDATED, Dhis14DateUtil.getDateString( unit.getLastUpdated() ) );
@@ -137,10 +142,13 @@
         unit.setId( Integer.valueOf( values.get( FIELD_ID ) ) );
         unit.setName( values.get( FIELD_NAME ) );
         unit.setShortName( values.get( FIELD_SHORT_NAME ) );
+        unit.setOpeningDate(   Dhis14DateUtil.getDate( Integer.parseInt( values.get( FIELD_VALID_FROM ) ) ) );
+        unit.setClosedDate( Dhis14DateUtil.getDate( Integer.parseInt( values.get( FIELD_VALID_TO ) ) ) );
         unit.setCode( values.get( FIELD_CODE ) );
-        unit.setActive( true );
+        unit.setActive( convertBooleanFromDhis14(values.get( FIELD_ACTIVE ) ) ) ;
+        unit.setComment( values.get( FIELD_COMMENT ) );
         unit.setLastUpdated( Dhis14DateUtil.getDate( values.get( FIELD_LAST_UPDATED ) ) );
-
+        //unit.setAlternativeName( values.get( FIELD_ALT_NAME ));
         importObject( unit, params );        
     }
 }

=== modified file 'dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/service/DefaultImportObjectManager.java'
--- dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/service/DefaultImportObjectManager.java	2011-02-22 23:05:45 +0000
+++ dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/service/DefaultImportObjectManager.java	2011-04-21 15:24:52 +0000
@@ -493,14 +493,21 @@
             CalculatedDataElement object = (CalculatedDataElement) importObject.getObject();
             object.getCategoryCombo().setId( categoryComboMapping.get( object.getCategoryCombo().getId() ) );
             object.getExpression().setExpression(
-                expressionService.convertExpression( object.getExpression().getExpression(), dataElementMapping,
-                    categoryOptionComboMapping ) );
-            importer.importObject( object, params );
+            expressionService.convertExpression( object.getExpression().getExpression(), dataElementMapping, categoryOptionComboMapping ) );
+            
+            try
+            {
+                importer.importObject( object, params );
+            }
+            catch ( ClassCastException e )
+            {
+                log.warn( "Cannot convert a regular data element to a calculated data element", e );
+            }
         }
 
         importObjectStore.deleteImportObjects( CalculatedDataElement.class );
 
-        log.info( "Imported CalculatedDataElements" );
+        log.info( "Imported CalculatedDataElements"  );
     }
 
     @Transactional
@@ -1073,6 +1080,9 @@
     @Transactional
     public void importDataValues()
     {
+        Integer importedObjects = 0;
+        Integer failedObjects = 0;
+
         BatchHandler<DataValue> batchHandler = batchHandlerFactory.createBatchHandler( DataValueBatchHandler.class )
             .init();
 
@@ -1088,20 +1098,28 @@
         for ( ImportDataValue importValue : importValues )
         {
             DataValue value = importValue.getDataValue();
-
-            value.getDataElement().setId( dataElementMapping.get( value.getDataElement().getId() ) );
-            value.getPeriod().setId( periodMapping.get( value.getPeriod().getId() ) );
-            value.getSource().setId( sourceMapping.get( value.getSource().getId() ) );
-            value.getOptionCombo().setId( categoryOptionComboMapping.get( value.getOptionCombo().getId() ) );
-
-            importer.importObject( value, params );
+            try
+            {
+                value.getDataElement().setId( dataElementMapping.get( value.getDataElement().getId() ) );
+                value.getPeriod().setId( periodMapping.get( value.getPeriod().getId() ) );
+                value.getSource().setId( sourceMapping.get( value.getSource().getId() ) );
+                value.getOptionCombo().setId( categoryOptionComboMapping.get( value.getOptionCombo().getId() ) );
+                importer.importObject( value, params );
+                importedObjects++;
+
+            } catch ( Exception e )
+            {
+                importedObjects--;
+                failedObjects++;
+                log.error( "Object import failed" + e );
+            }
         }
 
         batchHandler.flush();
 
         importDataValueService.deleteImportDataValues();
 
-        log.info( "Imported DataValues" );
+        log.info( importReport( importedObjects,failedObjects ) );
     }
 
     // -------------------------------------------------------------------------
@@ -1134,4 +1152,22 @@
 
         importObjectStore.deleteImportObjects( type );
     }
+
+    private String importReport(Integer importedObjects, Integer failedObjects)
+    {
+        Integer totalObjects = importedObjects + failedObjects;
+        String importReportString = "";
+        if (failedObjects > 0 )
+        {
+            importReportString = totalObjects.toString() + " values handled.\n" + importedObjects.toString() + " new values successfully imported.\n"
+                + failedObjects.toString() + " were not imported due to errors.";
+             return importReportString;
+        }
+        else
+        {
+            importReportString = importedObjects.toString() + " values were imported.";
+                return importReportString;
+        }
+
+    }
 }