diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/EntityVerificationInterceptor.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/EntityVerificationInterceptor.java index 07ba4a5e65dbe99ec583d4e1c96c59e06363bfc1..3d2ecaa0fe82a43045cc6d844364d61673ae50b0 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/EntityVerificationInterceptor.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/EntityVerificationInterceptor.java @@ -33,12 +33,7 @@ import ch.systemsx.cisd.openbis.generic.server.dataaccess.dynamic_property.calcu import ch.systemsx.cisd.openbis.generic.server.dataaccess.dynamic_property.calculator.EntityValidationCalculator; import ch.systemsx.cisd.openbis.generic.server.dataaccess.dynamic_property.calculator.api.IEntityAdaptor; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ServiceVersionHolder; -import ch.systemsx.cisd.openbis.generic.shared.dto.DataPE; -import ch.systemsx.cisd.openbis.generic.shared.dto.EntityTypePE; -import ch.systemsx.cisd.openbis.generic.shared.dto.ExperimentPE; import ch.systemsx.cisd.openbis.generic.shared.dto.IEntityInformationWithPropertiesHolder; -import ch.systemsx.cisd.openbis.generic.shared.dto.MaterialPE; -import ch.systemsx.cisd.openbis.generic.shared.dto.SamplePE; import ch.systemsx.cisd.openbis.generic.shared.dto.ScriptPE; /** @@ -66,27 +61,18 @@ public class EntityVerificationInterceptor extends EmptyInterceptor IHibernateTransactionManagerCallback callback; - Set<SamplePE> modifiedSamples; + Set<IEntityInformationWithPropertiesHolder> modifiedEntities; - Set<MaterialPE> modifiedMaterials; - - Set<ExperimentPE> modifiedExperiments; - - Set<DataPE> modifiedDatasets; - - Set<SamplePE> newSamples; - - Set<MaterialPE> newMaterials; - - Set<ExperimentPE> newExperiments; - - Set<DataPE> newDatasets; + Set<IEntityInformationWithPropertiesHolder> newEntities; @Override public boolean onSave(Object entity, Serializable id, Object[] state, String[] propertyNames, Type[] types) { - newEntity(entity); + if (entity instanceof IEntityInformationWithPropertiesHolder) + { + newEntity(entity); + } return false; } @@ -94,70 +80,42 @@ public class EntityVerificationInterceptor extends EmptyInterceptor public boolean onFlushDirty(Object entity, Serializable id, Object[] currentState, Object[] previousState, String[] propertyNames, Type[] types) { - modifiedEntity(entity); + if (entity instanceof IEntityInformationWithPropertiesHolder) + { + modifiedEntity(entity); + } return false; } @Override public void beforeTransactionCompletion(Transaction tx) { - for (SamplePE sample : newSamples) - { - validateNewEntity(tx, sample, sample.getSampleType()); - } - - for (DataPE dataset : newDatasets) - { - validateNewEntity(tx, dataset, dataset.getDataSetType()); - } - - for (MaterialPE material : newMaterials) - { - validateNewEntity(tx, material, material.getMaterialType()); - } - - for (ExperimentPE experiment : newExperiments) - { - validateNewEntity(tx, experiment, experiment.getEntityType()); - } - - for (SamplePE sample : modifiedSamples) - { - validateModifiedEntity(tx, sample, sample.getSampleType()); - } - - for (DataPE dataset : modifiedDatasets) + for (IEntityInformationWithPropertiesHolder entity : newEntities) { - validateModifiedEntity(tx, dataset, dataset.getDataSetType()); + validateNewEntity(tx, entity); } - for (MaterialPE material : modifiedMaterials) + for (IEntityInformationWithPropertiesHolder entity : modifiedEntities) { - validateModifiedEntity(tx, material, material.getMaterialType()); - } - - for (ExperimentPE experiment : modifiedExperiments) - { - validateModifiedEntity(tx, experiment, experiment.getEntityType()); + validateModifiedEntity(tx, entity); } } private void validateModifiedEntity(Transaction tx, - IEntityInformationWithPropertiesHolder entity, EntityTypePE entityType) + IEntityInformationWithPropertiesHolder entity) { - validateEntity(tx, entity, entityType, false); + validateEntity(tx, entity, false); } - private void validateNewEntity(Transaction tx, IEntityInformationWithPropertiesHolder entity, - EntityTypePE entityType) + private void validateNewEntity(Transaction tx, IEntityInformationWithPropertiesHolder entity) { - validateEntity(tx, entity, entityType, true); + validateEntity(tx, entity, true); } private void validateEntity(Transaction tx, IEntityInformationWithPropertiesHolder entity, - EntityTypePE entityType, boolean isNewEntity) + boolean isNewEntity) { - ScriptPE validationScript = entityType.getValidationScript(); + ScriptPE validationScript = entity.getEntityType().getValidationScript(); if (validationScript != null) { validateEntityWithScript(tx, validationScript, entity, isNewEntity); @@ -206,36 +164,13 @@ public class EntityVerificationInterceptor extends EmptyInterceptor private void newEntity(Object entity) { - if (entity instanceof SamplePE) - { - newSamples.add((SamplePE) entity); - } else if (entity instanceof ExperimentPE) - { - newExperiments.add((ExperimentPE) entity); - } else if (entity instanceof MaterialPE) - { - newMaterials.add((MaterialPE) entity); - } else if (entity instanceof DataPE) - { - newDatasets.add((DataPE) entity); - } + newEntities.add((IEntityInformationWithPropertiesHolder) entity); } private void modifiedEntity(Object entity) { - if (entity instanceof SamplePE) - { - addModifiedEntityToSet((SamplePE) entity, modifiedSamples, newSamples); - } else if (entity instanceof ExperimentPE) - { - addModifiedEntityToSet((ExperimentPE) entity, modifiedExperiments, newExperiments); - } else if (entity instanceof MaterialPE) - { - addModifiedEntityToSet((MaterialPE) entity, modifiedMaterials, newMaterials); - } else if (entity instanceof DataPE) - { - addModifiedEntityToSet((DataPE) entity, modifiedDatasets, newDatasets); - } + addModifiedEntityToSet((IEntityInformationWithPropertiesHolder) entity, modifiedEntities, + newEntities); } private <T> void addModifiedEntityToSet(T entity, Set<T> modifiedSet, Set<T> newSet) @@ -248,15 +183,8 @@ public class EntityVerificationInterceptor extends EmptyInterceptor private void initializeLists() { - modifiedSamples = new HashSet<SamplePE>(); - modifiedExperiments = new HashSet<ExperimentPE>(); - modifiedMaterials = new HashSet<MaterialPE>(); - modifiedDatasets = new HashSet<DataPE>(); - - newSamples = new HashSet<SamplePE>(); - newExperiments = new HashSet<ExperimentPE>(); - newMaterials = new HashSet<MaterialPE>(); - newDatasets = new HashSet<DataPE>(); + modifiedEntities = new HashSet<IEntityInformationWithPropertiesHolder>(); + newEntities = new HashSet<IEntityInformationWithPropertiesHolder>(); } } diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/plugin/generic/EntityVerificationTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/plugin/generic/EntityVerificationTest.java index fae68344c726a3470b51cb70cb78efea4461cffc..447cfb7cd35e494b941f3ec3d193dcc1fc1d2c67 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/plugin/generic/EntityVerificationTest.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/plugin/generic/EntityVerificationTest.java @@ -136,7 +136,7 @@ public class EntityVerificationTest extends GenericSystemTestCase fail("update of sample with impossible to update type should fail"); } catch (Exception ufe) { - assertTrue(ufe.getMessage().contains("Validation of sample")); + assertTrue(ufe.getMessage(), ufe.getMessage().contains("Validation of sample")); } // cleanup