From 34653ed41e36ca9bc2d6cce320b67d03b39eb2c5 Mon Sep 17 00:00:00 2001 From: cnathe Date: Tue, 5 Nov 2024 13:48:00 -0600 Subject: [PATCH] Allow transformed run properties to be imported based on property name, label, or import alias - currently only supports name --- .../labkey/api/qc/TsvDataExchangeHandler.java | 23 ++++++++++++------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/api/src/org/labkey/api/qc/TsvDataExchangeHandler.java b/api/src/org/labkey/api/qc/TsvDataExchangeHandler.java index 3520318b51e..812dd74f717 100644 --- a/api/src/org/labkey/api/qc/TsvDataExchangeHandler.java +++ b/api/src/org/labkey/api/qc/TsvDataExchangeHandler.java @@ -31,6 +31,7 @@ import org.labkey.api.assay.TsvDataHandler; import org.labkey.api.assay.actions.AssayRunUploadForm; import org.labkey.api.assay.actions.ProtocolIdForm; +import org.labkey.api.collections.CaseInsensitiveHashMap; import org.labkey.api.data.Container; import org.labkey.api.data.TSVWriter; import org.labkey.api.dataiterator.DataIterator; @@ -49,6 +50,7 @@ import org.labkey.api.exp.api.ExperimentService; import org.labkey.api.exp.property.Domain; import org.labkey.api.exp.property.DomainProperty; +import org.labkey.api.exp.property.PropertyService; import org.labkey.api.pipeline.PipeRoot; import org.labkey.api.pipeline.PipelineService; import org.labkey.api.query.PropertyValidationError; @@ -1112,7 +1114,7 @@ else if (String.valueOf(row.get("name")).equalsIgnoreCase(Props.runDataUploadedF if (transformedRunProps != null && transformedRunProps.exists()) { - transformedProps = new HashMap<>(); + transformedProps = new CaseInsensitiveHashMap<>(); for (Map row : parseRunInfo(transformedRunProps)) { String name = row.get("name") == null ? null : String.valueOf(row.get("name")); @@ -1128,13 +1130,18 @@ else if (String.valueOf(row.get("name")).equalsIgnoreCase(Props.runDataUploadedF Map runProperties = !result.getRunProperties().isEmpty() ? result.getRunProperties() : getRunProperties(context); for (Map.Entry entry : runProperties.entrySet()) { - String propName = entry.getKey().getName(); - if (transformedProps.containsKey(propName)) + Set propAliases = PropertyService.get().getDomainPropertyImportAliases(entry.getKey()); + boolean transformedPropFound = false; + for (String propAlias : propAliases) { - runProps.put(entry.getKey(), transformedProps.get(propName)); - runPropTransformed = true; + if (transformedProps.containsKey(propAlias)) + { + runProps.put(entry.getKey(), transformedProps.get(propAlias)); + runPropTransformed = true; + transformedPropFound = true; + } } - else + if (!transformedPropFound) runProps.put(entry.getKey(), entry.getValue()); } @@ -1165,8 +1172,8 @@ else if (String.valueOf(row.get("name")).equalsIgnoreCase(Props.runDataUploadedF if (!runDataUploadedFiles.isEmpty()) result.setUploadedFiles(FileSystemLike.wrapFiles(runDataUploadedFiles)); - // Don't offer up input or other files as "outputs" of the script - tempOutputFiles.removeAll(_filesToIgnore); + // Don't offer up input or other files as "outputs" of the script + tempOutputFiles.removeAll(_filesToIgnore); processWarningsOutput(result, transformedProps, info, transErrorFile, transformedFile, tempOutputFiles); }