=== modified file 'dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/converter/AbstractCalculatedDataElementConverter.java' --- dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/converter/AbstractCalculatedDataElementConverter.java 2010-04-12 21:23:33 +0000 +++ dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/converter/AbstractCalculatedDataElementConverter.java 2010-05-13 12:16:45 +0000 @@ -83,7 +83,7 @@ if ( calculated != null ) { - calculated.getExpression().getExpression(); // Load Expression into memory + calculated.getExpression().getExpression(); // Load Expression in session } return calculated; @@ -129,5 +129,18 @@ } return true; - } + } + + @Override + protected boolean ignore( CalculatedDataElement object, CalculatedDataElement match ) + { + boolean ignore = !(object instanceof CalculatedDataElement) && match instanceof CalculatedDataElement; + + if ( ignore ) + { + log.warn( "Data element ignored because it matches with a calculated data element: " + object ); + } + + return ignore; + } } === modified file 'dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/converter/AbstractConverter.java' --- dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/converter/AbstractConverter.java 2010-05-12 13:38:28 +0000 +++ dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/converter/AbstractConverter.java 2010-05-13 12:16:45 +0000 @@ -33,6 +33,8 @@ import static org.hisp.dhis.importexport.ImportStrategy.NEW_AND_UPDATES; import org.amplecode.quick.BatchHandler; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.hisp.dhis.common.ImportableObject; import org.hisp.dhis.datavalue.DataValue; import org.hisp.dhis.importexport.GroupMemberType; @@ -48,6 +50,8 @@ */ public abstract class AbstractConverter { + protected static final Log log = LogFactory.getLog( AbstractConverter.class ); + protected static final String EMPTY = ""; // ------------------------------------------------------------------------- @@ -105,14 +109,14 @@ { if ( !params.isPreview() ) // Import object { - if ( !isIdentical( object, match ) ) // Skip if identical + if ( !isIdentical( object, match ) && !ignore( object, match ) ) // Skip if identical or ignore-able { importMatching( object, match ); } } else if ( params.isPreview() ) // Preview object. DataValue cannot be match in preview. { - ImportObjectStatus status = isIdentical( object, match ) ? MATCH : UPDATE; + ImportObjectStatus status = !isIdentical( object, match ) && !ignore( object, match ) ? UPDATE : MATCH; importObjectService.addImportObject( status, groupMemberType, object, match ); // Set to match if existing, update otherwise } @@ -133,6 +137,15 @@ protected abstract boolean isIdentical( T object, T match ); // ------------------------------------------------------------------------- + // Override-able methods + // ------------------------------------------------------------------------- + + protected boolean ignore( T object, T match ) + { + return false; + } + + // ------------------------------------------------------------------------- // Supportive methods // ------------------------------------------------------------------------- === modified file 'dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/converter/AbstractDataElementConverter.java' --- dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/converter/AbstractDataElementConverter.java 2010-04-12 21:23:33 +0000 +++ dhis-2/dhis-services/dhis-service-importexport/src/main/java/org/hisp/dhis/importexport/converter/AbstractDataElementConverter.java 2010-05-13 12:16:45 +0000 @@ -27,6 +27,7 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +import org.hisp.dhis.dataelement.CalculatedDataElement; import org.hisp.dhis.dataelement.DataElement; import org.hisp.dhis.dataelement.DataElementService; @@ -116,4 +117,17 @@ return true; } + + @Override + protected boolean ignore( DataElement object, DataElement match ) + { + boolean ignore = object instanceof CalculatedDataElement && !( match instanceof CalculatedDataElement ); + + if ( ignore ) + { + log.warn( "Calculated data element ignored because it matches with a regular data element: " + object ); + } + + return ignore; + } }