diff --git a/api/src/org/labkey/api/query/AbstractQueryImportAction.java b/api/src/org/labkey/api/query/AbstractQueryImportAction.java index e5ada4d6baa..1919ba17cac 100644 --- a/api/src/org/labkey/api/query/AbstractQueryImportAction.java +++ b/api/src/org/labkey/api/query/AbstractQueryImportAction.java @@ -628,7 +628,7 @@ else if (!dataFileDir.exists()) //di = wrap(di, ve); //importData(di, ve); - configureLoader(loader); + configureLoader(loader, _target, getRenamedColumns(), allowLineageColumns(), getLineageImportAliases(), getOptionParamsMap()); TransactionAuditProvider.TransactionAuditEvent auditEvent = null; if (behaviorType != null && behaviorType != AuditBehaviorType.NONE) @@ -669,13 +669,12 @@ else if (!dataFileDir.exists()) } - protected void configureLoader(DataLoader loader) throws IOException + public static void configureLoader(DataLoader loader, @Nullable TableInfo target, @Nullable Map renamedColumns, boolean allowLineageColumns, @Nullable Set lineageAliasNames, @Nullable Map optionParamsMap) throws IOException { - configureLoader(loader, _target, getRenamedColumns(), allowLineageColumns(), null); - } + // Issue 53804: When updating or adding samples across different sample types, the strings 'Yes' and 'No' are converted to their boolean values + if (loader != null && optionParamsMap != null && optionParamsMap.getOrDefault(Params.crossTypeImport, false)) + loader.setInferTypes(false); - public static void configureLoader(DataLoader loader, @Nullable TableInfo target, @Nullable Map renamedColumns, boolean allowLineageColumns, @Nullable Set lineageAliasNames) throws IOException - { //apply known columns so loader can do better type conversion if (loader != null && target != null) loader.setKnownColumns(target.getColumns()); diff --git a/api/src/org/labkey/api/query/QueryImportPipelineJob.java b/api/src/org/labkey/api/query/QueryImportPipelineJob.java index 59e1c734440..fd51038f5c2 100644 --- a/api/src/org/labkey/api/query/QueryImportPipelineJob.java +++ b/api/src/org/labkey/api/query/QueryImportPipelineJob.java @@ -294,7 +294,7 @@ public void run() loader = DataLoader.get().createLoader(_importContextBuilder.getPrimaryFile(), _importContextBuilder.getFileContentType(), _importContextBuilder.isHasColumnHeaders(), null, null); - AbstractQueryImportAction.configureLoader(loader, target, _importContextBuilder.getRenamedColumns(), _importContextBuilder.allowLineageColumns(), _importContextBuilder.getLineageImportAliases()); + AbstractQueryImportAction.configureLoader(loader, target, _importContextBuilder.getRenamedColumns(), _importContextBuilder.allowLineageColumns(), _importContextBuilder.getLineageImportAliases(), _importContextBuilder.getOptionParamsMap()); TransactionAuditProvider.TransactionAuditEvent auditEvent = null; diff --git a/experiment/src/org/labkey/experiment/ExpDataIterators.java b/experiment/src/org/labkey/experiment/ExpDataIterators.java index 1bdb4385312..d2743681f91 100644 --- a/experiment/src/org/labkey/experiment/ExpDataIterators.java +++ b/experiment/src/org/labkey/experiment/ExpDataIterators.java @@ -2555,7 +2555,7 @@ private int _importSplitFile(TypeData typeData, File splitFile, Container dataCo else aliasNames = new CaseInsensitiveHashSet(((ExpDataClass) typeData.dataType).getImportAliases().keySet()); // We do not need to configure the loader for renamed columns as that has been taken care of when writing the file. - configureLoader(loader, dataTable, null, true, aliasNames); + configureLoader(loader, dataTable, null, true, aliasNames, null /* Not needed since partition is not a cross type import*/); if (loader instanceof TabLoader tabLoader) tabLoader.setIncludeComments(true); // don't skip lines that starts with "#" (if the original file is Excel) return updateService.loadRows(_user, dataContainer, loader, _context, null); diff --git a/experiment/src/org/labkey/experiment/controllers/exp/ExperimentController.java b/experiment/src/org/labkey/experiment/controllers/exp/ExperimentController.java index 5a9adc924b4..67c15cdc4cf 100644 --- a/experiment/src/org/labkey/experiment/controllers/exp/ExperimentController.java +++ b/experiment/src/org/labkey/experiment/controllers/exp/ExperimentController.java @@ -4502,13 +4502,6 @@ protected JSONObject createSuccessResponse(int rowCount) return json; } - @Override - protected void configureLoader(DataLoader loader) throws IOException - { - if (getOptionParamValue(Params.crossTypeImport)) - loader.setInferTypes(false); - configureLoader(loader, _target, getRenamedColumns(), allowLineageColumns(), getLineageImportAliases()); - } } public abstract static class AbstractExpDataImportAction extends AbstractQueryImportAction @@ -4667,12 +4660,6 @@ public void addNavTrail(NavTree root) root.addChild("Import Data"); } - @Override - protected void configureLoader(DataLoader loader) throws IOException - { - configureLoader(loader, _target, getRenamedColumns(), allowLineageColumns(), getLineageImportAliases()); - } - } @RequiresPermission(UpdatePermission.class)