diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/translator/MaterialTypeTranslator.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/translator/MaterialTypeTranslator.java index 6c22911a1193778d0bfd718c6c517f141630926e..b83c01feef420e9c3ce70e3365eff8b48e1be11e 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/translator/MaterialTypeTranslator.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/translator/MaterialTypeTranslator.java @@ -16,10 +16,14 @@ package ch.systemsx.cisd.openbis.generic.client.web.server.translator; +import java.util.Set; + import org.apache.commons.lang.StringEscapeUtils; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.MaterialType; import ch.systemsx.cisd.openbis.generic.shared.dto.MaterialTypePE; +import ch.systemsx.cisd.openbis.generic.shared.dto.MaterialTypePropertyTypePE; +import ch.systemsx.cisd.openbis.generic.shared.util.HibernateUtils; /** * Translates {@link MaterialTypePE} to {@link MaterialType}. @@ -34,6 +38,11 @@ public class MaterialTypeTranslator } public static MaterialType translate(MaterialTypePE entityTypeOrNull) + { + return translate(entityTypeOrNull, true); + } + + public static MaterialType translate(MaterialTypePE entityTypeOrNull, boolean withProperties) { if (entityTypeOrNull == null) { @@ -44,11 +53,24 @@ public class MaterialTypeTranslator result.setDescription(StringEscapeUtils.escapeHtml(entityTypeOrNull.getDescription())); result.setDatabaseInstance(DatabaseInstanceTranslator.translate(entityTypeOrNull .getDatabaseInstance())); + if (withProperties == false) + { + unsetMaterialTypes(entityTypeOrNull.getMaterialTypePropertyTypes()); + } result.setMaterialTypePropertyTypes(MaterialTypePropertyTypeTranslator.translate( entityTypeOrNull.getMaterialTypePropertyTypes(), result)); return result; } + private static void unsetMaterialTypes(Set<MaterialTypePropertyTypePE> materialTypePropertyTypes) + { + if ((HibernateUtils.isInitialized(materialTypePropertyTypes))) + for (MaterialTypePropertyTypePE mtpt : materialTypePropertyTypes) + { + mtpt.getPropertyType().setMaterialType(null); + } + } + public static MaterialTypePE translate(MaterialType type) { final MaterialTypePE result = new MaterialTypePE(); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/translator/PropertyTypeTranslator.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/translator/PropertyTypeTranslator.java index a67568da21fcf7098d08a3260cb73e139b4df4cd..5f586169e08b39ec9c3d5dfbd9047e73f398c1d3 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/translator/PropertyTypeTranslator.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/translator/PropertyTypeTranslator.java @@ -59,15 +59,8 @@ public final class PropertyTypeTranslator result.setLabel(StringEscapeUtils.escapeHtml(propertyType.getLabel())); result.setDataType(DataTypeTranslator.translate(propertyType.getType())); result.setVocabulary(VocabularyTranslator.translate(propertyType.getVocabulary())); - if (materialType == null) - { - result - .setMaterialType(MaterialTypeTranslator.translate(propertyType - .getMaterialType())); - } else - { - result.setMaterialType(materialType); - } + result.setMaterialType(MaterialTypeTranslator.translate(propertyType.getMaterialType(), + false)); result.setDescription(StringEscapeUtils.escapeHtml(propertyType.getDescription())); result.setSampleTypePropertyTypes(SampleTypePropertyTypeTranslator.translate(propertyType .getSampleTypePropertyTypes(), result));