From cd26ebaa057f41ce3adff843ca93d937d619f863 Mon Sep 17 00:00:00 2001 From: felmer <franz-josef.elmer@id.ethz.ch> Date: Tue, 13 Nov 2018 09:23:47 +0100 Subject: [PATCH] SSDM-6958: Fixing data set archiving status update in DataDAO --- .../generic/server/dataaccess/db/DataDAO.java | 96 +++++++++---------- 1 file changed, 48 insertions(+), 48 deletions(-) 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 8a9a8f495f8..0f2f6bd1f0c 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 @@ -529,7 +529,6 @@ final class DataDAO extends AbstractGenericEntityWithPropertiesDAO<DataPE> imple return entity; } - @SuppressWarnings({ "unchecked", "rawtypes" }) @Override public void updateDataSetStatuses(final List<String> dataSetCodes, final DataSetArchivingStatus status) @@ -558,55 +557,14 @@ final class DataDAO extends AbstractGenericEntityWithPropertiesDAO<DataPE> imple { final int startIndexFinal = startIndex; final int endIndexFinal = endIndex; - updatedRows += (Integer) hibernateTemplate.execute(new HibernateCallback() - { - - // - // HibernateCallback - // - - @Override - public final Object doInHibernate(final Session session) - throws HibernateException - { - // NOTE: 'VERSIONED' makes modification time modified too - return session - .createQuery( - "UPDATE VERSIONED " - + EXTERNAL_DATA_TABLE_NAME - + " SET status = :status WHERE code IN (:codes) ") - .setParameter("status", status) - .setParameterList("codes", - dataSetCodes.subList(startIndexFinal, endIndexFinal)) - .executeUpdate(); - } - }); + List<String> codes = dataSetCodes.subList(startIndexFinal, endIndexFinal); + updatedRows += updateStatus(hibernateTemplate, status, codes); startIndex = endIndex; endIndex = Math.min(endIndex + MAX_BATCH_SIZE, len); } } else { - updatedRows = (Integer) hibernateTemplate.execute(new HibernateCallback() - { - - // - // HibernateCallback - // - - @Override - public final Object doInHibernate(final Session session) - throws HibernateException - { - // NOTE: 'VERSIONED' makes modification time modified too - return session - .createQuery( - "UPDATE VERSIONED " + EXTERNAL_DATA_TABLE_NAME - + " SET status = :status WHERE code IN (:codes) ") - .setParameter("status", status) - .setParameterList("codes", dataSetCodes).executeUpdate(); - } - - }); + updatedRows = updateStatus(hibernateTemplate, status, dataSetCodes); } scheduleDynamicPropertiesEvaluationForDataSets(dataSetCodes); hibernateTemplate.flush(); @@ -619,6 +577,45 @@ final class DataDAO extends AbstractGenericEntityWithPropertiesDAO<DataPE> imple } } + @SuppressWarnings({ "unchecked", "rawtypes" }) + private Integer updateStatus(final HibernateTemplate hibernateTemplate, final DataSetArchivingStatus status, List<String> codes) + { + return (Integer) hibernateTemplate.execute(new HibernateCallback() + { + @Override + public final Object doInHibernate(final Session session) + throws HibernateException + { + int result = session.createQuery( + "UPDATE " + EXTERNAL_DATA_TABLE_NAME + " SET status = :status WHERE code IN (:codes) ") + .setParameter("status", status) + .setParameterList("codes", codes) + .executeUpdate(); + updateVersion(session, codes); + return result; + /* + // NOTE: 'VERSIONED' makes modification time modified too + return session + .createQuery( + "UPDATE VERSIONED " + + EXTERNAL_DATA_TABLE_NAME + + " SET status = :status WHERE code IN (:codes) ") + .setParameter("status", status) + .setParameterList("codes", codes) + .executeUpdate(); + */ + } + }); + } + + private static int updateVersion(final Session session, List<String> codes) + { + return session.createQuery( + "UPDATE " + TABLE_NAME + " SET version = version + 1 WHERE code IN (:codes) ") + .setParameterList("codes", codes) + .executeUpdate(); + } + @SuppressWarnings({ "unchecked", "rawtypes" }) @Override public void updateSizes(final Map<String, Long> sizeMap) @@ -828,7 +825,7 @@ final class DataDAO extends AbstractGenericEntityWithPropertiesDAO<DataPE> imple { query = session .createQuery( - "UPDATE VERSIONED " + "UPDATE " + EXTERNAL_DATA_TABLE_NAME + " SET status = :status, presentInArchive = :presentInArchive, " + " archivingRequested = 'f'" @@ -837,17 +834,20 @@ final class DataDAO extends AbstractGenericEntityWithPropertiesDAO<DataPE> imple { query = session .createQuery( - "UPDATE VERSIONED " + "UPDATE " + EXTERNAL_DATA_TABLE_NAME + " SET status = :status, presentInArchive = :presentInArchive" + " WHERE code IN (:codes) "); } - return query + int result = query .setParameter("status", status) .setParameter("presentInArchive", presentInArchive) .setParameterList("codes", codes) .executeUpdate(); + System.err.println(result+" UPDATED "+codes); + updateVersion(session, codes); + return result; } } -- GitLab