=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataelement/DataElementCategory.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataelement/DataElementCategory.java 2012-03-27 17:38:48 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataelement/DataElementCategory.java 2012-04-11 07:45:09 +0000 @@ -35,6 +35,7 @@ import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement; import org.hisp.dhis.common.BaseIdentifiableObject; import org.hisp.dhis.common.Dxf2Namespace; +import org.hisp.dhis.common.IdentifiableObject; import org.hisp.dhis.common.view.DetailedView; import org.hisp.dhis.common.view.ExportView; import org.hisp.dhis.concept.Concept; @@ -179,4 +180,27 @@ { this.concept = concept; } + + @Override + public void mergeWith( IdentifiableObject other ) + { + super.mergeWith( other ); + + if ( other.getClass().isInstance( this ) ) + { + DataElementCategory dataElementCategory = (DataElementCategory) other; + + concept = dataElementCategory.getConcept() == null ? concept : dataElementCategory.getConcept(); + + for ( DataElementCategoryOption dataElementCategoryOption : dataElementCategory.getCategoryOptions() ) + { + categoryOptions.add( dataElementCategoryOption ); + + if ( dataElementCategoryOption.getCategory() == null ) + { + dataElementCategoryOption.setCategory( this ); + } + } + } + } } === modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataelement/DataElementCategoryCombo.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataelement/DataElementCategoryCombo.java 2012-03-27 17:38:48 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataelement/DataElementCategoryCombo.java 2012-04-11 07:45:09 +0000 @@ -36,6 +36,7 @@ import org.hisp.dhis.common.BaseIdentifiableObject; import org.hisp.dhis.common.CombinationGenerator; import org.hisp.dhis.common.Dxf2Namespace; +import org.hisp.dhis.common.IdentifiableObject; import org.hisp.dhis.common.view.DetailedView; import org.hisp.dhis.common.view.ExportView; @@ -243,4 +244,27 @@ { this.optionCombos = optionCombos; } + + @Override + public void mergeWith( IdentifiableObject other ) + { + super.mergeWith( other ); + + if ( other.getClass().isInstance( this ) ) + { + DataElementCategoryCombo dataElementCategoryCombo = (DataElementCategoryCombo) other; + + categories.addAll( dataElementCategoryCombo.getCategories() ); + + for ( DataElementCategoryOptionCombo dataElementCategoryOptionCombo : dataElementCategoryCombo.getOptionCombos() ) + { + optionCombos.add( dataElementCategoryOptionCombo ); + + if ( dataElementCategoryOptionCombo.getCategoryCombo() == null ) + { + dataElementCategoryOptionCombo.setCategoryCombo( this ); + } + } + } + } } === modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataelement/DataElementCategoryOption.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataelement/DataElementCategoryOption.java 2012-03-27 17:38:48 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataelement/DataElementCategoryOption.java 2012-04-11 07:45:09 +0000 @@ -37,6 +37,7 @@ import org.hisp.dhis.common.BaseIdentifiableObject; import org.hisp.dhis.common.BaseNameableObject; import org.hisp.dhis.common.Dxf2Namespace; +import org.hisp.dhis.common.IdentifiableObject; import org.hisp.dhis.common.view.DetailedView; import org.hisp.dhis.concept.Concept; @@ -125,6 +126,22 @@ } // ------------------------------------------------------------------------- + // Logic + // ------------------------------------------------------------------------- + + public void addCategoryOptionCombo( DataElementCategoryOptionCombo dataElementCategoryOptionCombo ) + { + categoryOptionCombos.add( dataElementCategoryOptionCombo ); + dataElementCategoryOptionCombo.getCategoryOptions().add( this ); + } + + public void removeCategoryOptionCombo( DataElementCategoryOptionCombo dataElementCategoryOptionCombo ) + { + categoryOptionCombos.remove( dataElementCategoryOptionCombo ); + dataElementCategoryOptionCombo.getCategoryOptions().remove( this ); + } + + // ------------------------------------------------------------------------- // Getters and setters // ------------------------------------------------------------------------- @@ -173,4 +190,23 @@ { this.categoryOptionCombos = categoryOptionCombos; } + + @Override + public void mergeWith( IdentifiableObject other ) + { + super.mergeWith( other ); + + if ( other.getClass().isInstance( this ) ) + { + DataElementCategoryOption dataElementCategoryOption = (DataElementCategoryOption) other; + + concept = dataElementCategoryOption.getConcept() == null ? concept : dataElementCategoryOption.getConcept(); + category = category != null ? category : dataElementCategoryOption.getCategory(); + + for ( DataElementCategoryOptionCombo dataElementCategoryOptionCombo : dataElementCategoryOption.getCategoryOptionCombos() ) + { + addCategoryOptionCombo( dataElementCategoryOptionCombo ); + } + } + } } === modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataelement/DataElementCategoryOptionCombo.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataelement/DataElementCategoryOptionCombo.java 2012-03-27 17:38:48 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataelement/DataElementCategoryOptionCombo.java 2012-04-11 07:45:09 +0000 @@ -37,6 +37,7 @@ import org.hisp.dhis.common.BaseIdentifiableObject; import org.hisp.dhis.common.BaseNameableObject; import org.hisp.dhis.common.Dxf2Namespace; +import org.hisp.dhis.common.IdentifiableObject; import org.hisp.dhis.common.view.DetailedView; import org.hisp.dhis.common.view.ExportView; @@ -325,4 +326,18 @@ { this.categoryOptions = categoryOptions; } + + @Override + public void mergeWith( IdentifiableObject other ) + { + super.mergeWith( other ); + + if ( other.getClass().isInstance( this ) ) + { + DataElementCategoryOptionCombo dataElementCategoryOptionCombo = (DataElementCategoryOptionCombo) other; + + categoryCombo = categoryCombo != null ? categoryCombo : dataElementCategoryOptionCombo.getCategoryCombo(); + categoryOptions.addAll( dataElementCategoryOptionCombo.getCategoryOptions() ); + } + } }