From ff7f1f5d44e974e33c37c148f4f451d054208e4a Mon Sep 17 00:00:00 2001
From: buczekp <buczekp>
Date: Fri, 29 Jul 2011 11:56:35 +0000
Subject: [PATCH] [LMS-2421] partly fixed permanent deletion with enabled
 trash: - deletion of samples works - deletion of data sets & experiments
 fails

SVN: 22291
---
 .../generic/server/dataaccess/db/DeletionDAO.java        | 5 +++--
 .../openbis/generic/server/dataaccess/db/SampleDAO.java  | 9 +++++----
 2 files changed, 8 insertions(+), 6 deletions(-)

diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/DeletionDAO.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/DeletionDAO.java
index e35bce0c5cc..bced950f11b 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/DeletionDAO.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/DeletionDAO.java
@@ -135,7 +135,7 @@ final class DeletionDAO extends AbstractGenericEntityDAO<DeletionPE> implements
     public List<String> findTrashedDataSetCodes(final List<TechId> deletionIds)
     {
         final DetachedCriteria criteria =
-                DetachedCriteria.forClass(EntityKind.DATA_SET.getEntityClass());
+                DetachedCriteria.forClass(EntityKind.DATA_SET.getDeletedEntityClass());
         final List<Long> longIds = TechId.asLongs(deletionIds);
         criteria.setProjection(Projections.property("code"));
         criteria.add(Restrictions.in("deletion.id", longIds));
@@ -148,7 +148,8 @@ final class DeletionDAO extends AbstractGenericEntityDAO<DeletionPE> implements
     private List<TechId> findTrashedEntityIds(final List<TechId> deletionIds,
             final EntityKind entityKind)
     {
-        final DetachedCriteria criteria = DetachedCriteria.forClass(entityKind.getEntityClass());
+        final DetachedCriteria criteria =
+                DetachedCriteria.forClass(entityKind.getDeletedEntityClass());
         final List<Long> longIds = TechId.asLongs(deletionIds);
         criteria.setProjection(Projections.id());
         criteria.add(Restrictions.in("deletion.id", longIds));
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/SampleDAO.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/SampleDAO.java
index fa262626aa2..096fa4ae138 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/SampleDAO.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/SampleDAO.java
@@ -383,8 +383,10 @@ public class SampleDAO extends AbstractGenericEntityWithPropertiesDAO<SamplePE>
     public void delete(final List<TechId> sampleIds, final PersonPE registrator, final String reason)
             throws DataAccessException
     {
-        final String sqlPermId =
-                "SELECT perm_id FROM " + TableNames.SAMPLES_VIEW + " WHERE id = :sId";
+        // NOTE: we use SAMPLES_ALL_TABLE, not DELETED_SAMPLES_VIEW because we still want to be
+        // able to directly delete samples without going to trash (trash may be disabled)
+        final String samplesTable = TableNames.SAMPLES_ALL_TABLE;
+        final String sqlPermId = "SELECT perm_id FROM " + samplesTable + " WHERE id = :sId";
         final String sqlDeleteProperties =
                 "DELETE FROM " + TableNames.SAMPLE_PROPERTIES_TABLE + " WHERE samp_id = :sId";
         final String sqlAttachmentContentIds =
@@ -393,8 +395,7 @@ public class SampleDAO extends AbstractGenericEntityWithPropertiesDAO<SamplePE>
                 "DELETE FROM " + TableNames.ATTACHMENT_CONTENT_TABLE + " WHERE id in (:aIds)";
         final String sqlDeleteAttachments =
                 "DELETE FROM " + TableNames.ATTACHMENTS_TABLE + " WHERE samp_id = :sId";
-        final String sqlDeleteSample =
-                "DELETE FROM " + TableNames.SAMPLES_VIEW + " WHERE id = :sId";
+        final String sqlDeleteSample = "DELETE FROM " + samplesTable + " WHERE id = :sId";
         final String sqlInsertEvent =
                 String.format(
                         "INSERT INTO %s (id, event_type, description, reason, pers_id_registerer, entity_type, identifier) "
-- 
GitLab