diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/PropertiesBatchManager.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/PropertiesBatchManager.java index 884c798668001ed2bbbeacf0b39c90e801a6ed33..73bac51af517a1df831f369132047b4f9608af18 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/PropertiesBatchManager.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/PropertiesBatchManager.java @@ -138,7 +138,7 @@ public class PropertiesBatchManager implements IPropertiesBatchManager List<IEntityProperty> newProperties = new ArrayList<IEntityProperty>(); Map<String, Map<String, String>> subColumnBindings = - createColumnBindingsMap(propertiesBean.getProperties()); + createColumnBindingsMap(propertiesBean.getProperties(), contexts); for (Entry<String, Map<String, String>> entry : subColumnBindings.entrySet()) { String code = entry.getKey(); @@ -159,6 +159,7 @@ public class PropertiesBatchManager implements IPropertiesBatchManager errors.accumulateError(rowNumber, ex, code, evalContext.scriptPE); } } + return newProperties; } @@ -192,7 +193,8 @@ public class PropertiesBatchManager implements IPropertiesBatchManager return entityProperty; } - private Map<String, Map<String, String>> createColumnBindingsMap(IEntityProperty[] properties) + private Map<String, Map<String, String>> createColumnBindingsMap(IEntityProperty[] properties, + Map<String, EvaluationContext> contexts) { Map<String, Map<String, String>> subColumnBindings = new HashMap<String, Map<String, String>>(); @@ -229,6 +231,15 @@ public class PropertiesBatchManager implements IPropertiesBatchManager bindings.put(originalColumnEntry.getKey(), originalColumnEntry.getValue()); } } + + for (Entry<String, EvaluationContext> entry : contexts.entrySet()) + { + String code = entry.getKey().toUpperCase(); + if (false == subColumnBindings.containsKey(code)) + { + subColumnBindings.put(code, new HashMap<String, String>(originalColumnBindings)); + } + } return subColumnBindings; } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/managed_property/ManagedPropertyEvaluator.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/managed_property/ManagedPropertyEvaluator.java index 19e9c09b65314b2c2c2ed7ee850ddd836fd87562..79a8428df862ac71530ff00eaa856741d3cd6e66 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/managed_property/ManagedPropertyEvaluator.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/managed_property/ManagedPropertyEvaluator.java @@ -85,14 +85,7 @@ public class ManagedPropertyEvaluator names.add(name); } } - if (columnNames.isEmpty()) - { - if (names.contains("") == false) - { - throw new UserFailureException("No subcolumns expected for property '" - + propertyTypeCode + "': " + names); - } - } else + if (false == columnNames.isEmpty()) { List<String> missingColumns = new ArrayList<String>(); for (String columnName : columnNames) diff --git a/plasmid/resource/jython-scripts/MP-plasmid_parents.py b/plasmid/resource/jython-scripts/MP-plasmid_parents.py index 7ee01194deddf46d33e909da36ddab3e9ee19906..c539c5286e90f16e956bd524433cccc67cabf1b4 100644 --- a/plasmid/resource/jython-scripts/MP-plasmid_parents.py +++ b/plasmid/resource/jython-scripts/MP-plasmid_parents.py @@ -184,25 +184,22 @@ Relationship types: - MOD: modification """ def updateFromBatchInput(bindings): - - inputPattern = re.compile(INPUT_PATTERN, re.VERBOSE) - input = bindings.get('') - print 'input: ' + input - plasmids = input.split(',') elements = [] - for p in plasmids: - (code, g, relationship, annotation) = _group(inputPattern, p.strip()) - sampleLink = _createSampleLink(code, relationship, annotation) - elements.append(sampleLink) + input = bindings.get('') + if input is not None: + inputPattern = re.compile(INPUT_PATTERN, re.VERBOSE) + plasmids = input.split(',') + for p in plasmids: + (code, g, relationship, annotation) = _group(inputPattern, p.strip()) + sampleLink = _createSampleLink(code, relationship, annotation) + elements.append(sampleLink) parentsInput = bindings.get(originalColumnNameBindingKey('YEAST_PARENTS')) if parentsInput is not None: parents = parentsInput.split(',') for parent in parents: - print 'parent: ' + parent permId = entityInformationProvider().getSamplePermId(SPACE, parent) parentPlasmids = entityInformationProvider().getSamplePropertyValue(permId, 'PLASMIDS') - print parentPlasmids parentElements = list(propertyConverter().convertStringToElements(parentPlasmids)) for parentLink in parentElements: elements.append(parentLink) diff --git a/plasmid/resource/jython-scripts/MP-yeast_parents.py b/plasmid/resource/jython-scripts/MP-yeast_parents.py index 2b7038bcd94117b82a60ae86c2bd9724934415ff..4b40ee4c9211a8056818650cea1112947be7b0a7 100644 --- a/plasmid/resource/jython-scripts/MP-yeast_parents.py +++ b/plasmid/resource/jython-scripts/MP-yeast_parents.py @@ -49,12 +49,13 @@ Example input: FRY1, FRY2, FRY3, FRY4 """ def updateFromBatchInput(bindings): - input = bindings.get('') - samples = input.split(',') elements = [] - for code in samples: - sampleLink = _createSampleLink(code.strip()) - elements.append(sampleLink) + input = bindings.get('') + if input is not None: + samples = input.split(',') + for code in samples: + sampleLink = _createSampleLink(code.strip()) + elements.append(sampleLink) property.value = propertyConverter().convertToString(elements)