diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonBusinessObjectFactory.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonBusinessObjectFactory.java index 517874a56a17ff9625b4e39658ef6eb351e70276..d4ec1e0e09df5e02165f17144d5897cb67f8ffc8 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonBusinessObjectFactory.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonBusinessObjectFactory.java @@ -40,7 +40,6 @@ import ch.systemsx.cisd.openbis.generic.server.business.bo.IExperimentBO; import ch.systemsx.cisd.openbis.generic.server.business.bo.IExperimentTable; import ch.systemsx.cisd.openbis.generic.server.business.bo.IGridCustomFilterOrColumnBO; import ch.systemsx.cisd.openbis.generic.server.business.bo.IGroupBO; -import ch.systemsx.cisd.openbis.generic.server.business.bo.ITrashBO; import ch.systemsx.cisd.openbis.generic.server.business.bo.IMaterialBO; import ch.systemsx.cisd.openbis.generic.server.business.bo.IMaterialTable; import ch.systemsx.cisd.openbis.generic.server.business.bo.IProjectBO; @@ -50,9 +49,9 @@ import ch.systemsx.cisd.openbis.generic.server.business.bo.IRoleAssignmentTable; import ch.systemsx.cisd.openbis.generic.server.business.bo.ISampleBO; import ch.systemsx.cisd.openbis.generic.server.business.bo.ISampleTable; import ch.systemsx.cisd.openbis.generic.server.business.bo.IScriptBO; +import ch.systemsx.cisd.openbis.generic.server.business.bo.ITrashBO; import ch.systemsx.cisd.openbis.generic.server.business.bo.IVocabularyBO; import ch.systemsx.cisd.openbis.generic.server.business.bo.IVocabularyTermBO; -import ch.systemsx.cisd.openbis.generic.server.business.bo.TrashBO; import ch.systemsx.cisd.openbis.generic.server.business.bo.MaterialBO; import ch.systemsx.cisd.openbis.generic.server.business.bo.MaterialTable; import ch.systemsx.cisd.openbis.generic.server.business.bo.ProjectBO; @@ -62,6 +61,7 @@ import ch.systemsx.cisd.openbis.generic.server.business.bo.RoleAssignmentTable; import ch.systemsx.cisd.openbis.generic.server.business.bo.SampleBO; import ch.systemsx.cisd.openbis.generic.server.business.bo.SampleTable; import ch.systemsx.cisd.openbis.generic.server.business.bo.ScriptBO; +import ch.systemsx.cisd.openbis.generic.server.business.bo.TrashBO; import ch.systemsx.cisd.openbis.generic.server.business.bo.VocabularyBO; import ch.systemsx.cisd.openbis.generic.server.business.bo.VocabularyTermBO; import ch.systemsx.cisd.openbis.generic.server.business.bo.datasetlister.DatasetLister; @@ -216,6 +216,6 @@ public final class CommonBusinessObjectFactory extends AbstractBusinessObjectFac public ITrashBO createTrashBO(Session session) { - return new TrashBO(getDaoFactory(), session, this); + return new TrashBO(getDaoFactory(), session); } } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/DataSetTable.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/DataSetTable.java index 4c73d12f65ee6c42c4b804447f2393eec07ea8db..868d208f595d2c19eb4f855d287ba301cd383004 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/DataSetTable.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/DataSetTable.java @@ -57,7 +57,6 @@ import ch.systemsx.cisd.openbis.generic.shared.dto.DataSetTypePE; import ch.systemsx.cisd.openbis.generic.shared.dto.DataSetUploadContext; import ch.systemsx.cisd.openbis.generic.shared.dto.DataStorePE; import ch.systemsx.cisd.openbis.generic.shared.dto.DatasetDescription; -import ch.systemsx.cisd.openbis.generic.shared.dto.DeletionPE; import ch.systemsx.cisd.openbis.generic.shared.dto.EntityTypePE; import ch.systemsx.cisd.openbis.generic.shared.dto.EntityTypePropertyTypePE; import ch.systemsx.cisd.openbis.generic.shared.dto.EventPE; @@ -235,19 +234,6 @@ public final class DataSetTable extends AbstractDataSetBusinessObject implements dataSets.addAll(getDataDAO().listDataSets(experiment)); } - public int trashByTechIds(List<TechId> dataSetIds, DeletionPE deletion) - throws UserFailureException - { - try - { - return getDataDAO().trash(dataSetIds, deletion); - } catch (final DataAccessException ex) - { - throwException(ex, "Data Set", EntityKind.DATA_SET); - } - return -1; // not possible - } - public void deleteLoadedDataSets(String reason) { assertDatasetsAreDeletable(dataSets); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/ExperimentBO.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/ExperimentBO.java index 20348f239ed3d73dd30ab3cd3bff3bbc1fbfcb18..98fd39655fc6f869898728644671d5ae8d1dbb28 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/ExperimentBO.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/ExperimentBO.java @@ -39,7 +39,6 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewExperiment; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.api.IManagedProperty; import ch.systemsx.cisd.openbis.generic.shared.dto.AttachmentPE; import ch.systemsx.cisd.openbis.generic.shared.dto.DataPE; -import ch.systemsx.cisd.openbis.generic.shared.dto.DeletionPE; import ch.systemsx.cisd.openbis.generic.shared.dto.EntityTypePE; import ch.systemsx.cisd.openbis.generic.shared.dto.EventPE; import ch.systemsx.cisd.openbis.generic.shared.dto.EventPE.EntityType; @@ -208,19 +207,6 @@ public final class ExperimentBO extends AbstractBusinessObject implements IExper + "') not found in experiment '" + experiment.getIdentifier() + "'."); } - public int trashByTechIds(List<TechId> experimentIds, DeletionPE deletion) - throws UserFailureException - { - try - { - return getExperimentDAO().trash(experimentIds, deletion); - } catch (final DataAccessException ex) - { - throwException(ex, "Experiment", EntityKind.EXPERIMENT); - } - return -1; // not possible - } - public void deleteByTechIds(List<TechId> experimentIds, String reason) throws UserFailureException { diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/IDataSetTable.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/IDataSetTable.java index d3bb6d8ffc3b250dc0510a97d772153eb2f84c7c..895671ce2035888e70c6958c41decd44894c4ce0 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/IDataSetTable.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/IDataSetTable.java @@ -19,7 +19,6 @@ package ch.systemsx.cisd.openbis.generic.server.business.bo; import java.util.List; import java.util.Map; -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.LinkModel; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewDataSet; @@ -27,7 +26,6 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModel; import ch.systemsx.cisd.openbis.generic.shared.dto.DataPE; import ch.systemsx.cisd.openbis.generic.shared.dto.DataSetUploadContext; import ch.systemsx.cisd.openbis.generic.shared.dto.DataStorePE; -import ch.systemsx.cisd.openbis.generic.shared.dto.DeletionPE; import ch.systemsx.cisd.openbis.generic.shared.dto.ExternalDataPE; /** @@ -70,15 +68,6 @@ public interface IDataSetTable */ void setDataSets(List<DataPE> dataSets); - /** - * Moves data sets to trash with given deletion. - * - * @param dataSetIds data set technical identifiers - * @throws UserFailureException if one of the data sets can not be moved to trash. - */ - public int trashByTechIds(List<TechId> dataSetIds, DeletionPE deletion) - throws UserFailureException; - /** * Permanently Deletes loaded data sets for specified reason. */ diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/IExperimentBO.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/IExperimentBO.java index 6d4512b92111263d5aad09625e277872afa28b63..830393007de4cd98a8a3fd92f1f74fb87db59085 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/IExperimentBO.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/IExperimentBO.java @@ -23,7 +23,6 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewExperiment; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.api.IManagedProperty; import ch.systemsx.cisd.openbis.generic.shared.dto.AttachmentPE; -import ch.systemsx.cisd.openbis.generic.shared.dto.DeletionPE; import ch.systemsx.cisd.openbis.generic.shared.dto.ExperimentPE; import ch.systemsx.cisd.openbis.generic.shared.dto.ExperimentUpdatesDTO; import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.ExperimentIdentifier; @@ -83,14 +82,6 @@ public interface IExperimentBO extends IEntityBusinessObject */ void deleteByTechIds(List<TechId> experimentIds, String reason); - /** - * Moves experiment to trash with given deletion. - * - * @param experimentIds experiment technical identifiers - * @throws UserFailureException if one of the experiments can not be moved to trash. - */ - int trashByTechIds(List<TechId> experimentIds, DeletionPE deletion); - /** * Changes the value of a managed property. */ diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/ISampleTable.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/ISampleTable.java index 1fa3e8fcc176a2e41fd8a798af9e8c37dc0eacea..edf03ef6e9e455e23b74b9926f9cd96cd69e3d81 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/ISampleTable.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/ISampleTable.java @@ -21,7 +21,6 @@ import java.util.List; 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.NewSample; -import ch.systemsx.cisd.openbis.generic.shared.dto.DeletionPE; import ch.systemsx.cisd.openbis.generic.shared.dto.ListSamplesByPropertyCriteria; import ch.systemsx.cisd.openbis.generic.shared.dto.PersonPE; import ch.systemsx.cisd.openbis.generic.shared.dto.SampleBatchUpdatesDTO; @@ -72,13 +71,4 @@ public interface ISampleTable */ public void deleteByTechIds(List<TechId> sampleIds, String reason) throws UserFailureException; - /** - * Moves samples to trash with given deletion. - * - * @param sampleIds sample technical identifiers - * @throws UserFailureException if one of the samples can not be moved to trash. - */ - public int trashByTechIds(List<TechId> sampleIds, DeletionPE deletion) - throws UserFailureException; - } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/SampleTable.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/SampleTable.java index 5942b4b7f07601b0d445a63e0f49033243de4a01..42c245bbe3f9647ba4caa3f46ccf581a380798ea 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/SampleTable.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/SampleTable.java @@ -31,7 +31,6 @@ 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.NewSample; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SampleBatchUpdateDetails; -import ch.systemsx.cisd.openbis.generic.shared.dto.DeletionPE; import ch.systemsx.cisd.openbis.generic.shared.dto.EntityTypePE; import ch.systemsx.cisd.openbis.generic.shared.dto.EntityTypePropertyTypePE; import ch.systemsx.cisd.openbis.generic.shared.dto.ExperimentPE; @@ -341,17 +340,4 @@ public final class SampleTable extends AbstractSampleBusinessObject implements I } } - public int trashByTechIds(List<TechId> sampleIds, DeletionPE deletion) - throws UserFailureException - { - try - { - return getSampleDAO().trash(sampleIds, deletion); - } catch (final DataAccessException ex) - { - throwException(ex, "Sample", EntityKind.SAMPLE); - } - return -1; // not possible - } - } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/TrashBO.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/TrashBO.java index de43071759f206b50b0b0052c9f2359ef3d67efe..d8b21fdaa42f7a2995941a67ff430431d5e29d56 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/TrashBO.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/TrashBO.java @@ -27,21 +27,18 @@ import ch.systemsx.cisd.openbis.generic.server.dataaccess.ISampleDAO; import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; import ch.systemsx.cisd.openbis.generic.shared.dto.DeletionPE; import ch.systemsx.cisd.openbis.generic.shared.dto.Session; +import ch.systemsx.cisd.openbis.generic.shared.dto.properties.EntityKind; /** * @author Piotr Buczek */ public class TrashBO extends AbstractBusinessObject implements ITrashBO { - - private final ICommonBusinessObjectFactory boFactory; - private DeletionPE deletion; - public TrashBO(IDAOFactory daoFactory, Session session, ICommonBusinessObjectFactory boFactory) + public TrashBO(IDAOFactory daoFactory, Session session) { super(daoFactory, session); - this.boFactory = boFactory; } public void createDeletion(String reason) @@ -61,8 +58,7 @@ public class TrashBO extends AbstractBusinessObject implements ITrashBO public void trashSamples(List<TechId> sampleIds) { assert deletion != null; - ISampleTable sampleTableBO = boFactory.createSampleTable(session); - int trashedCount = sampleTableBO.trashByTechIds(sampleIds, deletion); + int trashedCount = getDeletionDAO().trash(EntityKind.SAMPLE, sampleIds, deletion); if (trashedCount > 0) { trashSampleDependentChildrenAndComponents(sampleIds); @@ -73,8 +69,7 @@ public class TrashBO extends AbstractBusinessObject implements ITrashBO public void trashExperiments(List<TechId> experimentIds) { assert deletion != null; - IExperimentBO experimentBO = boFactory.createExperimentBO(session); - int trashedCount = experimentBO.trashByTechIds(experimentIds, deletion); + int trashedCount = getDeletionDAO().trash(EntityKind.EXPERIMENT, experimentIds, deletion); if (trashedCount > 0) { trashExperimentDependentDataSets(experimentIds); @@ -85,8 +80,7 @@ public class TrashBO extends AbstractBusinessObject implements ITrashBO public void trashDataSets(List<TechId> dataSetIds) { assert deletion != null; - IDataSetTable dataSetTable = boFactory.createDataSetTable(session); - dataSetTable.trashByTechIds(dataSetIds, deletion); + getDeletionDAO().trash(EntityKind.DATA_SET, dataSetIds, deletion); // NOTE: data set children are not cascade trashed - a conscious decision made by Tomek } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/IDataDAO.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/IDataDAO.java index d79f4e2a933a9ca0249a3b1a7c01281071add610..bfd7356f50e3ed89ca06c38b752357d5933f01cb 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/IDataDAO.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/IDataDAO.java @@ -27,7 +27,6 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetArchivingStatus; import ch.systemsx.cisd.openbis.generic.shared.dto.DataPE; import ch.systemsx.cisd.openbis.generic.shared.dto.DataStorePE; -import ch.systemsx.cisd.openbis.generic.shared.dto.DeletionPE; import ch.systemsx.cisd.openbis.generic.shared.dto.ExperimentPE; import ch.systemsx.cisd.openbis.generic.shared.dto.ExternalDataPE; import ch.systemsx.cisd.openbis.generic.shared.dto.SamplePE; @@ -120,9 +119,6 @@ public interface IDataDAO extends IGenericDAO<DataPE> public void updateDataSets(List<DataPE> externalData); - /** Move given data sets to trash using specified deletion. */ - public int trash(List<TechId> dataSetIds, DeletionPE deletion) throws DataAccessException; - /** Returns ids of data sets connected with samples specified by given ids. */ public List<TechId> listDataSetIdsBySampleIds(final Collection<TechId> samples); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/IDeletionDAO.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/IDeletionDAO.java index 191b15b9de360442f2cc76a4c4e3fb5556f833c4..61ae9a0ede56fd69cabc649a91759d1e1a145640 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/IDeletionDAO.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/IDeletionDAO.java @@ -22,6 +22,7 @@ import org.springframework.dao.DataAccessException; import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; import ch.systemsx.cisd.openbis.generic.shared.dto.DeletionPE; +import ch.systemsx.cisd.openbis.generic.shared.dto.properties.EntityKind; /** * An interface that contains all data access operations on {@link DeletionPE}s. @@ -30,17 +31,28 @@ import ch.systemsx.cisd.openbis.generic.shared.dto.DeletionPE; */ public interface IDeletionDAO extends IGenericDAO<DeletionPE> { + /** Inserts given {@link DeletionPE} into the database. */ + void create(final DeletionPE deletion) throws DataAccessException; + /** - * Inserts given {@link DeletionPE} into the database. + * Moves entities with given ids to trash using specified deletion. Ignores ids of entities that + * don't exist or are already in the trash. + * + * @return number of trashed entities */ - void create(final DeletionPE deletion) throws DataAccessException; + int trash(EntityKind entityKind, List<TechId> entityIds, DeletionPE deletion) + throws DataAccessException; + /** Reverts given deletion. The deletion record will be removed from DB. */ void revert(DeletionPE deletion); + /** Returns list of ids of samples moved to trash in specified deletions. */ List<TechId> findTrashedSampleIds(List<TechId> deletionIds); + /** Returns list of ids of experiments moved to trash in specified deletions. */ List<TechId> findTrashedExperimentIds(List<TechId> deletionIds); + /** Returns list of codes of data sets moved to trash in specified deletions. */ List<String> findTrashedDataSetCodes(List<TechId> deletionIds); } 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 924057cf6fef822f38fdf30449993a4e34091136..f691f6341f67456205618ced4fb1b4a938678d0e 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 @@ -22,8 +22,6 @@ import java.util.Set; import org.springframework.dao.DataAccessException; -import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; -import ch.systemsx.cisd.openbis.generic.shared.dto.DeletionPE; import ch.systemsx.cisd.openbis.generic.shared.dto.ExperimentPE; import ch.systemsx.cisd.openbis.generic.shared.dto.ExperimentTypePE; import ch.systemsx.cisd.openbis.generic.shared.dto.ProjectPE; @@ -107,9 +105,4 @@ public interface IExperimentDAO extends IGenericDAO<ExperimentPE> */ public void createOrUpdateExperiments(List<ExperimentPE> experiments); - /** - * Move experiments with given ids to trash using specified deletion. - */ - public int trash(List<TechId> experimentIds, DeletionPE deletion); - } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/ISampleDAO.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/ISampleDAO.java index bb35bce72172e509518765e730103512adb72c43..47c210432390b99e9db5e4213ee64d8c633f294e 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/ISampleDAO.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/ISampleDAO.java @@ -24,7 +24,6 @@ import org.springframework.dao.DataAccessException; import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; import ch.systemsx.cisd.openbis.generic.shared.dto.DatabaseInstancePE; -import ch.systemsx.cisd.openbis.generic.shared.dto.DeletionPE; import ch.systemsx.cisd.openbis.generic.shared.dto.PersonPE; import ch.systemsx.cisd.openbis.generic.shared.dto.SamplePE; import ch.systemsx.cisd.openbis.generic.shared.dto.SpacePE; @@ -131,10 +130,4 @@ public interface ISampleDAO extends IGenericDAO<SamplePE> */ void delete(List<TechId> sampleIds, PersonPE registrator, String reason) throws DataAccessException; - - /** - * Move samples with given ids to trash using specified deletion. - */ - int trash(List<TechId> sampleIds, DeletionPE deletion) throws DataAccessException; - } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/DataDAO.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/DataDAO.java index 650a1753641d783cfefadfb6e4123483daf25dcb..1dcebb657f74312cae1edbfbd65ac4aa401259dc 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/DataDAO.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/DataDAO.java @@ -51,7 +51,6 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetArchivingStatus; import ch.systemsx.cisd.openbis.generic.shared.dto.DataPE; import ch.systemsx.cisd.openbis.generic.shared.dto.DataStorePE; import ch.systemsx.cisd.openbis.generic.shared.dto.DatabaseInstancePE; -import ch.systemsx.cisd.openbis.generic.shared.dto.DeletionPE; import ch.systemsx.cisd.openbis.generic.shared.dto.ExperimentPE; import ch.systemsx.cisd.openbis.generic.shared.dto.ExternalDataPE; import ch.systemsx.cisd.openbis.generic.shared.dto.SamplePE; @@ -464,42 +463,6 @@ final class DataDAO extends AbstractGenericEntityWithPropertiesDAO<DataPE> imple super.delete(entity); } - public int trash(final List<TechId> dataSetIds, final DeletionPE deletion) - throws DataAccessException - { - if (dataSetIds.isEmpty()) - { - return 0; - } - final HibernateTemplate hibernateTemplate = getHibernateTemplate(); - int updatedRows = (Integer) hibernateTemplate.execute(new HibernateCallback() - { - - // - // HibernateCallback - // - - public final Object doInHibernate(final Session session) throws HibernateException, - SQLException - { - // NOTE: 'VERSIONED' makes modification time modified too - return session - .createQuery( - "UPDATE VERSIONED " - + DataPE.class.getSimpleName() - + " SET deletion = :deletion WHERE deletion IS NULL AND id IN (:ids) ") - .setParameter("deletion", deletion) - .setParameterList("ids", TechId.asLongs(dataSetIds)).executeUpdate(); - } - }); - if (operationLog.isInfoEnabled()) - { - operationLog.info(String.format("trashing %d data sets", updatedRows)); - } - hibernateTemplate.flush(); - return updatedRows; - } - @SuppressWarnings("unchecked") public Set<TechId> findParentIds(final Collection<TechId> dataSetIds) { @@ -587,7 +550,8 @@ final class DataDAO extends AbstractGenericEntityWithPropertiesDAO<DataPE> imple final List<Long> results = cast(getHibernateTemplate().findByCriteria(criteria)); if (operationLog.isDebugEnabled()) { - operationLog.info(String.format("found %s data sets for given samples", results.size())); + operationLog + .info(String.format("found %s data sets for given samples", results.size())); } return transformNumbers2TechIdList(results); } @@ -601,8 +565,8 @@ final class DataDAO extends AbstractGenericEntityWithPropertiesDAO<DataPE> imple final List<Long> results = cast(getHibernateTemplate().findByCriteria(criteria)); if (operationLog.isDebugEnabled()) { - operationLog - .info(String.format("found %s data sets for given experiments", results.size())); + operationLog.info(String.format("found %s data sets for given experiments", + results.size())); } return transformNumbers2TechIdList(results); } 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 57e1bdf695da05104d81668ee08d23cd8354b028..eb8ffd44d73b4e7aa235a058a11ae0e8c47f8ad1 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 @@ -16,15 +16,19 @@ package ch.systemsx.cisd.openbis.generic.server.dataaccess.db; +import java.sql.SQLException; import java.util.List; import org.apache.log4j.Logger; +import org.hibernate.HibernateException; +import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.criterion.DetachedCriteria; import org.hibernate.criterion.Projections; import org.hibernate.criterion.Restrictions; import org.springframework.dao.DataAccessException; import org.springframework.jdbc.support.JdbcAccessor; +import org.springframework.orm.hibernate3.HibernateCallback; import org.springframework.orm.hibernate3.HibernateTemplate; import ch.systemsx.cisd.common.logging.LogCategory; @@ -137,4 +141,41 @@ final class DeletionDAO extends AbstractGenericEntityDAO<DeletionPE> implements return transformNumbers2TechIdList(results); } + public int trash(final EntityKind entityKind, final List<TechId> entityIds, + final DeletionPE deletion) throws DataAccessException + { + if (entityIds.isEmpty()) + { + return 0; + } + final HibernateTemplate hibernateTemplate = getHibernateTemplate(); + int updatedRows = (Integer) hibernateTemplate.execute(new HibernateCallback() + { + + // + // HibernateCallback + // + + public final Object doInHibernate(final Session session) throws HibernateException, + SQLException + { + // NOTE: 'VERSIONED' makes modification time modified too + return session + .createQuery( + "UPDATE VERSIONED " + + entityKind.getEntityClass().getSimpleName() + + " SET deletion = :deletion" + + " WHERE deletion IS NULL AND id IN (:ids) ") + .setParameter("deletion", deletion) + .setParameterList("ids", TechId.asLongs(entityIds)).executeUpdate(); + } + }); + if (operationLog.isInfoEnabled()) + { + operationLog.info(String.format("trashing %d %ss", updatedRows, entityKind.getLabel())); + } + hibernateTemplate.flush(); + return updatedRows; + } + } 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 756de7db2665d3725ad1962b9ddb996c30eb814a..2ab18131f7cedf587fc12664d854ad3a05348760 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 @@ -16,7 +16,6 @@ package ch.systemsx.cisd.openbis.generic.server.dataaccess.db; -import java.sql.SQLException; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; @@ -26,12 +25,9 @@ import java.util.Set; import org.apache.log4j.Logger; import org.hibernate.Criteria; import org.hibernate.FetchMode; -import org.hibernate.HibernateException; -import org.hibernate.Session; import org.hibernate.criterion.DetachedCriteria; import org.hibernate.criterion.Restrictions; import org.springframework.dao.DataAccessException; -import org.springframework.orm.hibernate3.HibernateCallback; import org.springframework.orm.hibernate3.HibernateTemplate; import ch.systemsx.cisd.common.logging.LogCategory; @@ -40,9 +36,7 @@ import ch.systemsx.cisd.common.utilities.MethodUtils; import ch.systemsx.cisd.openbis.generic.server.dataaccess.IExperimentDAO; import ch.systemsx.cisd.openbis.generic.server.dataaccess.PersistencyResources; import ch.systemsx.cisd.openbis.generic.shared.basic.CodeConverter; -import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; import ch.systemsx.cisd.openbis.generic.shared.dto.DatabaseInstancePE; -import ch.systemsx.cisd.openbis.generic.shared.dto.DeletionPE; import ch.systemsx.cisd.openbis.generic.shared.dto.ExperimentPE; import ch.systemsx.cisd.openbis.generic.shared.dto.ExperimentPropertyPE; import ch.systemsx.cisd.openbis.generic.shared.dto.ExperimentTypePE; @@ -304,40 +298,4 @@ public class ExperimentDAO extends AbstractGenericEntityWithPropertiesDAO<Experi } } - public int trash(final List<TechId> experimentIds, final DeletionPE deletion) - throws DataAccessException - { - if (experimentIds.isEmpty()) - { - return 0; - } - final HibernateTemplate hibernateTemplate = getHibernateTemplate(); - int updatedRows = (Integer) hibernateTemplate.execute(new HibernateCallback() - { - - // - // HibernateCallback - // - - public final Object doInHibernate(final Session session) throws HibernateException, - SQLException - { - // NOTE: 'VERSIONED' makes modification time modified too - return session - .createQuery( - "UPDATE VERSIONED " - + ExperimentPE.class.getSimpleName() - + " SET deletion = :deletion WHERE deletion IS NULL AND id IN (:ids) ") - .setParameter("deletion", deletion) - .setParameterList("ids", TechId.asLongs(experimentIds)).executeUpdate(); - } - }); - if (operationLog.isInfoEnabled()) - { - operationLog.info(String.format("trashing %d experiments", updatedRows)); - } - hibernateTemplate.flush(); - return updatedRows; - } - } 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 5f1d9619aad0886bbb01b4c2de48bb0fbbd20a97..19f2d87176601f4165282ac6be4a5f90f81798c5 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 @@ -16,7 +16,6 @@ package ch.systemsx.cisd.openbis.generic.server.dataaccess.db; -import java.sql.SQLException; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; @@ -26,7 +25,6 @@ import java.util.Set; import org.apache.log4j.Logger; import org.hibernate.Criteria; import org.hibernate.FetchMode; -import org.hibernate.HibernateException; import org.hibernate.SQLQuery; import org.hibernate.Session; import org.hibernate.StatelessSession; @@ -46,7 +44,6 @@ import ch.systemsx.cisd.openbis.generic.server.dataaccess.PersistencyResources; import ch.systemsx.cisd.openbis.generic.shared.basic.CodeConverter; import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; import ch.systemsx.cisd.openbis.generic.shared.dto.DatabaseInstancePE; -import ch.systemsx.cisd.openbis.generic.shared.dto.DeletionPE; import ch.systemsx.cisd.openbis.generic.shared.dto.EventPE.EntityType; import ch.systemsx.cisd.openbis.generic.shared.dto.EventType; import ch.systemsx.cisd.openbis.generic.shared.dto.PersonPE; @@ -467,42 +464,6 @@ public class SampleDAO extends AbstractGenericEntityWithPropertiesDAO<SamplePE> scheduleRemoveFromFullTextIndex(ids); } - public int trash(final List<TechId> sampleIds, final DeletionPE deletion) - throws DataAccessException - { - if (sampleIds.isEmpty()) - { - return 0; - } - final HibernateTemplate hibernateTemplate = getHibernateTemplate(); - int updatedRows = (Integer) hibernateTemplate.execute(new HibernateCallback() - { - - // - // HibernateCallback - // - - public final Object doInHibernate(final Session session) throws HibernateException, - SQLException - { - // NOTE: 'VERSIONED' makes modification time modified too - return session - .createQuery( - "UPDATE VERSIONED " - + SamplePE.class.getSimpleName() - + " SET deletion = :deletion WHERE deletion IS NULL AND id IN (:ids) ") - .setParameter("deletion", deletion) - .setParameterList("ids", TechId.asLongs(sampleIds)).executeUpdate(); - } - }); - if (operationLog.isInfoEnabled()) - { - operationLog.info(String.format("trashing %d samples", updatedRows)); - } - hibernateTemplate.flush(); - return updatedRows; - } - public Set<TechId> listSampleIdsByChildrenIds(final Collection<TechId> children, final TechId relationship) { @@ -550,7 +511,7 @@ public class SampleDAO extends AbstractGenericEntityWithPropertiesDAO<SamplePE> if (operationLog.isDebugEnabled()) { operationLog.info(String.format("found %d sample children for given parents", - results.size())); + results.size())); } return result; } @@ -565,7 +526,7 @@ public class SampleDAO extends AbstractGenericEntityWithPropertiesDAO<SamplePE> if (operationLog.isDebugEnabled()) { operationLog.info(String.format("found %s sample components for given containers", - results.size())); + results.size())); } return transformNumbers2TechIdList(results); }