From f83c1b103543ad823c4d76a83457a9cb3d906de0 Mon Sep 17 00:00:00 2001 From: buczekp <buczekp> Date: Wed, 1 Dec 2010 08:43:09 +0000 Subject: [PATCH] [LMS-1879] minor: renaming; introduced incoming-dir-create to simplify development/testing of datastore SVN: 18947 --- datastore_server/dist/etc/service.properties | 2 +- datastore_server/etc/service.properties | 8 ++++++-- .../cisd/etlserver/ThreadParameters.java | 19 +++++++++++++++++-- .../etlserver/TransferredDataSetHandler.java | 4 ++-- ...tor.java => PostRegistrationExecutor.java} | 10 +++++----- screening/etc/service.properties | 5 ++++- 6 files changed, 35 insertions(+), 13 deletions(-) rename datastore_server/source/java/ch/systemsx/cisd/etlserver/utils/{PostregistrationExecutor.java => PostRegistrationExecutor.java} (93%) diff --git a/datastore_server/dist/etc/service.properties b/datastore_server/dist/etc/service.properties index f8291b1fa72..1779870c710 100644 --- a/datastore_server/dist/etc/service.properties +++ b/datastore_server/dist/etc/service.properties @@ -169,7 +169,7 @@ main-thread.incoming-data-completeness-condition = marker-file # Path to the script that will be executed after successful data set registration. # The script will be called with two parameters: <data-set-code> and <absolute-data-set-path> (in the data store). -# main-thread.postregistration-script = /example/scripts/my-script.sh +# main-thread.post-registration-script = /example/scripts/my-script.sh # --------------------------------------------------------------------------- # maintenance plugins configuration diff --git a/datastore_server/etc/service.properties b/datastore_server/etc/service.properties index 4bfb06a5b38..992c0d91c16 100644 --- a/datastore_server/etc/service.properties +++ b/datastore_server/etc/service.properties @@ -110,7 +110,7 @@ demo-reporter.class = ch.systemsx.cisd.openbis.dss.generic.server.plugins.demo.D # The property file. Its content will be passed as a parameter to the plugin. demo-reporter.properties-file = -tsv-viewer.label = TSV View +tsv-viewer.label = TSV View tsv-viewer.dataset-types = TSV tsv-viewer.class = ch.systemsx.cisd.openbis.dss.generic.server.plugins.standard.TSVViewReportingPlugin tsv-viewer.properties-file = @@ -177,6 +177,10 @@ validator.site.value-range = [0,Infinity) # E.g. 'code-extractor' property for the thread 'my-etl' should be specified as 'my-etl.code-extractor' inputs=main-thread, tsv-thread, csv-thread, simple-thread, hdf5-thread, dss-system-test-thread +# True if incoming directories should be created on server startup if they don't exist. +# Default - false (server will fail at startup if one of incoming directories doesn't exist). +incoming-dir-create = true + # --------------------------------------------------------------------------- # Dataset uploader 'main-thread' configuration # --------------------------------------------------------------------------- @@ -228,7 +232,7 @@ main-thread.storage-processor.file-extractor = ch.systemsx.cisd.etlserver.imsb.H # Path to the script that will be executed after successful data set registration. # The script will be called with two parameters: <data-set-code> and <absolute-data-set-path> (in the data store). -# main-thread.postregistration-script = /example/scripts/my-script.sh +# main-thread.post-registration-script = /example/scripts/my-script.sh # The directory to watch for incoming data. tsv-thread.incoming-dir = ${root-dir}/incoming-tsv diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/ThreadParameters.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/ThreadParameters.java index 5d03ab456ea..3bd642b2567 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/ThreadParameters.java +++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/ThreadParameters.java @@ -45,7 +45,7 @@ public final class ThreadParameters * in the data store. */ @Private - static final String POSTREFGISTRATION_SCRIPT_KEY = "postregistration-script"; + static final String POST_REGISTRATION_SCRIPT_KEY = "post-registration-script"; @Private static final String GROUP_CODE_KEY = "group-code"; @@ -65,6 +65,8 @@ public final class ThreadParameters private static final String INCOMING_DIR = "incoming-dir"; + private static final String INCOMING_DIR_CREATE = "incoming-dir-create"; + private static final String DELETE_UNIDENTIFIED_KEY = "delete-unidentified"; private static final String REPROCESS_FAULTY_DATASETS_NAME = "reprocess-faulty-datasets"; @@ -75,6 +77,8 @@ public final class ThreadParameters */ private final File incomingDataDirectory; + private final boolean createIncomingDirectories; + private final IETLServerPlugin plugin; private final String threadName; @@ -96,6 +100,8 @@ public final class ThreadParameters public ThreadParameters(final Properties threadProperties, final String threadName) { this.incomingDataDirectory = extractIncomingDataDir(threadProperties); + this.createIncomingDirectories = + PropertyUtils.getBoolean(threadProperties, INCOMING_DIR_CREATE, false); this.plugin = new PropertiesBasedETLServerPlugin(threadProperties); this.groupCode = tryGetGroupCode(threadProperties); this.postRegistrationScript = tryGetPostRegistartionScript(threadProperties); @@ -136,6 +142,11 @@ public final class ThreadParameters final void check() { + if (createIncomingDirectories && incomingDataDirectory.exists() == false) + { + incomingDataDirectory.mkdir(); + operationLog.info("Created incoming directory '" + incomingDataDirectory + "'."); + } if (incomingDataDirectory.isDirectory() == false) { throw new ConfigurationFailureException("Incoming directory '" + incomingDataDirectory @@ -165,7 +176,7 @@ public final class ThreadParameters @Private static final String tryGetPostRegistartionScript(final Properties properties) { - return nullIfEmpty(PropertyUtils.getProperty(properties, POSTREFGISTRATION_SCRIPT_KEY)); + return nullIfEmpty(PropertyUtils.getProperty(properties, POST_REGISTRATION_SCRIPT_KEY)); } private static String nullIfEmpty(String value) @@ -223,6 +234,10 @@ public final class ThreadParameters : "no write access for some period"; logLine("Condition of incoming data completeness: %s.", completenessCond); logLine("Delete unidentified: '%s'.", deleteUnidentified); + if (postRegistrationScript != null) + { + logLine("Post registration script: '%s'.", postRegistrationScript); + } } } diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/TransferredDataSetHandler.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/TransferredDataSetHandler.java index 2826b9fc3a1..e5cb3faf0fe 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/TransferredDataSetHandler.java +++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/TransferredDataSetHandler.java @@ -40,7 +40,7 @@ import ch.systemsx.cisd.common.mail.IMailClient; import ch.systemsx.cisd.common.utilities.IDelegatedActionWithResult; import ch.systemsx.cisd.common.utilities.ISelfTestable; import ch.systemsx.cisd.etlserver.IStorageProcessor.UnstoreDataAction; -import ch.systemsx.cisd.etlserver.utils.PostregistrationExecutor; +import ch.systemsx.cisd.etlserver.utils.PostRegistrationExecutor; import ch.systemsx.cisd.etlserver.validation.IDataSetValidator; import ch.systemsx.cisd.openbis.dss.generic.shared.IEncapsulatedOpenBISService; import ch.systemsx.cisd.openbis.dss.generic.shared.dto.DataSetInformation; @@ -150,7 +150,7 @@ public final class TransferredDataSetHandler implements IPathHandler, ISelfTesta this.fileOperations = FileOperations.getMonitoredInstanceForCurrentThread(); this.useIsFinishedMarkerFile = useIsFinishedMarkerFile; this.deleteUnidentified = deleteUnidentified; - this.postRegistrationAction = PostregistrationExecutor.create(postRegistrationScriptOrNull); + this.postRegistrationAction = PostRegistrationExecutor.create(postRegistrationScriptOrNull); } /** diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/utils/PostregistrationExecutor.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/utils/PostRegistrationExecutor.java similarity index 93% rename from datastore_server/source/java/ch/systemsx/cisd/etlserver/utils/PostregistrationExecutor.java rename to datastore_server/source/java/ch/systemsx/cisd/etlserver/utils/PostRegistrationExecutor.java index 330943d0002..3724d44339a 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/utils/PostregistrationExecutor.java +++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/utils/PostRegistrationExecutor.java @@ -39,14 +39,14 @@ import ch.systemsx.cisd.etlserver.IPostRegistrationAction; * * @author Izabela Adamczyk */ -public class PostregistrationExecutor implements IPostRegistrationAction +public class PostRegistrationExecutor implements IPostRegistrationAction { private final static Logger operationLog = LogFactory.getLogger(LogCategory.OPERATION, - PostregistrationExecutor.class); + PostRegistrationExecutor.class); private final static Logger machineLog = LogFactory.getLogger(LogCategory.MACHINE, - PostregistrationExecutor.class); + PostRegistrationExecutor.class); static class EmptyScriptExecutor implements IPostRegistrationAction { @@ -61,7 +61,7 @@ public class PostregistrationExecutor implements IPostRegistrationAction { if (scriptPath != null) { - return new PostregistrationExecutor(scriptPath); + return new PostRegistrationExecutor(scriptPath); } else { operationLog.debug("No postregistration script found, skipping execution."); @@ -71,7 +71,7 @@ public class PostregistrationExecutor implements IPostRegistrationAction private final String scriptPath; - private PostregistrationExecutor(String script) + private PostRegistrationExecutor(String script) { this.scriptPath = script; File file = new File(script); diff --git a/screening/etc/service.properties b/screening/etc/service.properties index 83e9cc6ed31..8b203d9b542 100644 --- a/screening/etc/service.properties +++ b/screening/etc/service.properties @@ -161,6 +161,10 @@ data-set-clean-up.data-source = imaging-db incoming-root-dir = ${root-dir} +# True if incoming directories should be created on server startup if they don't exist. +# Default - false (server will fail at startup if one of incoming directories doesn't exist). +incoming-dir-create = true + # Globally used separator character which separates entities in a data set file name data-set-file-name-entity-separator = _ @@ -224,7 +228,6 @@ merged-channels-images.storage-processor.data-source = imaging-db merged-channels-images.storage-processor.extract-single-image-channels = GREEN, BLUE # --------------------------------------------------------------------------- - # The directory to watch for incoming data. split-channels-images.incoming-dir = ${incoming-root-dir}/incoming-images-split-channels split-channels-images.incoming-data-completeness-condition = auto-detection -- GitLab