dhis2-devs team mailing list archive
-
dhis2-devs team
-
Mailing list archive
-
Message #41452
[Branch ~dhis2-devs-core/dhis2/trunk] Rev 21127: attribute value store, add isAttributeValueUnique, checks for value uniqueness among -all- suppor...
------------------------------------------------------------
revno: 21127
committer: Morten Olav Hansen <mortenoh@xxxxxxxxx>
branch nick: dhis2
timestamp: Thu 2015-11-19 13:24:20 +0700
message:
attribute value store, add isAttributeValueUnique, checks for value uniqueness among -all- supported types of a attribute
modified:
dhis-2/dhis-api/src/main/java/org/hisp/dhis/attribute/AttributeValueStore.java
dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/attribute/hibernate/HibernateAttributeValueStore.java
dhis-2/dhis-services/dhis-service-core/src/test/java/org/hisp/dhis/attribute/AttributeValueStoreTest.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-api/src/main/java/org/hisp/dhis/attribute/AttributeValueStore.java'
--- dhis-2/dhis-api/src/main/java/org/hisp/dhis/attribute/AttributeValueStore.java 2015-11-19 05:41:44 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/attribute/AttributeValueStore.java 2015-11-19 06:24:20 +0000
@@ -29,6 +29,7 @@
*/
import org.hisp.dhis.common.GenericStore;
+import org.hisp.dhis.common.IdentifiableObject;
import java.util.List;
@@ -41,4 +42,13 @@
List<AttributeValue> getAllByAttribute( Attribute attribute );
List<AttributeValue> getAllByAttributeAndValue( Attribute attribute, String value );
+
+ /**
+ * Is attribute value unique, the value must either not exist, or just exist in given object.
+ *
+ * @param object Object
+ * @param attributeValue AV to check for
+ * @return true/false depending on uniqueness of AV
+ */
+ <T extends IdentifiableObject> boolean isAttributeValueUnique( T object, AttributeValue attributeValue );
}
=== modified file 'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/attribute/hibernate/HibernateAttributeValueStore.java'
--- dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/attribute/hibernate/HibernateAttributeValueStore.java 2015-11-19 05:41:44 +0000
+++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/attribute/hibernate/HibernateAttributeValueStore.java 2015-11-19 06:24:20 +0000
@@ -32,6 +32,7 @@
import org.hisp.dhis.attribute.Attribute;
import org.hisp.dhis.attribute.AttributeValue;
import org.hisp.dhis.attribute.AttributeValueStore;
+import org.hisp.dhis.common.IdentifiableObject;
import org.hisp.dhis.hibernate.HibernateGenericStore;
import java.util.List;
@@ -59,4 +60,11 @@
.add( Restrictions.eq( "value", value ) )
.list();
}
+
+ @Override
+ public <T extends IdentifiableObject> boolean isAttributeValueUnique( T object, AttributeValue attributeValue )
+ {
+ List<AttributeValue> values = getAllByAttributeAndValue( attributeValue.getAttribute(), attributeValue.getValue() );
+ return values.isEmpty() || (values.size() == 1 && object != null && object.getAttributeValues().contains( values.get( 0 ) ));
+ }
}
=== modified file 'dhis-2/dhis-services/dhis-service-core/src/test/java/org/hisp/dhis/attribute/AttributeValueStoreTest.java'
--- dhis-2/dhis-services/dhis-service-core/src/test/java/org/hisp/dhis/attribute/AttributeValueStoreTest.java 2015-11-19 05:41:44 +0000
+++ dhis-2/dhis-services/dhis-service-core/src/test/java/org/hisp/dhis/attribute/AttributeValueStoreTest.java 2015-11-19 06:24:20 +0000
@@ -29,12 +29,13 @@
*/
import org.hisp.dhis.DhisSpringTest;
+import org.hisp.dhis.common.IdentifiableObjectManager;
import org.hisp.dhis.common.ValueType;
+import org.hisp.dhis.dataelement.DataElement;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.*;
/**
* @author Morten Olav Hansen <mortenoh@xxxxxxxxx>
@@ -48,6 +49,9 @@
@Autowired
private AttributeStore attributeStore;
+ @Autowired
+ private IdentifiableObjectManager manager;
+
private AttributeValue avA;
private AttributeValue avB;
@@ -103,4 +107,18 @@
assertEquals( 1, attributeValueStore.getAllByAttributeAndValue( atA, "value 1" ).size() );
assertEquals( 1, attributeValueStore.getAllByAttributeAndValue( atA, "value 2" ).size() );
}
+
+ @Test
+ public void testIsAttributeValueUnique()
+ {
+ DataElement dataElementA = createDataElement( 'A' );
+ dataElementA.getAttributeValues().add( avA );
+ DataElement dataElementB = createDataElement( 'B' );
+
+ manager.save( dataElementA );
+ manager.save( dataElementB );
+
+ assertTrue( attributeValueStore.isAttributeValueUnique( dataElementA, avA ) );
+ assertFalse( attributeValueStore.isAttributeValueUnique( dataElementB, avA ) );
+ }
}