From ad6b46de16ff8584e3f2b9319ca97a6e637e8516 Mon Sep 17 00:00:00 2001 From: anttil <anttil> Date: Mon, 27 Aug 2012 08:13:22 +0000 Subject: [PATCH] BIS-153 / SP-258: Disallow setting an entity a validation script meant for another entity kind. SVN: 26454 --- .../openbis/generic/server/business/bo/EntityTypeBO.java | 3 ++- .../cisd/openbis/generic/shared/basic/dto/DataSetType.java | 6 ++++++ .../cisd/openbis/generic/shared/basic/dto/EntityType.java | 5 +++++ .../openbis/generic/shared/basic/dto/ExperimentType.java | 6 ++++++ .../cisd/openbis/generic/shared/basic/dto/MaterialType.java | 6 ++++++ .../cisd/openbis/generic/shared/basic/dto/SampleType.java | 6 ++++++ 6 files changed, 31 insertions(+), 1 deletion(-) diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/EntityTypeBO.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/EntityTypeBO.java index 99afd224568..4f63068c47c 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/EntityTypeBO.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/EntityTypeBO.java @@ -82,7 +82,8 @@ public final class EntityTypeBO extends AbstractBusinessObject implements IEntit { ScriptPE script = getScriptDAO() .tryFindByName(entityType.getValidationScript().getName()); - if (script != null) + + if (script != null && entityType.isEntityKind(script.getEntityKind())) { return script; } else diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/DataSetType.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/DataSetType.java index ee56ae512fe..20076689556 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/DataSetType.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/DataSetType.java @@ -97,4 +97,10 @@ public class DataSetType extends EntityType this.deletionDisallow = deletionDisallow; } + @Override + public boolean isEntityKind(EntityKind kind) + { + return kind == null || kind == EntityKind.DATA_SET; + } + } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/EntityType.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/EntityType.java index c12df20ed3d..2609af62355 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/EntityType.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/EntityType.java @@ -68,4 +68,9 @@ abstract public class EntityType extends BasicEntityType }); return etpts; } + + /** + * return true if this entity type is of given kind, or if the kind is null + */ + public abstract boolean isEntityKind(EntityKind kind); } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/ExperimentType.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/ExperimentType.java index c68a1875a58..4d89353e1de 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/ExperimentType.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/ExperimentType.java @@ -40,4 +40,10 @@ public class ExperimentType extends EntityType { this.experimentTypePropertyTypes = experimentTypePropertyTypes; } + + @Override + public boolean isEntityKind(EntityKind kind) + { + return kind == null || kind == EntityKind.EXPERIMENT; + } } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/MaterialType.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/MaterialType.java index 8b35fafe8d0..5b25f8389e6 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/MaterialType.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/MaterialType.java @@ -53,4 +53,10 @@ public class MaterialType extends EntityType this.materialTypePropertyTypes = materialTypePropertyTypes; } + @Override + public boolean isEntityKind(EntityKind kind) + { + return kind == null || kind == EntityKind.MATERIAL; + } + } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/SampleType.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/SampleType.java index a87cf3e2576..414df51e5ac 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/SampleType.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/SampleType.java @@ -260,4 +260,10 @@ public final class SampleType extends EntityType implements Serializable allPropertyTypes)); } + @Override + public boolean isEntityKind(EntityKind kind) + { + return kind == null || kind == EntityKind.SAMPLE; + } + } -- GitLab