diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/AbstractStorageProcessor.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/AbstractStorageProcessor.java index 3dfc4eb1f4cecca3323d3300fa9aa68958d07a26..66eabd258147c73c871985ce4ee05c729daf0052 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/AbstractStorageProcessor.java +++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/AbstractStorageProcessor.java @@ -31,16 +31,29 @@ import ch.systemsx.cisd.openbis.generic.shared.dto.StorageFormat; */ public abstract class AbstractStorageProcessor implements IStorageProcessorTransactional { + /** + * Optional property, true by default. If set to false then the dataset whcih cannot be + * registered will be left in the incoming folder and will be mentioned in the .faulty_paths + * file. + */ + private final static String MOVE_UNREGISTERED_DATASETS_TO_ERROR_DIR_PROPERTY = + "move-unregistered-datasets-to-error-dir"; + private static final String[] ZIP_FILE_EXTENSIONS = { "zip" }; protected final Properties properties; + private final boolean moveUnregisteredDatasetsToErrorDir; + private File storeRootDir; protected AbstractStorageProcessor(final Properties properties) { this.properties = properties; + this.moveUnregisteredDatasetsToErrorDir = + PropertyUtils.getBoolean(properties, + MOVE_UNREGISTERED_DATASETS_TO_ERROR_DIR_PROPERTY, true); } protected final String getMandatoryProperty(final String propertyKey) @@ -96,6 +109,7 @@ public abstract class AbstractStorageProcessor implements IStorageProcessorTrans public UnstoreDataAction getDefaultUnstoreDataAction(Throwable exception) { - return UnstoreDataAction.LEAVE_UNTOUCHED; + return moveUnregisteredDatasetsToErrorDir ? UnstoreDataAction.MOVE_TO_ERROR + : UnstoreDataAction.LEAVE_UNTOUCHED; } } diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/BDSStorageProcessor.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/BDSStorageProcessor.java index d9fe21f7e2c6a49566accbd7b64b48694f585f76..2a0236e64f68f12080215d3fe20b6f8541d37ffc 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/BDSStorageProcessor.java +++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/BDSStorageProcessor.java @@ -455,7 +455,7 @@ public final class BDSStorageProcessor extends AbstractStorageProcessor protected UnstoreDataAction executeRollback(Throwable ex) { unstoreData(); - return UnstoreDataAction.MOVE_TO_ERROR; + return getDefaultUnstoreDataAction(ex); } @Override diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/DefaultStorageProcessor.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/DefaultStorageProcessor.java index de5ee0439d27a57f7df932282c8793073cde68d9..053e07aee3debb8ea93d031766dccc7640252027 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/DefaultStorageProcessor.java +++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/DefaultStorageProcessor.java @@ -107,7 +107,7 @@ public class DefaultStorageProcessor extends AbstractStorageProcessor // directory structure will persist. Right now, we consider this is fine as these empty // directories will not disturb the running application. FileRenamer.renameAndLog(targetFile, incomingDataSetDirectory); - return UnstoreDataAction.MOVE_TO_ERROR; + return getDefaultUnstoreDataAction(ex); } /** @@ -144,10 +144,4 @@ public class DefaultStorageProcessor extends AbstractStorageProcessor } return Status.OK; } - - @Override - public UnstoreDataAction getDefaultUnstoreDataAction(Throwable exception) - { - return UnstoreDataAction.MOVE_TO_ERROR; - } } diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/hdf5/Hdf5StorageProcessor.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/hdf5/Hdf5StorageProcessor.java index 74b44e7906ecd0f378a21bcc08d0c4018a16f05a..8d0a9611304606fed418291a13d9a1b4f2656967 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/hdf5/Hdf5StorageProcessor.java +++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/hdf5/Hdf5StorageProcessor.java @@ -91,7 +91,7 @@ public class Hdf5StorageProcessor extends AbstractStorageProcessor fileBeingProcessed = null; - return UnstoreDataAction.MOVE_TO_ERROR; + return getDefaultUnstoreDataAction(exception); } public void commit() diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/IDataSetRegistrationTransaction.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/IDataSetRegistrationTransaction.java index 8b26bb1e90dffda3f378b2f8e3da61ca9edafc49..3957ca09d83dfb6fad1fad446ebf8a3a2fbcab89 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/IDataSetRegistrationTransaction.java +++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/IDataSetRegistrationTransaction.java @@ -97,9 +97,10 @@ public interface IDataSetRegistrationTransaction * Create a new space to register with the openBIS AS. * * @param spaceCode the code of the space - * @param spaceAdminUserId the user id of the person, who will receive space admin priviliges. + * @param spaceAdminUserIdOrNull the user id of the person, who will receive space admin + * priviliges. */ - ISpace createNewSpace(String spaceCode, String spaceAdminUserId); + ISpace createNewSpace(String spaceCode, String spaceAdminUserIdOrNull); /** * Get a space from the openBIS AS. Returns null if the space does not exist. diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/IProject.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/IProject.java index 25182fa9fd1a3edc1a3991a3bb21c288c6d22e71..ad0f27f5a873b6207987dff5c0e8b2c32f4a2669 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/IProject.java +++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/IProject.java @@ -26,8 +26,4 @@ public interface IProject extends IProjectImmutable */ void setDescription(String description); - /** - * Set the project leader id. - */ - void setProjectLeaderId(String leaderId); } diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/IProjectImmutable.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/IProjectImmutable.java index 0f04beefadcfafcddec324c07763feaefafd9df6..b040b9fe62ce9d1b7939226b72c97103bfdb2f01 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/IProjectImmutable.java +++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/IProjectImmutable.java @@ -16,7 +16,6 @@ package ch.systemsx.cisd.etlserver.registrator.api.v1; - /** * @author Kaloyan Enimanev */ @@ -33,12 +32,6 @@ public interface IProjectImmutable */ String getDescription(); - /** - * Return the project leader id. May be null. - */ - String getProjectLeaderId(); - - /** * Return true if the project exists in the database. */ diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/AbstractTransactionState.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/AbstractTransactionState.java index 07379a46185863f32a87cb5ede6add470a3b372d..c9307ee10b83541a2479aaf08acc601cf80c844c 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/AbstractTransactionState.java +++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/AbstractTransactionState.java @@ -232,9 +232,9 @@ abstract class AbstractTransactionState<T extends DataSetInformation> return experiment; } - public ISpace createNewSpace(String spaceCode, String spaceAdminUserId) + public ISpace createNewSpace(String spaceCode, String spaceAdminUserIdOrNull) { - Space space = new Space(spaceCode, spaceAdminUserId); + Space space = new Space(spaceCode, spaceAdminUserIdOrNull); spacesToBeRegistered.add(space); return space; } diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/ConversionUtils.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/ConversionUtils.java index c3740dc01c22f319bd3fea25825aa017fde80a92..598f65617345af089629328f6071e3ec5ce53789 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/ConversionUtils.java +++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/ConversionUtils.java @@ -135,8 +135,7 @@ public class ConversionUtils public static NewProject convertToNewProject(Project apiProject) { - return new NewProject(apiProject.getProjectIdentifier(), apiProject.getDescription(), - apiProject.getProjectLeaderId()); + return new NewProject(apiProject.getProjectIdentifier(), apiProject.getDescription()); } } diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/DataSetRegistrationTransaction.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/DataSetRegistrationTransaction.java index b8eac75a46ef5405675703f23216b2a22855aece..abdc8cd91d7e345f6876a4590fc6dff25b683930 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/DataSetRegistrationTransaction.java +++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/DataSetRegistrationTransaction.java @@ -245,9 +245,9 @@ public class DataSetRegistrationTransaction<T extends DataSetInformation> implem return (null == projectOrNull) ? null : new ProjectImmutable(projectOrNull); } - public ISpace createNewSpace(String spaceCode, String spaceAdminUserId) + public ISpace createNewSpace(String spaceCode, String spaceAdminUserIdOrNull) { - return getStateAsLiveState().createNewSpace(spaceCode, spaceAdminUserId); + return getStateAsLiveState().createNewSpace(spaceCode, spaceAdminUserIdOrNull); } public ISpaceImmutable getSpace(String spaceCode) diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/Project.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/Project.java index 7e7b644108e7783b94876a4cc3c44724b31b58d1..f115a3cb0dd2ad11f64620234bc26d99f39dadeb 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/Project.java +++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/Project.java @@ -17,7 +17,6 @@ package ch.systemsx.cisd.etlserver.registrator.api.v1.impl; import ch.systemsx.cisd.etlserver.registrator.api.v1.IProject; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Person; /** * @author Kaloyan Enimanev @@ -35,15 +34,4 @@ class Project extends ProjectImmutable implements IProject getProject().setDescription(description); } - public void setProjectLeaderId(String leaderId) - { - Person projectLeader = getProject().getProjectLeader(); - if (projectLeader == null) - { - projectLeader = new Person(); - getProject().setProjectLeader(projectLeader); - } - projectLeader.setUserId(leaderId); - } - } diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/ProjectImmutable.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/ProjectImmutable.java index 678e9fa3f83d5b81c895cea0be202b341d192acf..aa5636bb14e13935f54364e5ccf76f2b22659c14 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/ProjectImmutable.java +++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/ProjectImmutable.java @@ -71,9 +71,4 @@ class ProjectImmutable implements IProjectImmutable return project.getDescription(); } - public String getProjectLeaderId() - { - return (project.getProjectLeader() != null) ? project.getProjectLeader().getUserId() : null; - } - } diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/Space.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/Space.java index b638716340f9c0aa2b9b895013785058f8a41df4..0cc12623580d75d1cd824c21ef985024cd8bc716 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/Space.java +++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/Space.java @@ -24,12 +24,12 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Person; */ class Space extends SpaceImmutable implements ISpace { - public Space(String code, String spaceAdminUserId) + public Space(String code, String spaceAdminUserIdOrNull) { super(new ch.systemsx.cisd.openbis.generic.shared.basic.dto.Space(), false); getSpace().setCode(code); getSpace().setRegistrator(new Person()); - getSpace().getRegistrator().setUserId(spaceAdminUserId); + getSpace().getRegistrator().setUserId(spaceAdminUserIdOrNull); } public void setDescription(String description) diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ETLService.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ETLService.java index a73a2429044276dde0ef363f1415507f10249c1a..4257a2a156a15475aea472c84eaadbbe823efac7 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ETLService.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ETLService.java @@ -698,7 +698,7 @@ public class ETLService extends AbstractCommonServer<IETLService> implements IET final IExternalDataBO externalDataBO = businessObjectFactory.createExternalDataBO(session); externalDataBO.updateStatuses(dataSetCodes, newStatus, presentInArchive); } - + public boolean compareAndSetDataSetStatus(String sessionToken, String dataSetCode, DataSetArchivingStatus oldStatus, DataSetArchivingStatus newStatus, boolean newPresentInArchive) throws UserFailureException @@ -709,7 +709,6 @@ public class ETLService extends AbstractCommonServer<IETLService> implements IET externalDataBO.loadByCode(dataSetCode); return externalDataBO.compareAndSetDataSetStatus(oldStatus, newStatus, newPresentInArchive); } - public ExternalData tryGetDataSet(String sessionToken, String dataSetCode) throws UserFailureException @@ -797,11 +796,13 @@ public class ETLService extends AbstractCommonServer<IETLService> implements IET return datasetLister.listByArchiverCriteria(dataStoreCode, criteria); } - public List<ExternalData> listDataSets(String sessionToken, String dataStoreCode, TrackingDataSetCriteria criteria) + public List<ExternalData> listDataSets(String sessionToken, String dataStoreCode, + TrackingDataSetCriteria criteria) { Session session = getSession(sessionToken); getDAOFactory().getHomeDatabaseInstance(); - DataStorePE dataStore = getDAOFactory().getDataStoreDAO().tryToFindDataStoreByCode(dataStoreCode); + DataStorePE dataStore = + getDAOFactory().getDataStoreDAO().tryToFindDataStoreByCode(dataStoreCode); if (dataStore == null) { throw new UserFailureException("Unknown data store: " + dataStoreCode); @@ -818,7 +819,7 @@ public class ETLService extends AbstractCommonServer<IETLService> implements IET } return result; } - + private List<ExternalDataPE> loadDataSets(String sessionToken, String dataStoreCode) { Session session = getSession(sessionToken); @@ -1047,8 +1048,7 @@ public class ETLService extends AbstractCommonServer<IETLService> implements IET List<Project> projectsCreated = createProjects(sessionToken, operationDetails); - List<Experiment> experimentsCreated = - createExperiments(sessionToken, operationDetails); + List<Experiment> experimentsCreated = createExperiments(sessionToken, operationDetails); List<Sample> samplesCreated = createSamples(sessionToken, operationDetails); @@ -1057,8 +1057,7 @@ public class ETLService extends AbstractCommonServer<IETLService> implements IET List<ExternalData> dataSetsCreated = createDataSets(sessionToken, operationDetails); return new AtomicEntityOperationResult(spacesCreated, projectsCreated, experimentsCreated, - samplesUpdated, samplesCreated, - dataSetsCreated); + samplesUpdated, samplesCreated, dataSetsCreated); } private List<Space> createSpaces(String sessionToken, @@ -1085,14 +1084,17 @@ public class ETLService extends AbstractCommonServer<IETLService> implements IET groupBO.define(newSpace.getCode(), newSpace.getDescription()); if (registratorUserIdOrNull != null) { - groupBO.getGroup().setRegistrator(getOrCreatePerson(sessionToken, registratorUserIdOrNull)); + groupBO.getGroup().setRegistrator( + getOrCreatePerson(sessionToken, registratorUserIdOrNull)); } groupBO.save(); - + // create ADMIN role assignemnt SpacePE space = groupBO.getGroup(); - if (newSpace.getSpaceAdminUserId() != null) { - IRoleAssignmentTable roleTable = businessObjectFactory.createRoleAssignmentTable(session); + if (newSpace.getSpaceAdminUserId() != null) + { + IRoleAssignmentTable roleTable = + businessObjectFactory.createRoleAssignmentTable(session); NewRoleAssignment assignment = new NewRoleAssignment(); SpaceIdentifier spaceIdentifier = new SpaceIdentifier(space.getCode()); assignment.setSpaceIdentifier(spaceIdentifier); @@ -1104,7 +1106,6 @@ public class ETLService extends AbstractCommonServer<IETLService> implements IET } return space; - } private List<Project> createProjects(String sessionToken, @@ -1129,8 +1130,7 @@ public class ETLService extends AbstractCommonServer<IETLService> implements IET IProjectBO projectBO = businessObjectFactory.createProjectBO(session); ProjectIdentifier identifier = new ProjectIdentifierFactory(newProject.getIdentifier()).createIdentifier(); - projectBO.define(identifier, newProject.getDescription(), - newProject.getLeaderId()); + projectBO.define(identifier, newProject.getDescription(), null); if (registratorUserIdOrNull != null) { projectBO.getProject().setRegistrator( diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/IProjectBO.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/IProjectBO.java index 79e7b86fe5048f190bc5ff8b35eef09c0fe12bcf..6865ae9197ade3074575fff8cd16c9e1ccb37a02 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/IProjectBO.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/IProjectBO.java @@ -40,7 +40,7 @@ public interface IProjectBO extends IEntityBusinessObject * is unspecified and home group is undefined. */ public void define(final ProjectIdentifier projectIdentifier, String description, - String leaderId) throws UserFailureException; + String leaderIdOrNull) throws UserFailureException; /** * Returns the loaded project. diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/ProjectBO.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/ProjectBO.java index 5b765bf8983f35c7532257e021499704ab7c5933..4c484f4d6d864e69002c651f54e8e37fc9865c5a 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/ProjectBO.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/ProjectBO.java @@ -71,7 +71,7 @@ public final class ProjectBO extends AbstractBusinessObject implements IProjectB } private ProjectPE createProject(final ProjectIdentifier projectIdentifier, String description, - String leaderId) + String leaderIdOrNull) { final ProjectPE result = new ProjectPE(); final SpacePE group = @@ -80,9 +80,9 @@ public final class ProjectBO extends AbstractBusinessObject implements IProjectB result.setRegistrator(findRegistrator()); result.setCode(projectIdentifier.getProjectCode()); result.setDescription(description); - if (leaderId != null) + if (leaderIdOrNull != null) { - PersonPE leader = getPersonDAO().tryFindPersonByUserId(leaderId); + PersonPE leader = getPersonDAO().tryFindPersonByUserId(leaderIdOrNull); if (leader == null) { throw new UserFailureException("Person '%s' not found in the database."); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/NewProject.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/NewProject.java index 4ff852ed47afcd4c18f5a01f4a3910c782b43944..fa78cadbd155f93735b32c7626308d7ac84b6f42 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/NewProject.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/NewProject.java @@ -30,13 +30,10 @@ public class NewProject implements Serializable private final String description; - private final String leaderId; - - public NewProject(String identifier, String description, String leaderId) + public NewProject(String identifier, String description) { this.identifier = identifier; this.description = description; - this.leaderId = leaderId; } public String getIdentifier() @@ -49,11 +46,6 @@ public class NewProject implements Serializable return description; } - public String getLeaderId() - { - return leaderId; - } - @Override public String toString() { diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/AtomicEntityOperationDetailsTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/AtomicEntityOperationDetailsTest.java index dca2365b3a7d6dae1eec96af98401bf5a8196f9c..f2a31cf8099ff0d6a04696d818a2965d5e310ecd 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/AtomicEntityOperationDetailsTest.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/AtomicEntityOperationDetailsTest.java @@ -40,8 +40,8 @@ public class AtomicEntityOperationDetailsTest extends AssertJUnit spaceRegistrations.add(new NewSpace("SPACE2", "description", "adminUser2")); ArrayList<NewProject> projectRegistrations = new ArrayList<NewProject>(); - projectRegistrations.add(new NewProject("/SPACE/P1", "description", "leaderId1")); - projectRegistrations.add(new NewProject("/SPACE/P2", "description", "leaderId2")); + projectRegistrations.add(new NewProject("/SPACE/P1", "description")); + projectRegistrations.add(new NewProject("/SPACE/P2", "description")); ArrayList<NewExperiment> experimentRegistrations = new ArrayList<NewExperiment>(); experimentRegistrations.add(new NewExperiment("/SPACE/PROJECT/EXP-ID1", "EXP-TYPE")); @@ -64,8 +64,8 @@ public class AtomicEntityOperationDetailsTest extends AssertJUnit AtomicEntityOperationDetails details = new AtomicEntityOperationDetails(null, spaceRegistrations, projectRegistrations, - experimentRegistrations, sampleUpdates, - sampleRegistrations, dataSetRegistrations); + experimentRegistrations, sampleUpdates, sampleRegistrations, + dataSetRegistrations); assertEquals( "AtomicEntityOperationDetails[userIdOrNull=<null>" diff --git a/screening/dist/etc/service.properties b/screening/dist/etc/service.properties index 4b6e6d29623c0107491a0d201d66ce6e39fc8560..be3a27e046689a3b53835e40df77f2f464435aea 100644 --- a/screening/dist/etc/service.properties +++ b/screening/dist/etc/service.properties @@ -234,16 +234,20 @@ merged-channels-images.storage-processor.channel-codes = GFP, DAPI # Number and order of entries must be consistent with 'channel-codes'. merged-channels-images.storage-processor.channel-labels = Gfp, Dapi -# Optional, true by default. +# Optional boolean property, true by default. # Set to false to allow datasets in one experiment to use different channels. # In this case 'channel-codes' and 'channel-labels' become optional and are used only to determine the label for each channel code. # It should be set to 'false' for overlay image datasets. #merged-channels-images.storage-processor.define-channels-per-experiment = false -# Optional boolean property. +# Optional boolean property, true by default. # If true an email is sent if some images for the uploaded plate are missing. -# True by default. #merged-channels-images.storage-processor.notify-if-incomplete = false + +# Optional boolean property, true by default. +# If set to false then the dataset whcih cannot be registered will be left in the incoming folder +# and will be mentioned in the .faulty_paths file +#merged-channels-images.storage-processor.move-unregistered-datasets-to-error-dir = false # This is an optional boolean property which defines if all image datasets in one experiment have the same # channels or if each imported dataset can have different channels. By default true if not specified. diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/AbstractImageStorageProcessor.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/AbstractImageStorageProcessor.java index 61124ba7b4cb8d278f934aeccea9ed5bea9a01a6..299adf9efaecaa9f9aad5a68202bd34cce3d0990 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/AbstractImageStorageProcessor.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/AbstractImageStorageProcessor.java @@ -96,6 +96,9 @@ import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.Color * <li>extract-single-image-channels - optional comma separated list of color components. Available * values: RED, GREEN or BLUE. If specified then the channels are extracted from the color * components and override 'file-extractor' results. + * <li>move-unregistered-datasets-to-error-dir - Optional property, true by default. If set to false + * then the dataset whcih cannot be registered will be left in the incoming folder and will be + * mentioned in the .faulty_paths file. * </p> * <p> * Subclasses of this storage processor can be used in the context of @@ -317,7 +320,7 @@ abstract class AbstractImageStorageProcessor extends AbstractStorageProcessor im { rollbackDatabaseChanges(); } - return UnstoreDataAction.MOVE_TO_ERROR; + return getDefaultUnstoreDataAction(exception); } private void rollbackDatabaseChanges()