← Back to team overview

dhis2-devs team mailing list archive

[Branch ~dhis2-devs-core/dhis2/trunk] Rev 19900: DataValueSetService. Impl options for requiring explicit category and attribute option combo

 

------------------------------------------------------------
revno: 19900
committer: Lars Helge Overland <larshelge@xxxxxxxxx>
branch nick: dhis2
timestamp: Mon 2015-08-31 09:39:12 +0200
message:
  DataValueSetService. Impl options for requiring explicit category and attribute option combo
modified:
  dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/common/ImportOptions.java
  dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/datavalueset/DefaultDataValueSetService.java
  dhis-2/dhis-services/dhis-service-dxf2/src/test/java/org/hisp/dhis/dxf2/datavalueset/DataValueSetServiceTest.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-dxf2/src/main/java/org/hisp/dhis/dxf2/common/ImportOptions.java'
--- dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/common/ImportOptions.java	2015-08-31 07:11:10 +0000
+++ dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/common/ImportOptions.java	2015-08-31 07:39:12 +0000
@@ -74,6 +74,10 @@
     
     private boolean strictAttributeOptionCombos;
     
+    private boolean requireCategoryOptionCombo;
+    
+    private boolean requireAttributeOptionCombo;
+    
     //--------------------------------------------------------------------------
     // Constructors
     //--------------------------------------------------------------------------
@@ -172,6 +176,16 @@
         return strictAttributeOptionCombos;
     }
 
+    public boolean isRequireCategoryOptionCombo()
+    {
+        return requireCategoryOptionCombo;
+    }
+
+    public boolean isRequireAttributeOptionCombo()
+    {
+        return requireAttributeOptionCombo;
+    }
+
     //--------------------------------------------------------------------------
     // Set methods
     //--------------------------------------------------------------------------
@@ -254,6 +268,18 @@
         return this;
     }
 
+    public ImportOptions setRequireCategoryOptionCombo( boolean requireCategoryOptionCombo )
+    {
+        this.requireCategoryOptionCombo = requireCategoryOptionCombo;
+        return this;
+    }
+
+    public ImportOptions setRequireAttributeOptionCombo( boolean requireAttributeOptionCombo )
+    {
+        this.requireAttributeOptionCombo = requireAttributeOptionCombo;
+        return this;
+    }
+
     @Override
     public String toString()
     {
@@ -270,6 +296,8 @@
             add( "Strict periods", strictPeriods ).
             add( "Strict category option combos", strictCategoryOptionCombos ).
             add( "Strict attr option combos", strictAttributeOptionCombos ).
+            add( "Require category option combo", requireCategoryOptionCombo ).
+            add( "Require attribute option combo", requireAttributeOptionCombo ).
             toString();
     }
 }

=== modified file 'dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/datavalueset/DefaultDataValueSetService.java'
--- dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/datavalueset/DefaultDataValueSetService.java	2015-08-31 07:11:10 +0000
+++ dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/datavalueset/DefaultDataValueSetService.java	2015-08-31 07:39:12 +0000
@@ -579,6 +579,8 @@
         boolean strictPeriods = importOptions.isStrictPeriods() || (Boolean) systemSettingManager.getSystemSetting( KEY_DATA_IMPORT_STRICT_PERIODS, false );
         boolean strictCategoryOptionCombos = importOptions.isStrictCategoryOptionCombos() || (Boolean) systemSettingManager.getSystemSetting( KEY_DATA_IMPORT_STRICT_CATEGORY_OPTION_COMBOS, false );
         boolean strictAttrOptionCombos = importOptions.isStrictAttributeOptionCombos() || (Boolean) systemSettingManager.getSystemSetting( KEY_DATA_IMPORT_STRICT_ATTRIBUTE_OPTION_COMBOS, false );
+        boolean requireCategoryOptionCombo = importOptions.isRequireCategoryOptionCombo() || (Boolean) systemSettingManager.getSystemSetting( KEY_DATA_IMPORT_REQUIRE_CATEGORY_OPTION_COMBO, false );
+        boolean requireAttrOptionCombo = importOptions.isRequireAttributeOptionCombo() || (Boolean) systemSettingManager.getSystemSetting( KEY_DATA_IMPORT_REQUIRE_ATTRIBUTE_OPTION_COMBO, false );
         
         //----------------------------------------------------------------------
         // Create meta-data maps
@@ -743,16 +745,6 @@
                 continue;
             }
 
-            if ( categoryOptionCombo == null )
-            {
-                categoryOptionCombo = fallbackCategoryOptionCombo;
-            }
-
-            if ( attrOptionCombo == null )
-            {
-                attrOptionCombo = fallbackCategoryOptionCombo;
-            }
-            
             boolean inUserHierarchy = orgUnitInHierarchyMap.get( orgUnit.getUid(), 
                 () -> organisationUnitService.isInUserHierarchy( orgUnit.getUid(), currentOrgUnits ) );
             
@@ -787,6 +779,32 @@
             // Constraints
             // -----------------------------------------------------------------
 
+            if ( categoryOptionCombo == null )
+            {
+                if ( requireCategoryOptionCombo )
+                {
+                    summary.getConflicts().add( new ImportConflict( dataValue.getValue(), "Category option combo is required but is not specified" ) );
+                    continue;
+                }
+                else
+                {
+                    categoryOptionCombo = fallbackCategoryOptionCombo;
+                }
+            }
+
+            if ( attrOptionCombo == null )
+            {
+                if ( requireAttrOptionCombo )
+                {
+                    summary.getConflicts().add( new ImportConflict( dataValue.getValue(), "Attribute option combo is required but is not specified" ) );
+                    continue;
+                }
+                else
+                {
+                    attrOptionCombo = fallbackCategoryOptionCombo;
+                }
+            }
+            
             if ( strictPeriods && !dataElementPeriodTypesMap.get( dataValue.getDataElement(), 
                 () -> dataElement.getPeriodTypes() ).contains( period.getPeriodType() ) )
             {

=== modified file 'dhis-2/dhis-services/dhis-service-dxf2/src/test/java/org/hisp/dhis/dxf2/datavalueset/DataValueSetServiceTest.java'
--- dhis-2/dhis-services/dhis-service-dxf2/src/test/java/org/hisp/dhis/dxf2/datavalueset/DataValueSetServiceTest.java	2015-08-30 18:24:11 +0000
+++ dhis-2/dhis-services/dhis-service-dxf2/src/test/java/org/hisp/dhis/dxf2/datavalueset/DataValueSetServiceTest.java	2015-08-31 07:39:12 +0000
@@ -535,6 +535,42 @@
         assertEquals( ImportStatus.SUCCESS, summary.getStatus() );
     }
 
+    @Test
+    public void testImportDataValuesWithRequiredCategoryOptionCombo()
+        throws Exception
+    {
+        in = new ClassPathResource( "datavalueset/dataValueSetNonStrict.xml" ).getInputStream();
+
+        ImportOptions options = new ImportOptions().setRequireCategoryOptionCombo( true );
+
+        ImportSummary summary = dataValueSetService.saveDataValueSet( in, options );
+
+        assertEquals( summary.getConflicts().toString(), 2, summary.getConflicts().size() );
+        assertEquals( 1, summary.getImportCount().getImported() );
+        assertEquals( 0, summary.getImportCount().getUpdated() );
+        assertEquals( 0, summary.getImportCount().getDeleted() );
+        assertEquals( 2, summary.getImportCount().getIgnored() );
+        assertEquals( ImportStatus.SUCCESS, summary.getStatus() );
+    }
+
+    @Test
+    public void testImportDataValuesWithRequiredAttributeOptionCombo()
+        throws Exception
+    {
+        in = new ClassPathResource( "datavalueset/dataValueSetNonStrict.xml" ).getInputStream();
+
+        ImportOptions options = new ImportOptions().setRequireAttributeOptionCombo( true );
+
+        ImportSummary summary = dataValueSetService.saveDataValueSet( in, options );
+
+        assertEquals( summary.getConflicts().toString(), 2, summary.getConflicts().size() );
+        assertEquals( 1, summary.getImportCount().getImported() );
+        assertEquals( 0, summary.getImportCount().getUpdated() );
+        assertEquals( 0, summary.getImportCount().getDeleted() );
+        assertEquals( 2, summary.getImportCount().getIgnored() );
+        assertEquals( ImportStatus.SUCCESS, summary.getStatus() );
+    }
+
     // -------------------------------------------------------------------------
     // Supportive methods
     // -------------------------------------------------------------------------