From 4ab4824d73060f177ff3c0731e0f1aec83c74fda Mon Sep 17 00:00:00 2001 From: buczekp <buczekp> Date: Fri, 30 Apr 2010 19:23:34 +0000 Subject: [PATCH] [LMS-1508] improved speed of creating validated values for properties SVN: 15702 --- .../business/bo/EntityPropertiesConverter.java | 15 ++++++++++++--- .../business/bo/EntityTypePropertyTypeBO.java | 9 +++++++-- .../business/bo/IEntityPropertiesConverter.java | 11 +++++++++-- .../bo/EntityPropertiesConverterTest.java | 17 +++++++++-------- .../bo/EntityTypePropertyTypeBOTest.java | 10 +++++++--- .../business/bo/ExternalDataTableTest.java | 11 ----------- 6 files changed, 44 insertions(+), 29 deletions(-) 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 eac8429b582..93ef5b5b0ab 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 4bae4196747..8dd175bdbac 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 7cd45a397d3..77a06a71c5b 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 ce5362c8327..fdfc897d242 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 911fe71e47e..07d0e98283b 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 1f8291d8814..3c21135b4a5 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) -- GitLab