diff --git a/datastore_server/.classpath b/datastore_server/.classpath index bf405357d5d1ec3de21087bd551ac7077af3bf7b..cba20ea9f8029c2941f1a3ca0795b1b892498a8d 100644 --- a/datastore_server/.classpath +++ b/datastore_server/.classpath @@ -1,30 +1,31 @@ -<?xml version="1.0" encoding="UTF-8"?> -<classpath> - <classpathentry kind="src" path="source/java"/> - <classpathentry kind="src" path="sourceTest/java"/> - <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> - <classpathentry combineaccessrules="false" kind="src" path="/common"/> - <classpathentry kind="lib" path="/libraries/log4j/log4j.jar" sourcepath="/libraries/log4j/src.zip"/> - <classpathentry kind="lib" path="/libraries/commons-lang/commons-lang.jar" sourcepath="/libraries/commons-lang/src.zip"/> - <classpathentry kind="lib" path="/libraries/commons-io/commons-io.jar" sourcepath="/libraries/commons-io/src.zip"/> - <classpathentry kind="lib" path="/libraries/testng/testng-jdk15.jar" sourcepath="/libraries/testng/src.zip"/> - <classpathentry kind="lib" path="/libraries/mail/mail.jar"/> - <classpathentry kind="lib" path="/libraries/jmock/jmock.jar"/> - <classpathentry combineaccessrules="false" kind="src" path="/bds"/> - <classpathentry kind="lib" path="/libraries/restrictionchecker/restrictions.jar"/> - <classpathentry kind="lib" path="/libraries/cglib/cglib-nodep.jar"/> - <classpathentry kind="lib" path="/libraries/jmock/hamcrest/hamcrest-core.jar"/> - <classpathentry kind="lib" path="/libraries/jmock/hamcrest/hamcrest-library.jar"/> - <classpathentry kind="lib" path="/libraries/jmock/objenesis/objenesis-1.0.jar"/> - <classpathentry combineaccessrules="false" kind="src" path="/openbis"/> - <classpathentry combineaccessrules="false" kind="src" path="/server-common"/> - <classpathentry kind="lib" path="/libraries/jetty/jetty.jar" sourcepath="/libraries/jetty/src/jetty.zip"/> - <classpathentry kind="lib" path="/libraries/jetty/jetty-util.jar" sourcepath="/libraries/jetty/src/jetty-util.zip"/> - <classpathentry kind="lib" path="/libraries/jetty/servlet-api-2.5.jar" sourcepath="/libraries/jetty/src/servlet-api-2.5.zip"/> - <classpathentry kind="lib" path="/libraries/spring/spring.jar" sourcepath="/libraries/spring/src.jar"/> - <classpathentry kind="lib" path="/libraries/cifex/cifex.jar" sourcepath="/cifex/source/java"/> - <classpathentry kind="lib" path="/libraries/cisd-base/cisd-base-test.jar" sourcepath="/libraries/cisd-base/cisd-base-src.zip"/> - <classpathentry kind="lib" path="/libraries/cisd-base/cisd-base.jar" sourcepath="/libraries/cisd-base/cisd-base-src.zip"/> - <classpathentry kind="lib" path="/libraries/cisd-args4j/cisd-args4j.jar" sourcepath="/libraries/cisd-args4j/cisd-args4j-src.zip"/> - <classpathentry kind="output" path="targets/classes"/> -</classpath> +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="src" path="source/java"/> + <classpathentry kind="src" path="sourceTest/java"/> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> + <classpathentry combineaccessrules="false" kind="src" path="/common"/> + <classpathentry kind="lib" path="/libraries/log4j/log4j.jar" sourcepath="/libraries/log4j/src.zip"/> + <classpathentry kind="lib" path="/libraries/commons-lang/commons-lang.jar" sourcepath="/libraries/commons-lang/src.zip"/> + <classpathentry kind="lib" path="/libraries/commons-io/commons-io.jar" sourcepath="/libraries/commons-io/src.zip"/> + <classpathentry kind="lib" path="/libraries/testng/testng-jdk15.jar" sourcepath="/libraries/testng/src.zip"/> + <classpathentry kind="lib" path="/libraries/mail/mail.jar"/> + <classpathentry kind="lib" path="/libraries/jmock/jmock.jar"/> + <classpathentry combineaccessrules="false" kind="src" path="/bds"/> + <classpathentry kind="lib" path="/libraries/restrictionchecker/restrictions.jar"/> + <classpathentry kind="lib" path="/libraries/cglib/cglib-nodep.jar"/> + <classpathentry kind="lib" path="/libraries/jmock/hamcrest/hamcrest-core.jar"/> + <classpathentry kind="lib" path="/libraries/jmock/hamcrest/hamcrest-library.jar"/> + <classpathentry kind="lib" path="/libraries/jmock/objenesis/objenesis-1.0.jar"/> + <classpathentry combineaccessrules="false" kind="src" path="/openbis"/> + <classpathentry combineaccessrules="false" kind="src" path="/server-common"/> + <classpathentry kind="lib" path="/libraries/jetty/jetty.jar" sourcepath="/libraries/jetty/src/jetty.zip"/> + <classpathentry kind="lib" path="/libraries/jetty/jetty-util.jar" sourcepath="/libraries/jetty/src/jetty-util.zip"/> + <classpathentry kind="lib" path="/libraries/jetty/servlet-api-2.5.jar" sourcepath="/libraries/jetty/src/servlet-api-2.5.zip"/> + <classpathentry kind="lib" path="/libraries/spring/spring.jar" sourcepath="/libraries/spring/src.jar"/> + <classpathentry kind="lib" path="/libraries/cifex/cifex.jar" sourcepath="/cifex/source/java"/> + <classpathentry kind="lib" path="/libraries/cisd-base/cisd-base-test.jar" sourcepath="/libraries/cisd-base/cisd-base-src.zip"/> + <classpathentry kind="lib" path="/libraries/cisd-base/cisd-base.jar" sourcepath="/libraries/cisd-base/cisd-base-src.zip"/> + <classpathentry kind="lib" path="/libraries/cisd-args4j/cisd-args4j.jar" sourcepath="/libraries/cisd-args4j/cisd-args4j-src.zip"/> + <classpathentry kind="lib" path="/libraries/fast-md5/fast-md5.jar" sourcepath="/libraries/fast-md5/src.zip"/> + <classpathentry kind="output" path="targets/classes"/> +</classpath> diff --git a/datastore_server/dist/etc/service.properties b/datastore_server/dist/etc/service.properties index 5ced80e4d08bf3d8cbcea7b036d02eb78b0aea26..464659093acc42a37b27af7fddeb076746fb5321 100644 --- a/datastore_server/dist/etc/service.properties +++ b/datastore_server/dist/etc/service.properties @@ -81,8 +81,6 @@ inputs=main-thread # --------------------------------------------------------------------------- # 'main-thread' thread configuration # --------------------------------------------------------------------------- -# The group -main-thread.group-code = TEST # The directory to watch for incoming data. main-thread.incoming-dir = data/incoming @@ -102,6 +100,8 @@ main-thread.incoming-data-completeness-condition = marker-file main-thread.data-set-info-extractor = ch.systemsx.cisd.etlserver.DefaultDataSetInfoExtractor # Separator used to extract the barcode in the data set file name main-thread.data-set-info-extractor.entity-separator = ${data-set-file-name-entity-separator} +# The group +main-thread.data-set-info-extractor.group-code = TEST # Location of file containing data set properties #main-thread.data-set-info-extractor.data-set-properties-file-name = data-set.properties diff --git a/datastore_server/etc/service.properties b/datastore_server/etc/service.properties index 79d42caab1455920aeee8f6b5b5002ee06eab634..29b33f31897f60c0219088ae02074dd8afdb4671 100644 --- a/datastore_server/etc/service.properties +++ b/datastore_server/etc/service.properties @@ -87,10 +87,6 @@ main-thread.incoming-dir = targets/incoming # The default value is 'marker-file'. main-thread.incoming-data-completeness-condition = marker-file -# The group the samples extracted by this thread belong to. If commented out or empty, then samples -# are considered associated to a database instance (not group private). -# main-thread.group-code = CISD - # The store format that should be applied in the incoming directory. main-thread.incoming-dir.format = @@ -100,6 +96,7 @@ main-thread.incoming-dir.format = main-thread.data-set-info-extractor = ch.systemsx.cisd.etlserver.DefaultDataSetInfoExtractor # Separator used to extract the barcode in the data set file name main-thread.data-set-info-extractor.entity-separator = ${data-set-file-name-entity-separator} +#main-thread.data-set-info-extractor.group-code = CISD # Location of file containing data set properties #main-thread.data-set-info-extractor.data-set-properties-file-name = data-set.properties diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/AbstractDataSetInfoExtractor.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/AbstractDataSetInfoExtractor.java index d6fcec471560a56400780a3396cc0add6c3b2d27..9975d63c0f3672b63600efc5b74de3186c6b9676 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/AbstractDataSetInfoExtractor.java +++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/AbstractDataSetInfoExtractor.java @@ -18,6 +18,7 @@ package ch.systemsx.cisd.etlserver; import java.util.Properties; +import ch.rinn.restrictions.Private; import ch.systemsx.cisd.common.utilities.ExtendedProperties; import ch.systemsx.cisd.common.utilities.PropertyUtils; @@ -30,12 +31,14 @@ public abstract class AbstractDataSetInfoExtractor implements IDataSetInfoExtrac { /** The name of the property to get the experiment separator from. */ - protected static final String ENTITY_SEPARATOR_PROPERTY_NAME = "entity-separator"; + @Private static final String ENTITY_SEPARATOR_PROPERTY_NAME = "entity-separator"; /** The default entity separator. */ protected static final char DEFAULT_ENTITY_SEPARATOR = '.'; - protected static final String STRIP_EXTENSION = "strip-file-extension"; + @Private static final String STRIP_EXTENSION = "strip-file-extension"; + + @Private static final String GROUP_CODE = "group-code"; protected final Properties properties; @@ -43,7 +46,7 @@ public abstract class AbstractDataSetInfoExtractor implements IDataSetInfoExtrac protected final char entitySeparator; protected final boolean stripExtension; - + protected AbstractDataSetInfoExtractor(final Properties globalProperties) { assert globalProperties != null : "Global properties can not be null."; @@ -53,5 +56,10 @@ public abstract class AbstractDataSetInfoExtractor implements IDataSetInfoExtrac PropertyUtils.getChar(properties, ENTITY_SEPARATOR_PROPERTY_NAME, DEFAULT_ENTITY_SEPARATOR); } + + protected String getGroupCode() + { + return properties.getProperty(GROUP_CODE); + } } diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/DefaultDataSetInfoExtractor.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/DefaultDataSetInfoExtractor.java index 7a4baaa62f1e214e8db3f9d421323760c9c17119..622d75414c0d810ec572009a8e63a4053e09f9e9 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/DefaultDataSetInfoExtractor.java +++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/DefaultDataSetInfoExtractor.java @@ -57,11 +57,22 @@ import ch.systemsx.cisd.openbis.generic.shared.dto.NewProperty; * <th>Description</th> * </tr> * <tr> + * <td><code>strip-file-extension</code></td> + * <td><code>false</code></td> + * <td>If <code>true</code> the file extension will be removed before extracting informations from + * the file name.</td> + * </tr> + * <tr> * <td><code>entity-separator</code></td> * <td><code>.</code></td> * <td>Character which separates entities in the file name. Whitespace characters are not allowed.</td> * </tr> * <tr> + * <td><code>group-code</code></td> + * <td><code>null</code></td> + * <td>Group code of the sample. If unspecified a shared sample is assumed.</td> + * </tr> + * <tr> * <td><code>index-of-sample-code</code></td> * <td><code>-1</code></td> * <td>Index of the entity which is interpreted as the sample code.</td> @@ -226,6 +237,7 @@ public class DefaultDataSetInfoExtractor extends AbstractDataSetInfoExtractor dataSetInformation.setProductionDate(tryGetDataProductionDate(entitiesProvider)); dataSetInformation.setDataSetProperties(extractDataSetProperties(incomingDataSetPath, dataSetPropertiesFileName)); + dataSetInformation.setGroupCode(getGroupCode()); return dataSetInformation; } diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/ETLDaemon.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/ETLDaemon.java index 822547f4c8db2d8ebda6cf5289d6b27343385ef2..d087e14741d4cb4e45b2131b76806a50099e77c4 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/ETLDaemon.java +++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/ETLDaemon.java @@ -350,9 +350,9 @@ public final class ETLDaemon throw new ConfigurationFailureException("Missing service property '" + DSS_CODE_KEY + "'"); } final TransferredDataSetHandler pathHandler = - new TransferredDataSetHandler(threadParameters.tryGetGroupCode(), dssCode, plugin, - authorizedLimsService, mailProperties, highwaterMarkWatcher, - notifySuccessfulRegistration, threadParameters.useIsFinishedMarkerFile()); + new TransferredDataSetHandler(dssCode, plugin, authorizedLimsService, + mailProperties, highwaterMarkWatcher, notifySuccessfulRegistration, + threadParameters.useIsFinishedMarkerFile()); pathHandler.setProcessorFactories(processorFactories); final HighwaterMarkDirectoryScanningHandler directoryScanningHandler = createDirectoryScanningHandler(pathHandler, highwaterMarkWatcher, 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 bf62cdf2cdfddfed978bc099ebe3b6b9c950d25d..12c999824ffb7db116d92bc2b4ea50285bbea42f 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/TransferredDataSetHandler.java +++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/TransferredDataSetHandler.java @@ -117,8 +117,6 @@ public final class TransferredDataSetHandler implements IPathHandler, ISelfTesta private final IMailClient mailClient; - private final String groupCode; - private final String dssCode; private final boolean notifySuccessfulRegistration; @@ -137,21 +135,21 @@ public final class TransferredDataSetHandler implements IPathHandler, ISelfTesta * appears. Otherwise processing starts if the file/directory is not modified for a * certain amount of time (so called "quiet period"). */ - public TransferredDataSetHandler(final String groupCode, String dssCode, final IETLServerPlugin plugin, - final IEncapsulatedOpenBISService limsService, final Properties mailProperties, - final HighwaterMarkWatcher highwaterMarkWatcher, - final boolean notifySuccessfulRegistration, boolean useIsFinishedMarkerFile) + public TransferredDataSetHandler(String dssCode, final IETLServerPlugin plugin, + final IEncapsulatedOpenBISService limsService, + final Properties mailProperties, final HighwaterMarkWatcher highwaterMarkWatcher, + final boolean notifySuccessfulRegistration, + boolean useIsFinishedMarkerFile) { - this(groupCode, dssCode, plugin.getStorageProcessor(), plugin, limsService, new MailClient( + this(dssCode, plugin.getStorageProcessor(), plugin, limsService, new MailClient( mailProperties), notifySuccessfulRegistration, useIsFinishedMarkerFile); } - TransferredDataSetHandler(final String groupCode, String dssCode, - final IStoreRootDirectoryHolder storeRootDirectoryHolder, - final IETLServerPlugin plugin, final IEncapsulatedOpenBISService limsService, - final IMailClient mailClient, final boolean notifySuccessfulRegistration, - boolean useIsFinishedMarkerFile) + TransferredDataSetHandler(String dssCode, final IStoreRootDirectoryHolder storeRootDirectoryHolder, + final IETLServerPlugin plugin, + final IEncapsulatedOpenBISService limsService, final IMailClient mailClient, + final boolean notifySuccessfulRegistration, boolean useIsFinishedMarkerFile) { assert dssCode != null : "Unspecified data store code"; @@ -161,7 +159,6 @@ public final class TransferredDataSetHandler implements IPathHandler, ISelfTesta assert mailClient != null : "IMailClient implementation can not be null."; this.dssCode = dssCode; - this.groupCode = groupCode; this.storeRootDirectoryHolder = storeRootDirectoryHolder; this.dataSetInfoExtractor = plugin.getDataSetInfoExtractor(); this.typeExtractor = plugin.getTypeExtractor(); @@ -695,10 +692,6 @@ public final class TransferredDataSetHandler implements IPathHandler, ISelfTesta } dataSetInfo.setInstanceCode(getHomeDatabaseInstance().getCode()); dataSetInfo.setInstanceUUID(getHomeDatabaseInstance().getUuid()); - if (dataSetInfo.getGroupCode() == null) - { - dataSetInfo.setGroupCode(groupCode); - } if (operationLog.isDebugEnabled()) { operationLog.debug(String.format( diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/TransferredDataSetHandlerTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/TransferredDataSetHandlerTest.java index 9eb8cebcf8ebb106d4002d638cc49835b8fb5b9c..7e0c6dad395e1fd12363eb53d29e586aaba14cb8 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/TransferredDataSetHandlerTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/TransferredDataSetHandlerTest.java @@ -271,8 +271,8 @@ public final class TransferredDataSetHandlerTest extends AbstractFileSystemTestC authorizedLimsService.setUsername("u"); authorizedLimsService.setPassword("p"); handler = - new TransferredDataSetHandler(null, "dss", storageProcessor, plugin, - authorizedLimsService, mailClient, true, true); + new TransferredDataSetHandler("dss", storageProcessor, plugin, authorizedLimsService, + mailClient, true, true); handler.setProcessorFactories(map); dataSetInformation = new DataSetInformation();