------------------------------------------------------------ revno: 21128 committer: Morten Olav Hansen <morte...@gmail.com> branch nick: dhis2 timestamp: Thu 2015-11-19 14:29:54 +0700 message: new method for getting attribute values by attribute/value for a certain class type modified: dhis-2/dhis-api/src/main/java/org/hisp/dhis/attribute/AttributeService.java dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/GenericStore.java dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/IdentifiableObjectManager.java dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/attribute/DefaultAttributeService.java dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/common/DefaultIdentifiableObjectManager.java dhis-2/dhis-services/dhis-service-core/src/test/java/org/hisp/dhis/dataelement/DataElementStoreTest.java dhis-2/dhis-support/dhis-support-hibernate/src/main/java/org/hisp/dhis/hibernate/HibernateGenericStore.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/AttributeService.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/attribute/AttributeService.java 2015-11-19 05:50:14 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/attribute/AttributeService.java 2015-11-19 07:29:54 +0000 @@ -277,6 +277,8 @@ List<AttributeValue> getAllAttributeValuesByAttributeAndValue( Attribute attribute, String value ); + <T extends IdentifiableObject> boolean isAttributeValueUnique( T object, AttributeValue attributeValue ); + /** * Gets the number of attribute values. * === modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/GenericStore.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/GenericStore.java 2015-11-18 03:02:19 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/GenericStore.java 2015-11-19 07:29:54 +0000 @@ -135,5 +135,9 @@ */ T getByAttribute( Attribute attribute ); - AttributeValue getAttributeValueByAttribute( Attribute attribute ); + List<AttributeValue> getAttributeValueByAttribute( Attribute attribute ); + + List<AttributeValue> getAttributeValueByAttributeAndValue( Attribute attribute, String value ); + + <P extends IdentifiableObject> boolean isAttributeValueUnique( P object, AttributeValue attributeValue ); } === modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/IdentifiableObjectManager.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/IdentifiableObjectManager.java 2015-11-18 04:39:26 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/IdentifiableObjectManager.java 2015-11-19 07:29:54 +0000 @@ -151,7 +151,11 @@ void evict( Object object ); - <T extends IdentifiableObject> AttributeValue getAttributeValueByAttribute( Class<T> klass, Attribute attribute ); + <T extends IdentifiableObject> List<AttributeValue> getAttributeValueByAttribute( Class<T> klass, Attribute attribute ); + + <T extends IdentifiableObject> List<AttributeValue> getAttributeValueByAttributeAndValue( Class<T> klass, Attribute attribute, String value ); + + <T extends IdentifiableObject> boolean isAttributeValueUnique( Class<T> klass, T object, AttributeValue attributeValue ); // ------------------------------------------------------------------------- // NO ACL === modified file 'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/attribute/DefaultAttributeService.java' --- dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/attribute/DefaultAttributeService.java 2015-11-19 05:50:14 +0000 +++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/attribute/DefaultAttributeService.java 2015-11-19 07:29:54 +0000 @@ -309,6 +309,12 @@ } @Override + public <T extends IdentifiableObject> boolean isAttributeValueUnique( T object, AttributeValue attributeValue ) + { + return attributeValueStore.isAttributeValueUnique( object, attributeValue ); + } + + @Override public int getAttributeValueCount() { return attributeValueStore.getCount(); === modified file 'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/common/DefaultIdentifiableObjectManager.java' --- dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/common/DefaultIdentifiableObjectManager.java 2015-11-18 04:39:26 +0000 +++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/common/DefaultIdentifiableObjectManager.java 2015-11-19 07:29:54 +0000 @@ -974,8 +974,7 @@ } @Override - @SuppressWarnings( "unchecked" ) - public <T extends IdentifiableObject> AttributeValue getAttributeValueByAttribute( Class<T> klass, Attribute attribute ) + public <T extends IdentifiableObject> List<AttributeValue> getAttributeValueByAttribute( Class<T> klass, Attribute attribute ) { GenericIdentifiableObjectStore<IdentifiableObject> store = getIdentifiableObjectStore( klass ); @@ -987,6 +986,27 @@ return store.getAttributeValueByAttribute( attribute ); } + @Override + public <T extends IdentifiableObject> List<AttributeValue> getAttributeValueByAttributeAndValue( Class<T> klass, Attribute attribute, String value ) + { + GenericIdentifiableObjectStore<IdentifiableObject> store = getIdentifiableObjectStore( klass ); + + if ( store == null ) + { + return null; + } + + return store.getAttributeValueByAttributeAndValue( attribute, value ); + } + + @Override + @SuppressWarnings( "unchecked" ) + public <T extends IdentifiableObject> boolean isAttributeValueUnique( Class<T> klass, T object, AttributeValue attributeValue ) + { + GenericIdentifiableObjectStore<IdentifiableObject> store = getIdentifiableObjectStore( klass ); + return store != null && store.isAttributeValueUnique( object, attributeValue ); + } + //-------------------------------------------------------------------------- // Supportive methods //-------------------------------------------------------------------------- === modified file 'dhis-2/dhis-services/dhis-service-core/src/test/java/org/hisp/dhis/dataelement/DataElementStoreTest.java' --- dhis-2/dhis-services/dhis-service-core/src/test/java/org/hisp/dhis/dataelement/DataElementStoreTest.java 2015-11-18 05:35:33 +0000 +++ dhis-2/dhis-services/dhis-service-core/src/test/java/org/hisp/dhis/dataelement/DataElementStoreTest.java 2015-11-19 07:29:54 +0000 @@ -449,16 +449,59 @@ DataElement dataElementA = createDataElement( 'A' ); DataElement dataElementB = createDataElement( 'B' ); - dataElementStore.save( dataElementA ); - dataElementStore.save( dataElementB ); - - AttributeValue attributeValue = new AttributeValue( "SOME VALUE", attribute ); - attributeService.addAttributeValue( dataElementA, attributeValue ); - - dataElementA.getAttributeValues().add( attributeValue ); - dataElementStore.update( dataElementA ); - - AttributeValue value = dataElementStore.getAttributeValueByAttribute( attribute ); - assertEquals( value.getValue(), attributeValue.getValue() ); + DataElement dataElementC = createDataElement( 'C' ); + + dataElementStore.save( dataElementA ); + dataElementStore.save( dataElementB ); + dataElementStore.save( dataElementC ); + + AttributeValue attributeValueA = new AttributeValue( "SOME VALUE", attribute ); + AttributeValue attributeValueB = new AttributeValue( "SOME VALUE", attribute ); + AttributeValue attributeValueC = new AttributeValue( "ANOTHER VALUE", attribute ); + + attributeService.addAttributeValue( dataElementA, attributeValueA ); + attributeService.addAttributeValue( dataElementB, attributeValueB ); + attributeService.addAttributeValue( dataElementC, attributeValueC ); + + dataElementStore.update( dataElementA ); + dataElementStore.update( dataElementB ); + dataElementStore.update( dataElementC ); + + List<AttributeValue> values = dataElementStore.getAttributeValueByAttribute( attribute ); + assertEquals( 3, values.size() ); + } + + @Test + public void testAttributeValueFromAttributeAndValue() + { + Attribute attribute = new Attribute( "test", ValueType.TEXT ); + attribute.setDataElementAttribute( true ); + attributeService.addAttribute( attribute ); + + DataElement dataElementA = createDataElement( 'A' ); + DataElement dataElementB = createDataElement( 'B' ); + DataElement dataElementC = createDataElement( 'C' ); + + dataElementStore.save( dataElementA ); + dataElementStore.save( dataElementB ); + dataElementStore.save( dataElementC ); + + AttributeValue attributeValueA = new AttributeValue( "SOME VALUE", attribute ); + AttributeValue attributeValueB = new AttributeValue( "SOME VALUE", attribute ); + AttributeValue attributeValueC = new AttributeValue( "ANOTHER VALUE", attribute ); + + attributeService.addAttributeValue( dataElementA, attributeValueA ); + attributeService.addAttributeValue( dataElementB, attributeValueB ); + attributeService.addAttributeValue( dataElementC, attributeValueC ); + + dataElementStore.update( dataElementA ); + dataElementStore.update( dataElementB ); + dataElementStore.update( dataElementC ); + + List<AttributeValue> values = dataElementStore.getAttributeValueByAttributeAndValue( attribute, "SOME VALUE" ); + assertEquals( 2, values.size() ); + + values = dataElementStore.getAttributeValueByAttributeAndValue( attribute, "ANOTHER VALUE" ); + assertEquals( 1, values.size() ); } } === modified file 'dhis-2/dhis-support/dhis-support-hibernate/src/main/java/org/hisp/dhis/hibernate/HibernateGenericStore.java' --- dhis-2/dhis-support/dhis-support-hibernate/src/main/java/org/hisp/dhis/hibernate/HibernateGenericStore.java 2015-11-18 03:02:19 +0000 +++ dhis-2/dhis-support/dhis-support-hibernate/src/main/java/org/hisp/dhis/hibernate/HibernateGenericStore.java 2015-11-19 07:29:54 +0000 @@ -543,7 +543,8 @@ } @Override - public AttributeValue getAttributeValueByAttribute( Attribute attribute ) + @SuppressWarnings( "unchecked" ) + public List<AttributeValue> getAttributeValueByAttribute( Attribute attribute ) { Schema schema = schemaService.getDynamicSchema( getClazz() ); @@ -555,7 +556,31 @@ String hql = "select av from " + getClazz().getSimpleName() + " as e " + "inner join e.attributeValues av inner join av.attribute at where at = :attribute )"; - return (AttributeValue) getQuery( hql ).setEntity( "attribute", attribute ).uniqueResult(); + return getQuery( hql ).setEntity( "attribute", attribute ).list(); + } + + @Override + @SuppressWarnings( "unchecked" ) + public List<AttributeValue> getAttributeValueByAttributeAndValue( Attribute attribute, String value ) + { + Schema schema = schemaService.getDynamicSchema( getClazz() ); + + if ( schema == null || !schema.havePersistedProperty( "attributeValues" ) ) + { + return null; + } + + String hql = "select av from " + getClazz().getSimpleName() + " as e " + + "inner join e.attributeValues av inner join av.attribute at where at = :attribute and av.value = :value)"; + + return getQuery( hql ).setEntity( "attribute", attribute ).setString( "value", value ).list(); + } + + @Override + public <P extends IdentifiableObject> boolean isAttributeValueUnique( P object, AttributeValue attributeValue ) + { + List<AttributeValue> values = getAttributeValueByAttribute( attributeValue.getAttribute() ); + return values.isEmpty() || (object != null && values.size() == 1 && object.getAttributeValues().contains( values.get( 0 ) )); } //----------------------------------------------------------------------------------------------------------------
_______________________________________________ Mailing list: https://launchpad.net/~dhis2-devs Post to : dhis2-devs@lists.launchpad.net Unsubscribe : https://launchpad.net/~dhis2-devs More help : https://help.launchpad.net/ListHelp