diff --git a/core-plugin-openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/plugin/excelimport/ImportDatasetTypesTest.java b/core-plugin-openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/plugin/excelimport/ImportDatasetTypesTest.java index bf607e4745614b3ce160f5beeade93dac21b4ba8..8a8e72a44a2d43da7f1c8bd2bcd0f16fcf2ae437 100644 --- a/core-plugin-openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/plugin/excelimport/ImportDatasetTypesTest.java +++ b/core-plugin-openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/plugin/excelimport/ImportDatasetTypesTest.java @@ -128,7 +128,7 @@ public class ImportDatasetTypesTest extends AbstractImportTest DataSetType rawData = TestUtils.getDatasetType(v3api, sessionToken, "RAW_DATA"); // THEN - assertEquals(rawData.getValidationPlugin().getName().toUpperCase(), "RAW_DATA.VALID"); + assertEquals(rawData.getValidationPlugin().getName().toUpperCase(), "VALID"); } @Test diff --git a/core-plugin-openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/plugin/excelimport/ImportExperimentTypesTest.java b/core-plugin-openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/plugin/excelimport/ImportExperimentTypesTest.java index 843e6c02e72f27794f013002bc82bdaf7bb71bb5..0a41185be852cd875c31242d1026701a9b197b87 100644 --- a/core-plugin-openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/plugin/excelimport/ImportExperimentTypesTest.java +++ b/core-plugin-openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/plugin/excelimport/ImportExperimentTypesTest.java @@ -156,7 +156,7 @@ public class ImportExperimentTypesTest extends AbstractImportTest ExperimentType collection = TestUtils.getExperimentType(v3api, sessionToken, "COLLECTION"); // THEN - assertEquals(collection.getValidationPlugin().getName().toUpperCase(), "COLLECTION.VALID"); + assertEquals(collection.getValidationPlugin().getName().toUpperCase(), "VALID"); } @Test(expectedExceptions = UserFailureException.class, expectedExceptionsMessageRegExp = "(?s).*Mandatory field is missing or empty: Code.*") diff --git a/core-plugin-openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/plugin/excelimport/ImportSampleTypesTest.java b/core-plugin-openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/plugin/excelimport/ImportSampleTypesTest.java index e2a4cf0ee6a3ac9bf5a6fc3df82480b12e4f17eb..8fc777dc686d7b933ff3ed3108b5c7aefb24e0f5 100644 --- a/core-plugin-openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/plugin/excelimport/ImportSampleTypesTest.java +++ b/core-plugin-openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/plugin/excelimport/ImportSampleTypesTest.java @@ -185,7 +185,7 @@ public class ImportSampleTypesTest extends AbstractImportTest // GIVEN final String[] sessionWorkspaceFilePaths = uploadToAsSessionWorkspace(sessionToken, - FilenameUtils.concat(FILES_DIR, SAMPLE_TYPES_WITH_DYNAMIC_SCRIPT), FilenameUtils.concat(FILES_DIR, DYNAMIC_SCRIPT)); + FilenameUtils.concat(FILES_DIR, SAMPLE_TYPES_WITH_DYNAMIC_SCRIPT), FilenameUtils.concat(FILES_DIR, DYNAMIC_SCRIPT), FilenameUtils.concat(FILES_DIR, VALIDATION_SCRIPT)); TestUtils.createFrom(v3api, sessionToken, Paths.get(sessionWorkspaceFilePaths[0])); // WHEN @@ -194,7 +194,7 @@ public class ImportSampleTypesTest extends AbstractImportTest // THEN final Plugin dynamicScript = antibody.getPropertyAssignments().get(0).getPlugin(); assertNotNull(dynamicScript); - assertEquals(dynamicScript.getName().toUpperCase(), "$NAME.DYNAMIC"); + assertEquals(dynamicScript.getName().toUpperCase(), "DYNAMIC"); assertEquals(dynamicScript.getScript(), "def calculate():\n return 1"); assertEquals(dynamicScript.getPluginType(), PluginType.DYNAMIC_PROPERTY); } @@ -214,7 +214,7 @@ public class ImportSampleTypesTest extends AbstractImportTest // THEN Plugin validationScript = antibody.getValidationPlugin(); assertNotNull(validationScript); - assertEquals(validationScript.getName().toUpperCase(), "ANTIBODY.VALID"); + assertEquals(validationScript.getName().toUpperCase(), "VALID"); assertEquals(validationScript.getScript(), "def validate(entity, isNew):\n if isNew:\n return"); assertEquals(validationScript.getPluginType(), PluginType.ENTITY_VALIDATION); } diff --git a/core-plugin-openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/plugin/excelimport/test_files/sample_types/with_dynamic_script.xls b/core-plugin-openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/plugin/excelimport/test_files/sample_types/with_dynamic_script.xls index 59ad19a0a9394856024903b37ec0b635d4f5ff77..22c17615e2d7b0e6247156a0162f1d4b40fd514b 100644 Binary files a/core-plugin-openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/plugin/excelimport/test_files/sample_types/with_dynamic_script.xls and b/core-plugin-openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/plugin/excelimport/test_files/sample_types/with_dynamic_script.xls differ diff --git a/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/xls/importer/helper/DatasetTypeImportHelper.java b/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/xls/importer/helper/DatasetTypeImportHelper.java index e7087238d59e7aaddfd685449c6345b28cdda3c1..08be8b83d45c4c8a96d7ff8df4880a6f540ee939 100644 --- a/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/xls/importer/helper/DatasetTypeImportHelper.java +++ b/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/xls/importer/helper/DatasetTypeImportHelper.java @@ -18,9 +18,11 @@ package ch.ethz.sis.openbis.generic.server.xls.importer.helper; import java.util.List; import java.util.Map; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.DataSetType; import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.create.DataSetTypeCreation; import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.fetchoptions.DataSetTypeFetchOptions; import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.update.DataSetTypeUpdate; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.entitytype.create.IEntityTypeCreation; import ch.ethz.sis.openbis.generic.asapi.v3.dto.entitytype.id.EntityTypePermId; import ch.ethz.sis.openbis.generic.asapi.v3.dto.plugin.id.PluginPermId; import ch.ethz.sis.openbis.generic.server.xls.importer.ImportOptions; @@ -129,10 +131,9 @@ public class DatasetTypeImportHelper extends BasicImportHelper DataSetTypeCreation creation = new DataSetTypeCreation(); creation.setCode(code); creation.setDescription(description); - if (validationScript != null && !validationScript.isEmpty()) - { - creation.setValidationPluginId(new PluginPermId(ImportUtils.getScriptName(creation.getCode(), validationScript))); - } + + creation.setValidationPluginId(ImportUtils.getScriptId(validationScript, null)); + creation.setManagedInternally(ImportUtils.isInternalNamespace(creation.getCode())); delayedExecutor.createDataSetType(creation, page, line); @@ -157,10 +158,11 @@ public class DatasetTypeImportHelper extends BasicImportHelper update.setDescription(description); } } - if (validationScript != null && !validationScript.isEmpty()) - { - update.setValidationPluginId(new PluginPermId(ImportUtils.getScriptName(code, validationScript))); - } + + DataSetTypeFetchOptions dataSetTypeFetchOptions = new DataSetTypeFetchOptions(); + dataSetTypeFetchOptions.withValidationPlugin(); + DataSetType dataSetType = delayedExecutor.getDataSetType(new EntityTypePermId(code), dataSetTypeFetchOptions); + update.setValidationPluginId(ImportUtils.getScriptId(validationScript, dataSetType.getValidationPlugin())); delayedExecutor.updateDataSetType(update, page, line); } diff --git a/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/xls/importer/helper/ExperimentTypeImportHelper.java b/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/xls/importer/helper/ExperimentTypeImportHelper.java index 7b816377c5b8d3c8bd41202afeb49d9dce30a11c..239f82a16c6a6aaeaa94f261edb54edf41cc13e1 100644 --- a/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/xls/importer/helper/ExperimentTypeImportHelper.java +++ b/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/xls/importer/helper/ExperimentTypeImportHelper.java @@ -18,7 +18,10 @@ package ch.ethz.sis.openbis.generic.server.xls.importer.helper; import java.util.List; import java.util.Map; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.DataSetType; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.fetchoptions.DataSetTypeFetchOptions; import ch.ethz.sis.openbis.generic.asapi.v3.dto.entitytype.id.EntityTypePermId; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.ExperimentType; import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.create.ExperimentTypeCreation; import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.fetchoptions.ExperimentTypeFetchOptions; import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.update.ExperimentTypeUpdate; @@ -130,10 +133,7 @@ public class ExperimentTypeImportHelper extends BasicImportHelper creation.setCode(code); creation.setDescription(description); - if (validationScript != null && !validationScript.isEmpty()) - { - creation.setValidationPluginId(new PluginPermId(ImportUtils.getScriptName(creation.getCode(), validationScript))); - } + creation.setValidationPluginId(ImportUtils.getScriptId(validationScript, null)); creation.setManagedInternally(ImportUtils.isInternalNamespace(creation.getCode())); delayedExecutor.createExperimentType(creation, page, line); @@ -160,10 +160,10 @@ public class ExperimentTypeImportHelper extends BasicImportHelper } } - if (validationScript != null && !validationScript.isEmpty()) - { - update.setValidationPluginId(new PluginPermId(ImportUtils.getScriptName(code, validationScript))); - } + ExperimentTypeFetchOptions experimentTypeFetchOptions = new ExperimentTypeFetchOptions(); + experimentTypeFetchOptions.withValidationPlugin(); + ExperimentType experimentType = delayedExecutor.getExperimentType(new EntityTypePermId(code), experimentTypeFetchOptions); + update.setValidationPluginId(ImportUtils.getScriptId(validationScript, experimentType.getValidationPlugin())); delayedExecutor.updateExperimentType(update, page, line); } diff --git a/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/xls/importer/helper/PropertyAssignmentImportHelper.java b/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/xls/importer/helper/PropertyAssignmentImportHelper.java index 3df6ecc3f32b9ef06b27d87447398f6456bfe0b6..078f578e5df00a376d3c3e521185bbc5490799aa 100644 --- a/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/xls/importer/helper/PropertyAssignmentImportHelper.java +++ b/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/xls/importer/helper/PropertyAssignmentImportHelper.java @@ -15,11 +15,7 @@ */ package ch.ethz.sis.openbis.generic.server.xls.importer.helper; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; +import java.util.*; import java.util.stream.Collectors; import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.interfaces.IEntityType; @@ -33,6 +29,7 @@ import ch.ethz.sis.openbis.generic.asapi.v3.dto.entitytype.id.IEntityTypeId; import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.ExperimentType; import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.fetchoptions.ExperimentTypeFetchOptions; import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.update.ExperimentTypeUpdate; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.plugin.Plugin; import ch.ethz.sis.openbis.generic.asapi.v3.dto.plugin.id.PluginPermId; import ch.ethz.sis.openbis.generic.asapi.v3.dto.property.PropertyAssignment; import ch.ethz.sis.openbis.generic.asapi.v3.dto.property.PropertyType; @@ -98,7 +95,7 @@ public class PropertyAssignmentImportHelper extends BasicImportHelper private ImportTypes importTypes; - private Set<String> existingCodes; + private HashMap<String, Plugin> existingDynamicPluginsByPropertyCode; Map<String, Integer> beforeVersions; @@ -115,6 +112,7 @@ public class PropertyAssignmentImportHelper extends BasicImportHelper this.delayedExecutor = delayedExecutor; this.attributeValidator = new AttributeValidator<>(Attribute.class); this.beforeVersions = beforeVersions; + this.existingDynamicPluginsByPropertyCode = new HashMap<>(); } @Override protected ImportTypes getTypeName() @@ -136,6 +134,7 @@ public class PropertyAssignmentImportHelper extends BasicImportHelper if (version == null || version.isEmpty()) { return true; } else { + Set<String> existingCodes = existingDynamicPluginsByPropertyCode.keySet(); return !existingCodes.contains(code) || VersionUtils.isNewVersion(version, VersionUtils.getStoredVersion(beforeVersions, ImportTypes.PROPERTY_TYPE.getType(), code)); } } @@ -169,13 +168,15 @@ public class PropertyAssignmentImportHelper extends BasicImportHelper creation.setPatternType(patternType); creation.setManagedInternally(Boolean.parseBoolean(internalAssignment)); - if (script != null && !script.isEmpty()) + ListUpdateValue newAssignments = new ListUpdateValue(); + Set<String> existingCodes = existingDynamicPluginsByPropertyCode.keySet(); + PluginPermId scriptId = ImportUtils.getScriptId(script, + existingDynamicPluginsByPropertyCode.get(code)); + if (scriptId != null) { - creation.setPluginId(new PluginPermId(ImportUtils.getScriptName(code, script))); + creation.setPluginId(scriptId); } - - ListUpdateValue newAssignments = new ListUpdateValue(); - if (!this.existingCodes.contains(creation.getPropertyTypeId().toString())) + if (!existingCodes.contains(code)) { // Add property assignment newAssignments.add(creation); @@ -183,9 +184,6 @@ public class PropertyAssignmentImportHelper extends BasicImportHelper // Update property assignment ArrayList<PropertyAssignmentCreation> propertyAssignmentsForUpdate = getPropertyAssignmentsForUpdate(); int index = indexOf(creation.getPropertyTypeId(), propertyAssignmentsForUpdate); - if (creation.getPluginId() == null && propertyAssignmentsForUpdate.get(index).getPluginId() != null) { // If the property has been made dynamic on the system - creation.setPluginId(propertyAssignmentsForUpdate.get(index).getPluginId()); // Keep the property dynamic - } propertyAssignmentsForUpdate.set(index, creation); newAssignments.set(propertyAssignmentsForUpdate.toArray()); } @@ -272,30 +270,34 @@ public class PropertyAssignmentImportHelper extends BasicImportHelper createObject(header, values, page, line); } - private Set<String> generateExistingCodes(IEntityTypeId permId) + private void generateExistingCodes(IEntityTypeId permId) { switch (importTypes) { case EXPERIMENT_TYPE: ExperimentTypeFetchOptions experimentFetchOptions = new ExperimentTypeFetchOptions(); experimentFetchOptions.withPropertyAssignments().withPropertyType(); + experimentFetchOptions.withPropertyAssignments().withPlugin(); ExperimentType experimentType = delayedExecutor.getExperimentType(permId, experimentFetchOptions); - return experimentType.getPropertyAssignments().stream().map(PropertyAssignment::getPropertyType).map(PropertyType::getCode) - .collect(Collectors.toSet()); + assignExisting(experimentType.getPropertyAssignments()); + break; case SAMPLE_TYPE: SampleTypeFetchOptions sampleTypeFetchOptions = new SampleTypeFetchOptions(); sampleTypeFetchOptions.withPropertyAssignments().withPropertyType(); + sampleTypeFetchOptions.withPropertyAssignments().withPlugin(); SampleType sampleType = delayedExecutor.getSampleType(permId, sampleTypeFetchOptions); - return sampleType.getPropertyAssignments().stream().map(PropertyAssignment::getPropertyType).map(PropertyType::getCode) - .collect(Collectors.toSet()); + assignExisting(sampleType.getPropertyAssignments()); + break; case DATASET_TYPE: DataSetTypeFetchOptions dataSetTypeFetchOptions = new DataSetTypeFetchOptions(); dataSetTypeFetchOptions.withPropertyAssignments().withPropertyType(); + dataSetTypeFetchOptions.withPropertyAssignments().withPlugin(); DataSetType dataSetType = delayedExecutor.getDataSetType(permId, dataSetTypeFetchOptions); - return dataSetType.getPropertyAssignments().stream().map(PropertyAssignment::getPropertyType).map(PropertyType::getCode) - .collect(Collectors.toSet()); + assignExisting(dataSetType.getPropertyAssignments()); + break; default: - return new HashSet<>(); + existingDynamicPluginsByPropertyCode = new HashMap<>(); + break; } } @@ -324,7 +326,7 @@ public class PropertyAssignmentImportHelper extends BasicImportHelper break; } - this.existingCodes = generateExistingCodes(this.permId); + generateExistingCodes(this.permId); super.importBlock(page, pageIndex, start + 2, end); } @@ -332,4 +334,12 @@ public class PropertyAssignmentImportHelper extends BasicImportHelper { throw new IllegalStateException("This method should have never been called."); } + + private void assignExisting(List<PropertyAssignment> propertyAssignments) + { + existingDynamicPluginsByPropertyCode = new HashMap<>(); + for (PropertyAssignment propertyAssignment: propertyAssignments) { + existingDynamicPluginsByPropertyCode.put(propertyAssignment.getPropertyType().getCode(), propertyAssignment.getPlugin()); + } + } } diff --git a/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/xls/importer/helper/SampleTypeImportHelper.java b/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/xls/importer/helper/SampleTypeImportHelper.java index 91f624ebce1a80442b2343af412a7d43128ed96f..035ac58b8c08c15baf160b59ae101aa69c121fd2 100644 --- a/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/xls/importer/helper/SampleTypeImportHelper.java +++ b/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/xls/importer/helper/SampleTypeImportHelper.java @@ -19,7 +19,10 @@ import java.util.List; import java.util.Map; import ch.ethz.sis.openbis.generic.asapi.v3.dto.entitytype.id.EntityTypePermId; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.ExperimentType; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.fetchoptions.ExperimentTypeFetchOptions; import ch.ethz.sis.openbis.generic.asapi.v3.dto.plugin.id.PluginPermId; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.SampleType; import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.create.SampleTypeCreation; import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.fetchoptions.SampleTypeFetchOptions; import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.update.SampleTypeUpdate; @@ -141,10 +144,7 @@ public class SampleTypeImportHelper extends BasicImportHelper creation.setCode(code); creation.setDescription(description); creation.setAutoGeneratedCode(Boolean.parseBoolean(autoGenerateCodes)); - if (validationScript != null && !validationScript.isEmpty()) - { - creation.setValidationPluginId(new PluginPermId(ImportUtils.getScriptName(creation.getCode(), validationScript))); - } + creation.setValidationPluginId(ImportUtils.getScriptId(validationScript, null)); if (generatedCodePrefix != null && !generatedCodePrefix.isEmpty()) { creation.setGeneratedCodePrefix(generatedCodePrefix); @@ -176,10 +176,12 @@ public class SampleTypeImportHelper extends BasicImportHelper } } update.setAutoGeneratedCode(Boolean.parseBoolean(autoGenerateCodes)); - if (validationScript != null && !validationScript.isEmpty()) - { - update.setValidationPluginId(new PluginPermId(ImportUtils.getScriptName(code, validationScript))); - } + + SampleTypeFetchOptions sampleTypeFetchOptions = new SampleTypeFetchOptions(); + sampleTypeFetchOptions.withValidationPlugin(); + SampleType sampleType = delayedExecutor.getSampleType(new EntityTypePermId(code), sampleTypeFetchOptions); + + update.setValidationPluginId(ImportUtils.getScriptId(validationScript, sampleType.getValidationPlugin())); if (generatedCodePrefix != null && !generatedCodePrefix.isEmpty()) { update.setGeneratedCodePrefix(generatedCodePrefix); diff --git a/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/xls/importer/helper/ScriptImportHelper.java b/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/xls/importer/helper/ScriptImportHelper.java index bec20f48cd5d0425d7f225554bc4695264c5d477..57d4e92dc8845ff07a0e7eebb82781d2501dc690 100644 --- a/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/xls/importer/helper/ScriptImportHelper.java +++ b/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/xls/importer/helper/ScriptImportHelper.java @@ -19,6 +19,7 @@ import java.io.File; import java.util.List; import java.util.Map; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.plugin.Plugin; import ch.ethz.sis.openbis.generic.asapi.v3.dto.plugin.PluginType; import ch.ethz.sis.openbis.generic.asapi.v3.dto.plugin.create.PluginCreation; import ch.ethz.sis.openbis.generic.asapi.v3.dto.plugin.fetchoptions.PluginFetchOptions; @@ -31,6 +32,11 @@ import ch.ethz.sis.openbis.generic.server.xls.importer.enums.ImportTypes; import ch.ethz.sis.openbis.generic.server.xls.importer.enums.ScriptTypes; import ch.ethz.sis.openbis.generic.server.xls.importer.utils.ImportUtils; +import static ch.ethz.sis.openbis.generic.asapi.v3.dto.plugin.PluginType.DYNAMIC_PROPERTY; +import static ch.ethz.sis.openbis.generic.asapi.v3.dto.plugin.PluginType.ENTITY_VALIDATION; +import static ch.ethz.sis.openbis.generic.server.xls.importer.enums.ScriptTypes.DYNAMIC_SCRIPT; +import static ch.ethz.sis.openbis.generic.server.xls.importer.enums.ScriptTypes.VALIDATION_SCRIPT; + public class ScriptImportHelper extends BasicImportHelper { private static final String OWNER_CODE = "Code"; @@ -53,25 +59,19 @@ public class ScriptImportHelper extends BasicImportHelper return ImportTypes.SCRIPT; } - private String getScriptName(Map<String, Integer> header, List<String> values) + private PluginPermId getScriptId(Map<String, Integer> header, List<String> values) { - String code = getValueByColumnName(header, values, OWNER_CODE); String script = getValueByColumnName(header, values, scriptType.getColumnName()); - if (script == null || script.isEmpty()) - { - return null; - } - return ImportUtils.getScriptName(code, script); + return ImportUtils.getScriptId(script, null); } @Override protected boolean isObjectExist(Map<String, Integer> header, List<String> values) { - String scriptName = getScriptName(header, values); + PluginPermId script = getScriptId(header, values); - if (scriptName != null && !scriptName.isEmpty()) + if (script != null) { - PluginPermId permId = new PluginPermId(scriptName); - return delayedExecutor.getPlugin(permId, new PluginFetchOptions()) != null; + return delayedExecutor.getPlugin(script, new PluginFetchOptions()) != null; } return false; @@ -87,15 +87,15 @@ public class ScriptImportHelper extends BasicImportHelper if (script != null) { PluginCreation creation = new PluginCreation(); - creation.setName(getScriptName(header, values)); + creation.setName(getScriptId(header, values).getPermId()); creation.setScript(script); switch (scriptType) { case VALIDATION_SCRIPT: - creation.setPluginType(PluginType.ENTITY_VALIDATION); + creation.setPluginType(ENTITY_VALIDATION); break; case DYNAMIC_SCRIPT: - creation.setPluginType(PluginType.DYNAMIC_PROPERTY); + creation.setPluginType(DYNAMIC_PROPERTY); break; } delayedExecutor.createPlugin(creation); @@ -112,8 +112,7 @@ public class ScriptImportHelper extends BasicImportHelper if (script != null) { PluginUpdate update = new PluginUpdate(); - PluginPermId permId = new PluginPermId(getScriptName(header, values)); - update.setPluginId(permId); + update.setPluginId(getScriptId(header, values)); update.setScript(script); delayedExecutor.updatePlugin(update); } diff --git a/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/xls/importer/utils/ImportUtils.java b/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/xls/importer/utils/ImportUtils.java index 7f742e6499633ceb63e7cbc21f47709d3944e605..ec449b74109834e4dda67c4d66c8a6044b1cf2b1 100644 --- a/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/xls/importer/utils/ImportUtils.java +++ b/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/xls/importer/utils/ImportUtils.java @@ -17,6 +17,8 @@ package ch.ethz.sis.openbis.generic.server.xls.importer.utils; import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.id.ExperimentIdentifier; import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.id.IExperimentId; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.plugin.Plugin; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.plugin.id.PluginPermId; import ch.ethz.sis.openbis.generic.asapi.v3.dto.project.id.IProjectId; import ch.ethz.sis.openbis.generic.asapi.v3.dto.project.id.ProjectIdentifier; import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.create.SampleCreation; @@ -129,7 +131,7 @@ public class ImportUtils } } - public static String getScriptName(String code, String pathToScript) + private static String getScriptName(String pathToScript) { if (pathToScript.contains("/")) { @@ -139,6 +141,23 @@ public class ImportUtils { pathToScript = pathToScript.substring(0, pathToScript.lastIndexOf(".")); } - return code + "." + pathToScript; + return pathToScript; + } + + public static PluginPermId getScriptId(String script, Plugin existingPlugin) + { + if (script != null && !script.isEmpty()) + { + if (script.equals("--DELETE--") || script.equals("__DELETE__")) + { + return null; + } else { + return new PluginPermId(ImportUtils.getScriptName(script)); + } + } else if (existingPlugin != null){ + return existingPlugin.getPermId(); + } + + return null; } }