From 4bfae9f97ce679523b80ea207898d7d47e8ab705 Mon Sep 17 00:00:00 2001
From: kaloyane <kaloyane>
Date: Fri, 17 Jun 2011 13:58:36 +0000
Subject: [PATCH] [LMS-2269] load the material properties in getMaterialInfo,
 so that UI can display them in the "All Assays" view

SVN: 21737
---
 .../cisd/openbis/generic/server/CommonServer.java    |  9 +++++----
 .../generic/server/business/bo/IMaterialBO.java      |  6 ++++++
 .../generic/server/business/bo/MaterialBO.java       | 12 ++++++++++++
 3 files changed, 23 insertions(+), 4 deletions(-)

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 a2ce216d7f8..a0d32bd2bca 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 07e05126113..0f44e9f1238 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 ca52a4ffaab..d34b376a60d 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)
-- 
GitLab