From 3c7e76778d9b00f2116ee6014d8d756204865230 Mon Sep 17 00:00:00 2001
From: izabel <izabel>
Date: Mon, 25 Oct 2010 19:33:40 +0000
Subject: [PATCH] [LMS-1861] clean the directory, then delegate the rest of the
 storing process

SVN: 18430
---
 .../cisd/etlserver/CifexStorageProcessor.java | 22 +++++++++++--------
 1 file changed, 13 insertions(+), 9 deletions(-)

diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/CifexStorageProcessor.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/CifexStorageProcessor.java
index 682edd656e4..c85137936de 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/CifexStorageProcessor.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/CifexStorageProcessor.java
@@ -50,22 +50,25 @@ import ch.systemsx.cisd.openbis.dss.generic.shared.dto.DataSetInformation;
  */
 public class CifexStorageProcessor extends AbstractDelegatingStorageProcessor
 {
-    private final static Logger notificationLog =
-            LogFactory.getLogger(LogCategory.NOTIFY, CifexStorageProcessor.class);
+    private final static Logger notificationLog = LogFactory.getLogger(LogCategory.NOTIFY,
+            CifexStorageProcessor.class);
 
     public static final String KEEP_FILE_REGEX_KEY = "keep-file-regex";
+
     public static final String MOVE_TO_ERROR_FOLDER_KEY = "move-to-error-folder";
 
     private final String keepFileRegex;
 
     private final boolean moveToErrorFolder;
-    
+
     private File dirToRestore;
 
     private File fileToMove;
 
     private boolean dirDeleted = false;
 
+    private File newIncomingDataSetDirectory;
+
     public CifexStorageProcessor(Properties properties)
     {
         super(properties);
@@ -77,25 +80,26 @@ public class CifexStorageProcessor extends AbstractDelegatingStorageProcessor
     public File storeData(DataSetInformation dataSetInformation, ITypeExtractor typeExtractor,
             IMailClient mailClient, File incomingDataSetDirectory, File rootDir)
     {
-        File result = super.storeData(dataSetInformation, typeExtractor, mailClient, incomingDataSetDirectory, rootDir);
+        newIncomingDataSetDirectory = incomingDataSetDirectory;
         if (StringUtils.isBlank(keepFileRegex) == false)
         {
-            clean(tryGetProprietaryData(rootDir), keepFileRegex);
+            newIncomingDataSetDirectory = clean(incomingDataSetDirectory, keepFileRegex);
         }
-        return result;
+        return super.storeData(dataSetInformation, typeExtractor, mailClient,
+                newIncomingDataSetDirectory, rootDir);
     }
 
     @Override
     public UnstoreDataAction rollback(File incomingDataSetDirectory, File storedDataDirectory,
             Throwable exception)
     {
+        super.rollback(newIncomingDataSetDirectory, storedDataDirectory, exception);
         if (dirDeleted)
         {
             FileOperations.getMonitoredInstanceForCurrentThread().mkdir(dirToRestore);
             FileOperations.getMonitoredInstanceForCurrentThread().moveToDirectory(fileToMove,
                     dirToRestore);
         }
-        super.rollback(incomingDataSetDirectory, storedDataDirectory, exception);
         return moveToErrorFolder ? UnstoreDataAction.MOVE_TO_ERROR : UnstoreDataAction.DELETE;
     }
 
@@ -158,8 +162,8 @@ public class CifexStorageProcessor extends AbstractDelegatingStorageProcessor
 
     private void createCleaningErrorMessage(File dir, String pattern)
     {
-        notificationLog.error(String.format("Cleaning '%s' by file name pattern '%s' failed.", dir
-                .getPath(), pattern));
+        notificationLog.error(String.format("Cleaning '%s' by file name pattern '%s' failed.",
+                dir.getPath(), pattern));
     }
 
     private void removeUnmatchedFiles(File dir, List<File> matchingFiles)
-- 
GitLab