From 6a4b4e3f44b947e6d44fe318ed9cbf05341ffc5e Mon Sep 17 00:00:00 2001 From: juanf <> Date: Tue, 22 Sep 2020 14:28:32 +0200 Subject: [PATCH] SSDM-10222 : Set storage default validation value when missing --- .../generic/server/hotfix/ELNFixes.java | 53 +++++++++++++++++++ .../eln-lims/1/as/initialize-master-data.py | 2 + 2 files changed, 55 insertions(+) create mode 100644 openbis/source/java/ch/systemsx/cisd/openbis/generic/server/hotfix/ELNFixes.java diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/hotfix/ELNFixes.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/hotfix/ELNFixes.java new file mode 100644 index 00000000000..fb44178759f --- /dev/null +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/hotfix/ELNFixes.java @@ -0,0 +1,53 @@ +package ch.systemsx.cisd.openbis.generic.server.hotfix; + +import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.search.SearchResult; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.Sample; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.fetchoptions.SampleFetchOptions; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.search.SampleSearchCriteria; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.update.SampleUpdate; +import ch.ethz.sis.openbis.generic.server.asapi.v3.IApplicationServerInternalApi; +import ch.systemsx.cisd.common.logging.LogCategory; +import ch.systemsx.cisd.common.logging.LogFactory; +import ch.systemsx.cisd.openbis.generic.server.CommonServiceProvider; +import org.apache.log4j.Logger; + +import java.util.ArrayList; +import java.util.List; + +public class ELNFixes { + + private static final Logger operationLog = LogFactory.getLogger(LogCategory.OPERATION, ELNAnnotationsMigration.class); + + public static void beforeUpgrade() throws Exception { + operationLog.info("ELNFixes beforeUpgrade START"); + IApplicationServerInternalApi api = CommonServiceProvider.getApplicationServerApi(); + String sessionToken = api.loginAsSystem(); + storageValidationLevelFix(sessionToken, api); + } + + private static final String STORAGE_VALIDATION_LEVEL_PROPERTY_CODE = "$STORAGE.STORAGE_VALIDATION_LEVEL"; + private static final String STORAGE_VALIDATION_LEVEL_DEFAULT_VALUE = "RACK"; + + private static void storageValidationLevelFix(String sessionToken, IApplicationServerInternalApi api) { + SampleSearchCriteria criteria = new SampleSearchCriteria(); + criteria.withType().withCode().thatEquals("STORAGE"); + + SampleFetchOptions options = new SampleFetchOptions(); + options.withProperties(); + + SearchResult<Sample> storages = api.searchSamples(sessionToken, criteria, options); + + List<SampleUpdate> storageUpdates = new ArrayList<>(); + for (Sample storage:storages.getObjects()) { + if(storage.getProperty(STORAGE_VALIDATION_LEVEL_PROPERTY_CODE) == null || + storage.getProperty(STORAGE_VALIDATION_LEVEL_PROPERTY_CODE).isEmpty()) { + SampleUpdate storageUpdate = new SampleUpdate(); + storageUpdate.setSampleId(storage.getPermId()); + storageUpdate.setProperty(STORAGE_VALIDATION_LEVEL_PROPERTY_CODE, STORAGE_VALIDATION_LEVEL_DEFAULT_VALUE); + storageUpdates.add(storageUpdate); + } + } + + api.updateSamples(sessionToken, storageUpdates); + } +} diff --git a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/initialize-master-data.py b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/initialize-master-data.py index 39d933e24da..80c537e82f6 100644 --- a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/initialize-master-data.py +++ b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/initialize-master-data.py @@ -21,9 +21,11 @@ from ch.ethz.sis.openbis.generic.asapi.v3.dto.service import CustomASServiceExec from ch.systemsx.cisd.openbis.generic.server.jython.api.v1.impl import MasterDataRegistrationHelper import sys +from ch.systemsx.cisd.openbis.generic.server.hotfix import ELNFixes from ch.systemsx.cisd.openbis.generic.server.hotfix import ELNAnnotationsMigration from ch.systemsx.cisd.openbis.generic.server.hotfix import ELNCollectionTypeMigration +ELNFixes.beforeUpgrade() ELNAnnotationsMigration.beforeUpgrade() ELNCollectionTypeMigration.beforeUpgrade() -- GitLab