From c18a57b2387752eea789a51ab59e9ce487665bb1 Mon Sep 17 00:00:00 2001 From: kaloyane <kaloyane> Date: Thu, 20 Oct 2011 06:48:30 +0000 Subject: [PATCH] move the default staging directory under a corresponding incoming share. The new default is "[store-root]/[shareId]/staging" SVN: 23359 --- .../DataSetRegistrationService.java | 29 ++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/DataSetRegistrationService.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/DataSetRegistrationService.java index c39a52eb4aa..f7c1095bd54 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/DataSetRegistrationService.java +++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/DataSetRegistrationService.java @@ -21,6 +21,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Properties; +import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; import ch.systemsx.cisd.base.exceptions.InterruptedExceptionUnchecked; @@ -103,10 +104,12 @@ public class DataSetRegistrationService<T extends DataSetInformation> implements Properties properties = registratorContext.getGlobalState().getThreadParameters().getThreadProperties(); + String stagingDirString = PropertyUtils.getProperty(properties, STAGING_DIR); + if (null == stagingDirString) { - stagingDirectory = registratorContext.getGlobalState().getStoreRootDir(); + stagingDirectory = getDefaultStagingDirectory(registratorContext.getGlobalState()); } else { stagingDirectory = new File(stagingDirString); @@ -115,6 +118,30 @@ public class DataSetRegistrationService<T extends DataSetInformation> implements transactions = new ArrayList<DataSetRegistrationTransaction<T>>(); } + /** + * Tries to create and return a staging directory in the corresponding incoming share. The + * default result is "[store-root]/[shareId]/staging". Returns "[store-root]", if no existing + * incoming directory can be detected. + */ + private File getDefaultStagingDirectory(TopLevelDataSetRegistratorGlobalState globalState) + { + File storeRoot = globalState.getStoreRootDir(); + if (false == StringUtils.isBlank(globalState.getShareId())) + { + File shareRoot = new File(storeRoot, globalState.getShareId()); + if (shareRoot.isDirectory()) + { + File stagingDir = new File(shareRoot, "staging"); + stagingDir.mkdir(); + if (stagingDir.isDirectory()) + { + return stagingDir; + } + } + } + return storeRoot; + } + public OmniscientTopLevelDataSetRegistratorState getRegistratorContext() { return registratorContext; -- GitLab