From 267e181aa5c2ec2cea4ed13339660371f6bcd4f4 Mon Sep 17 00:00:00 2001 From: jakubs <jakubs> Date: Tue, 29 Apr 2014 09:03:23 +0000 Subject: [PATCH] SSDM-170 Propagate properties to update to allow dataset batch update to delete properties SVN: 31426 --- .../business/bo/AbstractBusinessObject.java | 19 ++++++++++++------- .../generic/server/business/bo/DataBO.java | 2 +- .../server/business/bo/DataSetTable.java | 2 +- .../server/business/bo/ExperimentBO.java | 2 +- .../server/business/bo/MaterialBO.java | 2 +- .../generic/server/business/bo/SampleBO.java | 2 +- .../server/business/bo/SampleTable.java | 2 +- .../server/business/bo/ExperimentBOTest.java | 16 ++++++++-------- 8 files changed, 26 insertions(+), 21 deletions(-) diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/AbstractBusinessObject.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/AbstractBusinessObject.java index d66239e83ae..4fb16beedc2 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/AbstractBusinessObject.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/AbstractBusinessObject.java @@ -216,18 +216,23 @@ abstract class AbstractBusinessObject implements IDAOFactory return permID == null ? getPermIdDAO().createPermId() : permID; } - protected <T extends EntityPropertyPE> Set<T> convertProperties(final EntityTypePE type, - final Set<T> existingProperties, List<IEntityProperty> properties) + Set<String> extractPropertiesCodes(List<IEntityProperty> properties) { - final PersonPE registrator = findPerson(); - Set<String> propertiesToUpdate = new HashSet<String>(); + Set<String> propertiesCodes = new HashSet<String>(); if (properties != null) { for (IEntityProperty property : properties) { - propertiesToUpdate.add(property.getPropertyType().getCode()); + propertiesCodes.add(property.getPropertyType().getCode()); } } + return propertiesCodes; + } + + protected <T extends EntityPropertyPE> Set<T> convertProperties(final EntityTypePE type, + final Set<T> existingProperties, List<IEntityProperty> properties, Set<String> propertiesToUpdate) + { + final PersonPE registrator = findPerson(); return entityPropertiesConverter.updateProperties(existingProperties, type, properties, registrator, propertiesToUpdate); } @@ -559,7 +564,7 @@ abstract class AbstractBusinessObject implements IDAOFactory return RelationshipUtils.getContainerComponentRelationshipType(getRelationshipTypeDAO()); } - protected void updateProperties(EntityTypePE entityType, List<IEntityProperty> properties, + protected void updateProperties(EntityTypePE entityType, List<IEntityProperty> properties, Set<String> propertiesToUpdate, IEntityPropertiesHolder entityAsPropertiesHolder, IModifierAndModificationDateBean entityAsModifiableBean) { @@ -573,7 +578,7 @@ abstract class AbstractBusinessObject implements IDAOFactory existingPropertyValuesByCode.put(propertyCode, getValue(existingProperty)); } Set<? extends EntityPropertyPE> convertedProperties = - convertProperties(entityType, existingProperties, properties); + convertProperties(entityType, existingProperties, properties, propertiesToUpdate); if (isEquals(existingPropertyValuesByCode, convertedProperties) == false) { entityAsPropertiesHolder.setProperties(convertedProperties); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/DataBO.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/DataBO.java index 7abdc6b4245..29e4708565e 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/DataBO.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/DataBO.java @@ -610,7 +610,7 @@ public class DataBO extends AbstractDataSetBusinessObject implements IDataBO updateContainer(updates.getModifiedContainerDatasetCodeOrNull()); updateComponents(updates.getModifiedContainedDatasetCodesOrNull()); updateFileFormatType(data, updates.getFileFormatTypeCode()); - updateProperties(data.getEntityType(), updates.getProperties(), data, data); + updateProperties(data.getEntityType(), updates.getProperties(), extractPropertiesCodes(updates.getProperties()), data, data); if (data.getContainedDataSets() != null) { diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/DataSetTable.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/DataSetTable.java index f2bbf1317c0..626174af647 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/DataSetTable.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/DataSetTable.java @@ -1064,7 +1064,7 @@ public final class DataSetTable extends AbstractDataSetBusinessObject implements DataSetBatchUpdateDetails details = dataSetUpdates.getDetails(); - updateProperties(dataSet.getEntityType(), dataSetUpdates.getProperties(), dataSet, dataSet); + updateProperties(dataSet.getEntityType(), dataSetUpdates.getProperties(), details.getPropertiesToUpdate(), dataSet, dataSet); checkPropertiesBusinessRules(dataSet); boolean isExperimentFromSample = false; diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/ExperimentBO.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/ExperimentBO.java index 0dce83e611e..ebbd94cc577 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/ExperimentBO.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/ExperimentBO.java @@ -448,7 +448,7 @@ public final class ExperimentBO extends AbstractBusinessObject implements IExper { throwModifiedEntityException("Experiment"); } - updateProperties(experiment.getEntityType(), updates.getProperties(), experiment, + updateProperties(experiment.getEntityType(), updates.getProperties(), extractPropertiesCodes(updates.getProperties()), experiment, experiment); ProjectPE project = findProject(updates.getProjectIdentifier()); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/MaterialBO.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/MaterialBO.java index a089aea7d41..a1e54190c00 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/MaterialBO.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/MaterialBO.java @@ -152,7 +152,7 @@ public final class MaterialBO extends AbstractMaterialBusinessObject implements { final Set<MaterialPropertyPE> existingProperties = material.getProperties(); final MaterialTypePE type = material.getMaterialType(); - material.setProperties(convertProperties(type, existingProperties, properties)); + material.setProperties(convertProperties(type, existingProperties, properties, extractPropertiesCodes(properties))); } @Override diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/SampleBO.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/SampleBO.java index 2053b1feb1a..50d1f24646c 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/SampleBO.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/SampleBO.java @@ -298,7 +298,7 @@ public final class SampleBO extends AbstractSampleBusinessObject implements ISam { throwModifiedEntityException("Sample"); } - updateProperties(sample.getSampleType(), updates.getProperties(), sample, sample); + updateProperties(sample.getSampleType(), updates.getProperties(), extractPropertiesCodes(updates.getProperties()), sample, sample); spaceUpdated = updateSpace(sample, updates.getSampleIdentifier(), null); if (updates.isUpdateExperimentLink()) { diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/SampleTable.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/SampleTable.java index 97a6498c1b2..f780fe6579b 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/SampleTable.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/SampleTable.java @@ -418,7 +418,7 @@ public final class SampleTable extends AbstractSampleBusinessObject implements I { final Set<SamplePropertyPE> existingProperties = sample.getProperties(); final SampleTypePE type = sample.getSampleType(); - sample.setProperties(convertProperties(type, existingProperties, properties)); + sample.setProperties(convertProperties(type, existingProperties, properties, extractPropertiesCodes(properties))); } private void batchUpdateProperties(SamplePE sample, List<IEntityProperty> properties, diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/business/bo/ExperimentBOTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/business/bo/ExperimentBOTest.java index 10921387bfc..0fd255c7d1c 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/business/bo/ExperimentBOTest.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/business/bo/ExperimentBOTest.java @@ -465,7 +465,7 @@ public final class ExperimentBOTest extends AbstractBOTest prepareUpdateProperties(exp.getProperties(), newProperties, experimentType, ManagerTestTool.EXAMPLE_SESSION.tryGetPerson(), Arrays.asList(changedProperty, addedProperty)); - bo.updateProperties(experiment.getEntityType(), newProperties, experiment, experiment); + bo.updateProperties(experiment.getEntityType(), newProperties, Collections.<String> emptySet(), experiment, experiment); assertTrue(experiment.getProperties().contains(changedProperty)); assertFalse(experiment.getProperties().contains(deletedProperty)); @@ -492,7 +492,7 @@ public final class ExperimentBOTest extends AbstractBOTest new ExperimentBO(daoFactory, ManagerTestTool.EXAMPLE_SESSION, propertiesConverter, managedPropertyEvaluatorFactory); - bo.updateProperties(entityType, newProperties, entityAsPropertiesHolder, + bo.updateProperties(entityType, newProperties, Collections.<String> emptySet(), entityAsPropertiesHolder, entityAsModifiableBean); context.assertIsSatisfied(); @@ -519,7 +519,7 @@ public final class ExperimentBOTest extends AbstractBOTest new ExperimentBO(daoFactory, ManagerTestTool.EXAMPLE_SESSION, propertiesConverter, managedPropertyEvaluatorFactory); - bo.updateProperties(entityType, newProperties, entityAsPropertiesHolder, + bo.updateProperties(entityType, newProperties, Collections.<String> emptySet(), entityAsPropertiesHolder, entityAsModifiableBean); context.assertIsSatisfied(); @@ -547,7 +547,7 @@ public final class ExperimentBOTest extends AbstractBOTest new ExperimentBO(daoFactory, ManagerTestTool.EXAMPLE_SESSION, propertiesConverter, managedPropertyEvaluatorFactory); - bo.updateProperties(entityType, newProperties, entityAsPropertiesHolder, + bo.updateProperties(entityType, newProperties, Collections.<String> emptySet(), entityAsPropertiesHolder, entityAsModifiableBean); context.assertIsSatisfied(); @@ -575,7 +575,7 @@ public final class ExperimentBOTest extends AbstractBOTest new ExperimentBO(daoFactory, ManagerTestTool.EXAMPLE_SESSION, propertiesConverter, managedPropertyEvaluatorFactory); - bo.updateProperties(entityType, newProperties, entityAsPropertiesHolder, + bo.updateProperties(entityType, newProperties, Collections.<String> emptySet(), entityAsPropertiesHolder, entityAsModifiableBean); context.assertIsSatisfied(); @@ -604,7 +604,7 @@ public final class ExperimentBOTest extends AbstractBOTest new ExperimentBO(daoFactory, ManagerTestTool.EXAMPLE_SESSION, propertiesConverter, managedPropertyEvaluatorFactory); - bo.updateProperties(entityType, newProperties, entityAsPropertiesHolder, + bo.updateProperties(entityType, newProperties, Collections.<String> emptySet(), entityAsPropertiesHolder, entityAsModifiableBean); context.assertIsSatisfied(); @@ -629,7 +629,7 @@ public final class ExperimentBOTest extends AbstractBOTest new ExperimentBO(daoFactory, ManagerTestTool.EXAMPLE_SESSION, propertiesConverter, managedPropertyEvaluatorFactory); - bo.updateProperties(entityType, newProperties, entityAsPropertiesHolder, + bo.updateProperties(entityType, newProperties, Collections.<String> emptySet(), entityAsPropertiesHolder, entityAsModifiableBean); context.assertIsSatisfied(); @@ -654,7 +654,7 @@ public final class ExperimentBOTest extends AbstractBOTest new ExperimentBO(daoFactory, ManagerTestTool.EXAMPLE_SESSION, propertiesConverter, managedPropertyEvaluatorFactory); - bo.updateProperties(entityType, newProperties, entityAsPropertiesHolder, + bo.updateProperties(entityType, newProperties, Collections.<String> emptySet(), entityAsPropertiesHolder, entityAsModifiableBean); context.assertIsSatisfied(); -- GitLab