From cd11188cd395cf20406cdcd29ba17ab13a81be64 Mon Sep 17 00:00:00 2001
From: felmer <felmer>
Date: Mon, 6 Sep 2010 13:28:24 +0000
Subject: [PATCH] OBP-37 allow null argument for project

SVN: 17727
---
 .../generic/server/dataaccess/IExperimentDAO.java | 13 ++++++++-----
 .../server/dataaccess/db/ExperimentDAO.java       | 15 ++++++++-------
 2 files changed, 16 insertions(+), 12 deletions(-)

diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/IExperimentDAO.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/IExperimentDAO.java
index a79ff24507f..ac68f2bb0d5 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/IExperimentDAO.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/IExperimentDAO.java
@@ -33,17 +33,20 @@ import ch.systemsx.cisd.openbis.generic.shared.dto.ProjectPE;
 public interface IExperimentDAO extends IGenericDAO<ExperimentPE>
 {
     /**
-     * Lists all belonging to given <code>project</code>. Fetches also properties.
+     * Lists experiments of the specified project. Fetches also properties.
+     * 
+     * @param projectOrNull If <code>null</code> all experiments are returned.
      */
-    public List<ExperimentPE> listExperimentsWithProperties(final ProjectPE project)
+    public List<ExperimentPE> listExperimentsWithProperties(final ProjectPE projectOrNull)
             throws DataAccessException;
 
     /**
-     * Lists all of given <code>type</code> belonging to given <code>project</code>. Fetches also
-     * properties.
+     * Lists experiments of specified type and specified project. Fetches also properties.
+     * 
+     * @param projectOrNull If <code>null</code> all experiments of specified type are returned.
      */
     public List<ExperimentPE> listExperimentsWithProperties(final ExperimentTypePE experimentType,
-            final ProjectPE project) throws DataAccessException;
+            final ProjectPE projectOrNull) throws DataAccessException;
 
     /**
      * Lists all registered experiments. Doesn't fetch properties.
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/ExperimentDAO.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/ExperimentDAO.java
index d91485d5d51..31141cfc3db 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/ExperimentDAO.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/ExperimentDAO.java
@@ -57,31 +57,32 @@ public class ExperimentDAO extends AbstractGenericEntityDAO<ExperimentPE> implem
         super(sessionFactory, databaseInstance, ExperimentPE.class);
     }
 
-    public List<ExperimentPE> listExperimentsWithProperties(final ProjectPE project)
+    public List<ExperimentPE> listExperimentsWithProperties(final ProjectPE projectOrNull)
             throws DataAccessException
     {
-        return listExperimentsWithProperties(null, project);
+        return listExperimentsWithProperties(null, projectOrNull);
     }
 
     public List<ExperimentPE> listExperimentsWithProperties(
-            final ExperimentTypePE experimentTypeOrNull, final ProjectPE project)
+            final ExperimentTypePE experimentTypeOrNull, final ProjectPE projectOrNull)
             throws DataAccessException
     {
-        assert project != null : "Unspecified project.";
-
         final DetachedCriteria criteria = DetachedCriteria.forClass(getEntityClass());
         if (experimentTypeOrNull != null)
         {
             criteria.add(Restrictions.eq("experimentType", experimentTypeOrNull));
         }
-        criteria.add(Restrictions.eq("projectInternal", project));
+        if (projectOrNull != null)
+        {
+            criteria.add(Restrictions.eq("projectInternal", projectOrNull));
+        }
         criteria.setFetchMode("experimentProperties", FetchMode.JOIN);
         criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
         final List<ExperimentPE> list = cast(getHibernateTemplate().findByCriteria(criteria));
         if (operationLog.isDebugEnabled())
         {
             operationLog.debug(String.format("%d experiments have been found for project '%s'%s.",
-                    list.size(), project, (experimentTypeOrNull == null) ? ""
+                    list.size(), projectOrNull, (experimentTypeOrNull == null) ? ""
                             : " and experiment type '" + experimentTypeOrNull + "'"));
         }
         return list;
-- 
GitLab