diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/EntityPropertiesConverter.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/EntityPropertiesConverter.java index eac8429b582996cb7eee2397fddef6f422db8494..93ef5b5b0abb6f8ed2ad57703766f83e998a6db9 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/EntityPropertiesConverter.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/EntityPropertiesConverter.java @@ -313,8 +313,8 @@ public final class EntityPropertiesConverter implements IEntityPropertiesConvert } } - public final <T extends EntityPropertyPE> T createProperty(PropertyTypePE propertyType, - EntityTypePropertyTypePE entityTypPropertyType, final PersonPE registrator, String value) + public final String tryCreateValidatedPropertyValue(PropertyTypePE propertyType, + EntityTypePropertyTypePE entityTypPropertyType, String value) { if (entityTypPropertyType.isMandatory() && value == null) { @@ -325,11 +325,20 @@ public final class EntityPropertiesConverter implements IEntityPropertiesConvert { final String validated = propertyValueValidator.validatePropertyValue(propertyType, value); - return createEntityProperty(registrator, propertyType, entityTypPropertyType, validated); + return validated; } return null; } + public final <T extends EntityPropertyPE> T createValidatedProperty(PropertyTypePE propertyType, + EntityTypePropertyTypePE entityTypPropertyType, final PersonPE registrator, + String validatedValue) + { + assert validatedValue != null; + return createEntityProperty(registrator, propertyType, entityTypPropertyType, + validatedValue); + } + public <T extends EntityPropertyPE, P extends IEntityProperty> Set<T> updateProperties( Collection<T> oldProperties, EntityTypePE entityType, List<P> newProperties, PersonPE registrator) diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/EntityTypePropertyTypeBO.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/EntityTypePropertyTypeBO.java index 4bae4196747265735123cdf38905b09925bcf85a..8dd175bdbaccf0ae91dd37833a4f9a81f6e83ded 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/EntityTypePropertyTypeBO.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/EntityTypePropertyTypeBO.java @@ -30,6 +30,7 @@ import ch.systemsx.cisd.openbis.generic.shared.dto.EntityPropertyPE; import ch.systemsx.cisd.openbis.generic.shared.dto.EntityTypePE; import ch.systemsx.cisd.openbis.generic.shared.dto.EntityTypePropertyTypePE; import ch.systemsx.cisd.openbis.generic.shared.dto.IEntityPropertiesHolder; +import ch.systemsx.cisd.openbis.generic.shared.dto.PersonPE; import ch.systemsx.cisd.openbis.generic.shared.dto.PropertyTypePE; import ch.systemsx.cisd.openbis.generic.shared.dto.Session; import ch.systemsx.cisd.openbis.generic.shared.dto.properties.EntityKind; @@ -141,11 +142,15 @@ public class EntityTypePropertyTypeBO extends AbstractBusinessObject implements .getLabel(), createPlural(size), entityType.getCode())); } } + PersonPE registrator = findRegistrator(); + String validatedValue = + propertiesConverter.tryCreateValidatedPropertyValue(propertyType, assignment, + defaultValue); for (IEntityPropertiesHolder entity : entities) { final EntityPropertyPE property = - propertiesConverter.createProperty(propertyType, assignment, findRegistrator(), - defaultValue); + propertiesConverter.createValidatedProperty(propertyType, assignment, + registrator, validatedValue); if (property != null) { entity.addProperty(property); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/IEntityPropertiesConverter.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/IEntityPropertiesConverter.java index 7cd45a397d37f05de50e468edeab0e6326ab11a8..77a06a71c5be0905fc69f1ef973a4f154ae8322d 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/IEntityPropertiesConverter.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/IEntityPropertiesConverter.java @@ -46,12 +46,19 @@ public interface IEntityPropertiesConverter final IEntityProperty[] properties, final String entityTypeCode, final PersonPE registrator); + /** + * Returns given value validated and converted for given property type and entity type. + * Result may be null if given value is null. + */ + public String tryCreateValidatedPropertyValue(PropertyTypePE propertyType, + EntityTypePropertyTypePE entityTypPropertyType, String value); + /** * Creates {@link EntityPropertyPE}. */ - public <T extends EntityPropertyPE> T createProperty(PropertyTypePE propertyType, + public <T extends EntityPropertyPE> T createValidatedProperty(PropertyTypePE propertyType, EntityTypePropertyTypePE entityTypePropertyType, final PersonPE registrator, - String value); + String validatedValue); /** Updates Set<T> of properties. */ public <T extends EntityPropertyPE, P extends IEntityProperty> Set<T> updateProperties( diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/business/bo/EntityPropertiesConverterTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/business/bo/EntityPropertiesConverterTest.java index ce5362c832744c0c1539d9b60c649b949d17f8f8..fdfc897d242c0f3eec3ff9a5bfe52826132f98df 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/business/bo/EntityPropertiesConverterTest.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/business/bo/EntityPropertiesConverterTest.java @@ -246,13 +246,15 @@ public final class EntityPropertiesConverterTest extends AbstractBOTest one(propertyValueValidator).validatePropertyValue(propertyType, defaultValue); } }); - assertEquals(registrator, entityPropertiesConverter.createProperty(propertyType, + entityPropertiesConverter.tryCreateValidatedPropertyValue(propertyType, assignment, + defaultValue); + assertEquals(registrator, entityPropertiesConverter.createValidatedProperty(propertyType, assignment, registrator, defaultValue).getRegistrator()); context.assertIsSatisfied(); } @Test(expectedExceptions = UserFailureException.class) - public void testCreatePropertyMandatoryWithNullGlobal() throws Exception + public void testCreateValidatedPropertyValueMandatoryWithNullGlobal() throws Exception { final IEntityPropertiesConverter entityPropertiesConverter = createEntityPropertiesConverter(EntityKind.SAMPLE); @@ -261,15 +263,15 @@ public final class EntityPropertiesConverterTest extends AbstractBOTest EntityTypePropertyTypePE assignment = EntityTypePropertyTypePE.createEntityTypePropertyType(entityKind); assignment.setMandatory(true); - PersonPE registrator = new PersonPE(); final String defaultValue = null; - entityPropertiesConverter.createProperty(propertyType, assignment, registrator, + + entityPropertiesConverter.tryCreateValidatedPropertyValue(propertyType, assignment, defaultValue); context.assertIsSatisfied(); } @Test - public void testCreatePropertyNotMandatoryWithNullGlobal() throws Exception + public void testCreateValidatedPropertyValueNotMandatoryWithNullGlobal() throws Exception { final IEntityPropertiesConverter entityPropertiesConverter = createEntityPropertiesConverter(EntityKind.EXPERIMENT); @@ -278,10 +280,9 @@ public final class EntityPropertiesConverterTest extends AbstractBOTest EntityTypePropertyTypePE assignment = EntityTypePropertyTypePE.createEntityTypePropertyType(entityKind); assignment.setMandatory(false); - PersonPE registrator = new PersonPE(); final String defaultValue = null; - assertNull(entityPropertiesConverter.createProperty(propertyType, assignment, registrator, - defaultValue)); + assertNull(entityPropertiesConverter.tryCreateValidatedPropertyValue(propertyType, + assignment, defaultValue)); context.assertIsSatisfied(); } } diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/business/bo/EntityTypePropertyTypeBOTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/business/bo/EntityTypePropertyTypeBOTest.java index 911fe71e47e88440007c427c0ca8c8ae6173ba2c..07d0e98283bee12704efa0b91b1cbc4767c3cf3f 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/business/bo/EntityTypePropertyTypeBOTest.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/business/bo/EntityTypePropertyTypeBOTest.java @@ -104,7 +104,8 @@ public final class EntityTypePropertyTypeBOTest extends AbstractBOTest final EntityKind entityKind = EntityKind.EXPERIMENT; boolean mandatory = true; - final String defaultValue = "50"; + final String defaultValue = "50.00"; + final String validatedValue = "50.0"; final String section = "section 1"; final ExperimentPE experiment = new ExperimentPE(); @@ -132,9 +133,12 @@ public final class EntityTypePropertyTypeBOTest extends AbstractBOTest experimets.add(experiment); will(returnValue(experimets)); - one(propertiesConverter).createProperty(with(propertyType), + one(propertiesConverter).tryCreateValidatedPropertyValue(with(propertyType), + with(any(ExperimentTypePropertyTypePE.class)), with(defaultValue)); + will(returnValue(validatedValue)); + one(propertiesConverter).createValidatedProperty(with(propertyType), with(any(ExperimentTypePropertyTypePE.class)), - with(any(PersonPE.class)), with(defaultValue)); + with(any(PersonPE.class)), with(validatedValue)); will(returnValue(property)); } }); diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/business/bo/ExternalDataTableTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/business/bo/ExternalDataTableTest.java index 1f8291d881400888e4e04095e82eb1c1914e2179..3c21135b4a5460fffe08e558d2b23e5245f07bc4 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/business/bo/ExternalDataTableTest.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/business/bo/ExternalDataTableTest.java @@ -629,17 +629,6 @@ public final class ExternalDataTableTest extends AbstractBOTest }); } - private void prepareFlush() - { - context.checking(new Expectations() - { - { - one(externalDataDAO).flush(); - } - }); - - } - @SuppressWarnings("unchecked") private void prepareArchiving(final IDataStoreService service, final DataStorePE store, final ExternalDataPE... dataSets)