Skip to content
Snippets Groups Projects
Commit f49d32b8 authored by jakubs's avatar jakubs
Browse files

SSDM-1081 Improve behavior of multi dataset archiver in case of archiving of...

SSDM-1081 Improve behavior of multi dataset archiver in case of archiving of already archived datasets (cont.)

SVN: 32682
parent 930ddc6b
No related branches found
No related tags found
No related merge requests found
...@@ -33,6 +33,7 @@ import ch.systemsx.cisd.openbis.dss.generic.server.plugins.standard.AbstractArch ...@@ -33,6 +33,7 @@ import ch.systemsx.cisd.openbis.dss.generic.server.plugins.standard.AbstractArch
import ch.systemsx.cisd.openbis.dss.generic.server.plugins.standard.RsyncArchiveCopierFactory; import ch.systemsx.cisd.openbis.dss.generic.server.plugins.standard.RsyncArchiveCopierFactory;
import ch.systemsx.cisd.openbis.dss.generic.server.plugins.standard.RsyncArchiver; import ch.systemsx.cisd.openbis.dss.generic.server.plugins.standard.RsyncArchiver;
import ch.systemsx.cisd.openbis.dss.generic.server.plugins.standard.SshCommandExecutorFactory; import ch.systemsx.cisd.openbis.dss.generic.server.plugins.standard.SshCommandExecutorFactory;
import ch.systemsx.cisd.openbis.dss.generic.server.plugins.standard.archiver.dataaccess.IMultiDataSetArchiverReadonlyQueryDAO;
import ch.systemsx.cisd.openbis.dss.generic.server.plugins.standard.archiver.dataaccess.MultiDataSetArchiverContainerDTO; import ch.systemsx.cisd.openbis.dss.generic.server.plugins.standard.archiver.dataaccess.MultiDataSetArchiverContainerDTO;
import ch.systemsx.cisd.openbis.dss.generic.server.plugins.standard.archiver.dataaccess.MultiDatasetArchiverDBTransaction; import ch.systemsx.cisd.openbis.dss.generic.server.plugins.standard.archiver.dataaccess.MultiDatasetArchiverDBTransaction;
import ch.systemsx.cisd.openbis.dss.generic.shared.ArchiverTaskContext; import ch.systemsx.cisd.openbis.dss.generic.shared.ArchiverTaskContext;
...@@ -90,15 +91,21 @@ public class MultiDatasetArchiver extends AbstractArchiverProcessingPlugin ...@@ -90,15 +91,21 @@ public class MultiDatasetArchiver extends AbstractArchiverProcessingPlugin
@Override @Override
protected DatasetProcessingStatuses doArchive(List<DatasetDescription> dataSets, ArchiverTaskContext context) protected DatasetProcessingStatuses doArchive(List<DatasetDescription> dataSets, ArchiverTaskContext context)
{ {
verifyDataSetsSize(dataSets);
DatasetProcessingStatuses result = new DatasetProcessingStatuses(); DatasetProcessingStatuses result = new DatasetProcessingStatuses();
MultiDatasetArchiverDBTransaction transaction = new MultiDatasetArchiverDBTransaction();
filterAlreadyPresentInArchive(dataSets, result, transaction); filterAlreadyPresentInArchive(dataSets, result);
if (dataSets.isEmpty())
{
return result;
}
MultiDatasetArchiverDBTransaction transaction = new MultiDatasetArchiverDBTransaction();
try try
{ {
verifyDataSetsSize(dataSets);
result = doArchive(dataSets, transaction, context); result = doArchive(dataSets, transaction, context);
transaction.commit(); transaction.commit();
...@@ -119,14 +126,15 @@ public class MultiDatasetArchiver extends AbstractArchiverProcessingPlugin ...@@ -119,14 +126,15 @@ public class MultiDatasetArchiver extends AbstractArchiverProcessingPlugin
return result; return result;
} }
private void filterAlreadyPresentInArchive(List<DatasetDescription> dataSets, DatasetProcessingStatuses result, private void filterAlreadyPresentInArchive(List<DatasetDescription> dataSets, DatasetProcessingStatuses result)
MultiDatasetArchiverDBTransaction transaction)
{ {
IMultiDataSetArchiverReadonlyQueryDAO query = MultiDatasetArchiverDBTransaction.getReadonlyQuery();
Iterator<DatasetDescription> it = dataSets.iterator(); Iterator<DatasetDescription> it = dataSets.iterator();
while (it.hasNext()) while (it.hasNext())
{ {
DatasetDescription dataSet = it.next(); DatasetDescription dataSet = it.next();
if (transaction.getDataSetByCode(dataSet.getDataSetCode()) != null) if (query.getDataSetForCode(dataSet.getDataSetCode()) != null)
{ {
result.addResult(dataSet.getDataSetCode(), Status.OK, Operation.ARCHIVE); result.addResult(dataSet.getDataSetCode(), Status.OK, Operation.ARCHIVE);
it.remove(); it.remove();
......
...@@ -40,6 +40,11 @@ public class MultiDatasetArchiverDBTransaction ...@@ -40,6 +40,11 @@ public class MultiDatasetArchiverDBTransaction
this.transaction = getTransactionalQuery(); this.transaction = getTransactionalQuery();
} }
public static IMultiDataSetArchiverReadonlyQueryDAO getReadonlyQuery()
{
return QueryTool.getQuery(dataSource, IMultiDataSetArchiverReadonlyQueryDAO.class);
}
private static IMultiDataSetArchiverQueryDAO getTransactionalQuery() private static IMultiDataSetArchiverQueryDAO getTransactionalQuery()
{ {
return QueryTool.getQuery(dataSource, IMultiDataSetArchiverQueryDAO.class); return QueryTool.getQuery(dataSource, IMultiDataSetArchiverQueryDAO.class);
...@@ -65,14 +70,6 @@ public class MultiDatasetArchiverDBTransaction ...@@ -65,14 +70,6 @@ public class MultiDatasetArchiverDBTransaction
return container; return container;
} }
/**
* Returns null if no data set found
*/
public MultiDataSetArchiverDataSetDTO getDataSetByCode(String dataSetCode)
{
return transaction.getDataSetForCode(dataSetCode);
}
public MultiDataSetArchiverDataSetDTO insertDataset(DatasetDescription dataSet, public MultiDataSetArchiverDataSetDTO insertDataset(DatasetDescription dataSet,
MultiDataSetArchiverContainerDTO container) MultiDataSetArchiverContainerDTO container)
{ {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment