diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonServer.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonServer.java index a2ce216d7f8bbb8fb43f680d51ef10f8bc097498..a0d32bd2bca6eb3312b698942e9302b12f035df5 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonServer.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonServer.java @@ -183,7 +183,6 @@ import ch.systemsx.cisd.openbis.generic.shared.dto.GridCustomFilterPE; import ch.systemsx.cisd.openbis.generic.shared.dto.IEntityInformationHolderDTO; import ch.systemsx.cisd.openbis.generic.shared.dto.IEntityInformationWithPropertiesHolder; import ch.systemsx.cisd.openbis.generic.shared.dto.InvalidationPE; -import ch.systemsx.cisd.openbis.generic.shared.dto.MaterialPE; import ch.systemsx.cisd.openbis.generic.shared.dto.MaterialTypePE; import ch.systemsx.cisd.openbis.generic.shared.dto.NewRoleAssignment; import ch.systemsx.cisd.openbis.generic.shared.dto.PersonPE; @@ -1582,9 +1581,11 @@ public final class CommonServer extends AbstractCommonServer<ICommonServerForInt public Material getMaterialInfo(String sessionToken, final MaterialIdentifier identifier) { - checkSession(sessionToken); - MaterialPE materialPE = getDAOFactory().getMaterialDAO().tryFindMaterial(identifier); - return (materialPE != null) ? MaterialTranslator.translate(materialPE) : null; + Session session = getSession(sessionToken); + IMaterialBO materialBO = getBusinessObjectFactory().createMaterialBO(session); + materialBO.loadByMaterialIdentifier(identifier); + materialBO.enrichWithProperties(); + return MaterialTranslator.translate(materialBO.getMaterial()); } public IEntityInformationHolderWithPermId getMaterialInformationHolder(String sessionToken, diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/IMaterialBO.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/IMaterialBO.java index 07e051261136ade741a99ab6fff57ba1a419c6ec..0f44e9f1238722191303e7f598d0948b459a9c96 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/IMaterialBO.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/IMaterialBO.java @@ -18,6 +18,7 @@ package ch.systemsx.cisd.openbis.generic.server.business.bo; import ch.systemsx.cisd.common.exceptions.UserFailureException; import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.MaterialIdentifier; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.api.IManagedProperty; import ch.systemsx.cisd.openbis.generic.shared.dto.MaterialPE; @@ -31,6 +32,11 @@ public interface IMaterialBO extends IEntityBusinessObject /** Returns the material which has been loaded. */ MaterialPE getMaterial(); + /** + * Loads the material by a given identifier. + */ + public void loadByMaterialIdentifier(MaterialIdentifier identifier); + /** Adds properties */ public void enrichWithProperties(); 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 ca52a4ffaab563e4d21b879e9c998a70ec680108..d34b376a60d3ff9d277738f0e397cb1872e6bd84 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 @@ -26,6 +26,7 @@ import ch.systemsx.cisd.common.exceptions.UserFailureException; import ch.systemsx.cisd.openbis.generic.server.dataaccess.IDAOFactory; import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IEntityProperty; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.MaterialIdentifier; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.api.IManagedProperty; import ch.systemsx.cisd.openbis.generic.shared.dto.EventPE; import ch.systemsx.cisd.openbis.generic.shared.dto.EventPE.EntityType; @@ -60,6 +61,17 @@ public final class MaterialBO extends AbstractMaterialBusinessObject implements dataChanged = false; } + public void loadByMaterialIdentifier(MaterialIdentifier identifier) + { + material = getMaterialDAO().tryFindMaterial(identifier); + if (material == null) + { + throw new UserFailureException(String.format( + "Material with identifier '%s' does not exist.", identifier)); + } + dataChanged = false; + } + public final void enrichWithProperties() { if (material != null)