@Override public <T extends IdentifiableObject> void updateAttributeValue( T object, AttributeValue attributeValue ) throws NonUniqueAttributeValueException { if ( object == null || attributeValue == null || attributeValue.getAttribute() == null || !attributeValue.getAttribute().getSupportedClasses().contains( object.getClass() ) ) { return; } if ( attributeValue.getAttribute().isUnique() ) { List<AttributeValue> values = manager.getAttributeValueByAttributeAndValue( object.getClass(), attributeValue.getAttribute(), attributeValue.getValue() ); if ( values.size() > 1 || (values.size() == 1 && !object.getAttributeValues().contains( values.get( 0 ) )) ) { throw new NonUniqueAttributeValueException( attributeValue ); } } attributeValue.setAutoFields(); attributeValueStore.update( attributeValue ); object.getAttributeValues().add( attributeValue ); }
@Override public <T extends IdentifiableObject> void addAttributeValue( T object, AttributeValue attributeValue ) throws NonUniqueAttributeValueException { if ( object == null || attributeValue == null || attributeValue.getAttribute() == null || !attributeValue.getAttribute().getSupportedClasses().contains( object.getClass() ) ) { return; } if ( attributeValue.getAttribute().isUnique() ) { List<AttributeValue> values = manager.getAttributeValueByAttributeAndValue( object.getClass(), attributeValue.getAttribute(), attributeValue.getValue() ); if ( !values.isEmpty() ) { throw new NonUniqueAttributeValueException( attributeValue ); } } attributeValue.setAutoFields(); attributeValueStore.save( attributeValue ); object.getAttributeValues().add( attributeValue ); }