Skip to content

Commit 4498c1b

Browse files
Merge 25.7 to develop
2 parents 9c85a9c + 03e2c44 commit 4498c1b

7 files changed

Lines changed: 18 additions & 30 deletions

File tree

api/src/org/labkey/api/query/AbstractQueryImportAction.java

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -609,7 +609,7 @@ else if (!dataFileDir.exists())
609609
//di = wrap(di, ve);
610610
//importData(di, ve);
611611

612-
configureLoader(loader);
612+
configureLoader(loader, _target, getRenamedColumns(), allowLineageColumns(), getLineageImportAliases(), getOptionParamsMap());
613613

614614
TransactionAuditProvider.TransactionAuditEvent auditEvent = null;
615615
if (isCrossTypeImport || (behaviorType != null && behaviorType != AuditBehaviorType.NONE))
@@ -650,13 +650,12 @@ else if (!dataFileDir.exists())
650650

651651
}
652652

653-
protected void configureLoader(DataLoader loader) throws IOException
653+
public static void configureLoader(DataLoader loader, @Nullable TableInfo target, @Nullable Map<String, String> renamedColumns, boolean allowLineageColumns, @Nullable Set<String> lineageAliasNames, @Nullable Map<Params, Boolean> optionParamsMap) throws IOException
654654
{
655-
configureLoader(loader, _target, getRenamedColumns(), allowLineageColumns(), null);
656-
}
655+
// Issue 53804: When updating or adding samples across different sample types, the strings 'Yes' and 'No' are converted to their boolean values
656+
if (loader != null && optionParamsMap != null && optionParamsMap.getOrDefault(Params.crossTypeImport, false))
657+
loader.setInferTypes(false);
657658

658-
public static void configureLoader(DataLoader loader, @Nullable TableInfo target, @Nullable Map<String, String> renamedColumns, boolean allowLineageColumns, @Nullable Set<String> lineageAliasNames) throws IOException
659-
{
660659
//apply known columns so loader can do better type conversion
661660
if (loader != null && target != null)
662661
loader.setKnownColumns(target.getColumns());

api/src/org/labkey/api/query/QueryImportPipelineJob.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -294,7 +294,7 @@ public void run()
294294

295295
loader = DataLoader.get().createLoader(_importContextBuilder.getPrimaryFile(), _importContextBuilder.getFileContentType(), _importContextBuilder.isHasColumnHeaders(), null, null);
296296

297-
AbstractQueryImportAction.configureLoader(loader, target, _importContextBuilder.getRenamedColumns(), _importContextBuilder.allowLineageColumns(), _importContextBuilder.getLineageImportAliases());
297+
AbstractQueryImportAction.configureLoader(loader, target, _importContextBuilder.getRenamedColumns(), _importContextBuilder.allowLineageColumns(), _importContextBuilder.getLineageImportAliases(), _importContextBuilder.getOptionParamsMap());
298298

299299
DataIteratorContext diContext = createDataIteratorContext(ve, getContainer());
300300

experiment/src/org/labkey/experiment/ExpDataIterators.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2527,7 +2527,7 @@ private int _importSplitFile(TypeData typeData, File splitFile, Container dataCo
25272527
else
25282528
aliasNames = new CaseInsensitiveHashSet(((ExpDataClass) typeData.dataType).getImportAliases().keySet());
25292529
// We do not need to configure the loader for renamed columns as that has been taken care of when writing the file.
2530-
configureLoader(loader, dataTable, null, true, aliasNames);
2530+
configureLoader(loader, dataTable, null, true, aliasNames, null /* Not needed since partition is not a cross type import*/);
25312531
if (loader instanceof TabLoader tabLoader)
25322532
tabLoader.setIncludeComments(true); // don't skip lines that starts with "#" (if the original file is Excel)
25332533
QueryService.get().setEnvironment(QueryService.Environment.CONTAINER, dataContainer);

experiment/src/org/labkey/experiment/controllers/exp/ExperimentController.java

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4507,13 +4507,6 @@ protected JSONObject createSuccessResponse(int rowCount)
45074507
return json;
45084508
}
45094509

4510-
@Override
4511-
protected void configureLoader(DataLoader loader) throws IOException
4512-
{
4513-
if (getOptionParamValue(Params.crossTypeImport))
4514-
loader.setInferTypes(false);
4515-
configureLoader(loader, _target, getRenamedColumns(), allowLineageColumns(), getLineageImportAliases());
4516-
}
45174510
}
45184511

45194512
public abstract static class AbstractExpDataImportAction extends AbstractQueryImportAction<QueryForm>
@@ -4671,12 +4664,6 @@ public void addNavTrail(NavTree root)
46714664
root.addChild("Import Data");
46724665
}
46734666

4674-
@Override
4675-
protected void configureLoader(DataLoader loader) throws IOException
4676-
{
4677-
configureLoader(loader, _target, getRenamedColumns(), allowLineageColumns(), getLineageImportAliases());
4678-
}
4679-
46804667
}
46814668

46824669
@RequiresPermission(UpdatePermission.class)

issues/src/org/labkey/issue/IssueServiceImpl.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,8 @@ public Issue saveIssue(ViewContext context, Issue issue, Issue.action action, Li
140140
for (int curIssueId : prevIssues)
141141
{
142142
IssueObject relatedIssue = ChangeSummary.relatedIssueCommentHandler(issueObject.getIssueId(), curIssueId, user, true);
143-
IssueManager.saveIssue(getRelatedIssueUser(container, user, relatedIssue), container, relatedIssue);
143+
if (null != relatedIssue)
144+
IssueManager.saveIssue(getRelatedIssueUser(container, user, relatedIssue), container, relatedIssue);
144145
}
145146
}
146147

issues/src/org/labkey/issue/actions/IssueValidation.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -235,13 +235,18 @@ public static void relatedIssueHandler(IssueObject issue, User user, Errors erro
235235
}
236236
}
237237

238-
// Issue 40178: Related Issues need to be in synch when related issues are deleted
238+
// Issue 40178: Related Issues need to be in sync when related issues are deleted
239239
for (Integer originalRelatedId : originalRelatedIssues)
240240
{
241241
if (!newRelatedIssues.contains(originalRelatedId))
242242
{
243243
IssueObject related = IssueManager.getIssue(null, user, originalRelatedId);
244-
if (null != related)
244+
if (related == null || !related.lookupContainer().hasPermission(user, ReadPermission.class))
245+
{
246+
errors.reject(SpringActionController.ERROR_MSG, "User does not have Read Permission for related issue '" + originalRelatedId + "'");
247+
return;
248+
}
249+
else
245250
{
246251
related = ChangeSummary.relatedIssueCommentHandler(originalIssue.getIssueId(), related.getIssueId(), user, true );
247252
IssueManager.saveIssue(user, related.lookupContainer(), related);

query/api-src/org/labkey/remoteapi/SelectRowsStreamHack.java

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -195,17 +195,13 @@ public void testFileDeletion() throws Exception
195195
DataIteratorContext dic = new DataIteratorContext();
196196

197197
DataIterator di = dib.getDataIterator(dic);
198-
199-
// This should create the file:
200-
Set<String> actualTempFiles = getMatchingTempFileNames();
201-
assertEquals("Temp file not created", preexistingTempFiles.size() + 1, actualTempFiles.size());
202-
198+
203199
// This should iterate and close the stream:
204200
long actualCount = di.stream().count();
205201
assertEquals("Incorrect row count", expectedRows, actualCount);
206202

207203
// The file should be deleted now:
208-
actualTempFiles = getMatchingTempFileNames();
204+
Set<String> actualTempFiles = getMatchingTempFileNames();
209205
actualTempFiles.removeAll(preexistingTempFiles);
210206
assertEquals("Temp files were not deleted, found: " + actualTempFiles.size(), 0, actualTempFiles.size());
211207

0 commit comments

Comments
 (0)