Skip to content
Snippets Groups Projects
Commit f3b5f019 authored by jakubs's avatar jakubs
Browse files

BIS-173 - refactoring of entity validation interceptor

SVN: 26497
parent 2ad170ec
No related branches found
No related tags found
No related merge requests found
...@@ -33,12 +33,7 @@ import ch.systemsx.cisd.openbis.generic.server.dataaccess.dynamic_property.calcu ...@@ -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.EntityValidationCalculator;
import ch.systemsx.cisd.openbis.generic.server.dataaccess.dynamic_property.calculator.api.IEntityAdaptor; 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.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.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; import ch.systemsx.cisd.openbis.generic.shared.dto.ScriptPE;
/** /**
...@@ -66,27 +61,18 @@ public class EntityVerificationInterceptor extends EmptyInterceptor ...@@ -66,27 +61,18 @@ public class EntityVerificationInterceptor extends EmptyInterceptor
IHibernateTransactionManagerCallback callback; IHibernateTransactionManagerCallback callback;
Set<SamplePE> modifiedSamples; Set<IEntityInformationWithPropertiesHolder> modifiedEntities;
Set<MaterialPE> modifiedMaterials; Set<IEntityInformationWithPropertiesHolder> newEntities;
Set<ExperimentPE> modifiedExperiments;
Set<DataPE> modifiedDatasets;
Set<SamplePE> newSamples;
Set<MaterialPE> newMaterials;
Set<ExperimentPE> newExperiments;
Set<DataPE> newDatasets;
@Override @Override
public boolean onSave(Object entity, Serializable id, Object[] state, String[] propertyNames, public boolean onSave(Object entity, Serializable id, Object[] state, String[] propertyNames,
Type[] types) Type[] types)
{ {
newEntity(entity); if (entity instanceof IEntityInformationWithPropertiesHolder)
{
newEntity(entity);
}
return false; return false;
} }
...@@ -94,70 +80,42 @@ public class EntityVerificationInterceptor extends EmptyInterceptor ...@@ -94,70 +80,42 @@ public class EntityVerificationInterceptor extends EmptyInterceptor
public boolean onFlushDirty(Object entity, Serializable id, Object[] currentState, public boolean onFlushDirty(Object entity, Serializable id, Object[] currentState,
Object[] previousState, String[] propertyNames, Type[] types) Object[] previousState, String[] propertyNames, Type[] types)
{ {
modifiedEntity(entity); if (entity instanceof IEntityInformationWithPropertiesHolder)
{
modifiedEntity(entity);
}
return false; return false;
} }
@Override @Override
public void beforeTransactionCompletion(Transaction tx) public void beforeTransactionCompletion(Transaction tx)
{ {
for (SamplePE sample : newSamples) for (IEntityInformationWithPropertiesHolder entity : newEntities)
{
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)
{ {
validateModifiedEntity(tx, dataset, dataset.getDataSetType()); validateNewEntity(tx, entity);
} }
for (MaterialPE material : modifiedMaterials) for (IEntityInformationWithPropertiesHolder entity : modifiedEntities)
{ {
validateModifiedEntity(tx, material, material.getMaterialType()); validateModifiedEntity(tx, entity);
}
for (ExperimentPE experiment : modifiedExperiments)
{
validateModifiedEntity(tx, experiment, experiment.getEntityType());
} }
} }
private void validateModifiedEntity(Transaction tx, 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, private void validateNewEntity(Transaction tx, IEntityInformationWithPropertiesHolder entity)
EntityTypePE entityType)
{ {
validateEntity(tx, entity, entityType, true); validateEntity(tx, entity, true);
} }
private void validateEntity(Transaction tx, IEntityInformationWithPropertiesHolder entity, 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) if (validationScript != null)
{ {
validateEntityWithScript(tx, validationScript, entity, isNewEntity); validateEntityWithScript(tx, validationScript, entity, isNewEntity);
...@@ -206,36 +164,13 @@ public class EntityVerificationInterceptor extends EmptyInterceptor ...@@ -206,36 +164,13 @@ public class EntityVerificationInterceptor extends EmptyInterceptor
private void newEntity(Object entity) private void newEntity(Object entity)
{ {
if (entity instanceof SamplePE) newEntities.add((IEntityInformationWithPropertiesHolder) entity);
{
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);
}
} }
private void modifiedEntity(Object entity) private void modifiedEntity(Object entity)
{ {
if (entity instanceof SamplePE) addModifiedEntityToSet((IEntityInformationWithPropertiesHolder) entity, modifiedEntities,
{ newEntities);
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);
}
} }
private <T> void addModifiedEntityToSet(T entity, Set<T> modifiedSet, Set<T> newSet) private <T> void addModifiedEntityToSet(T entity, Set<T> modifiedSet, Set<T> newSet)
...@@ -248,15 +183,8 @@ public class EntityVerificationInterceptor extends EmptyInterceptor ...@@ -248,15 +183,8 @@ public class EntityVerificationInterceptor extends EmptyInterceptor
private void initializeLists() private void initializeLists()
{ {
modifiedSamples = new HashSet<SamplePE>(); modifiedEntities = new HashSet<IEntityInformationWithPropertiesHolder>();
modifiedExperiments = new HashSet<ExperimentPE>(); newEntities = new HashSet<IEntityInformationWithPropertiesHolder>();
modifiedMaterials = new HashSet<MaterialPE>();
modifiedDatasets = new HashSet<DataPE>();
newSamples = new HashSet<SamplePE>();
newExperiments = new HashSet<ExperimentPE>();
newMaterials = new HashSet<MaterialPE>();
newDatasets = new HashSet<DataPE>();
} }
} }
...@@ -136,7 +136,7 @@ public class EntityVerificationTest extends GenericSystemTestCase ...@@ -136,7 +136,7 @@ public class EntityVerificationTest extends GenericSystemTestCase
fail("update of sample with impossible to update type should fail"); fail("update of sample with impossible to update type should fail");
} catch (Exception ufe) } catch (Exception ufe)
{ {
assertTrue(ufe.getMessage().contains("Validation of sample")); assertTrue(ufe.getMessage(), ufe.getMessage().contains("Validation of sample"));
} }
// cleanup // cleanup
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment