Skip to content

Commit 80ead23

Browse files
use SqlDialect.appendInClauseSql() for cleaner code.
1 parent 39a457a commit 80ead23

1 file changed

Lines changed: 6 additions & 7 deletions

File tree

study/src/org/labkey/study/model/DatasetDefinition.java

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2495,7 +2495,7 @@ private HashMap<String, Object[]> checkAndDeleteDupes(DataIterator rows,
24952495
// duplicate keys found in error
24962496
final LinkedHashMap<String,Object[]> noDeleteMap = new LinkedHashMap<>();
24972497

2498-
StringBuilder sbIn = new StringBuilder();
2498+
ArrayList<String> idList = new ArrayList<>();
24992499
final Map<String, Object[]> uriMap = new HashMap<>();
25002500
int count = 0;
25012501
while (rows.next())
@@ -2530,9 +2530,7 @@ private HashMap<String, Object[]> checkAndDeleteDupes(DataIterator rows,
25302530
String sep = "";
25312531
if (uriMap.size() < 10000 || Boolean.TRUE==replace)
25322532
{
2533-
if (uniq.contains(("'")))
2534-
uniq = uniq.replaceAll("'","''");
2535-
sbIn.append(sep).append("'").append(uniq).append("'");
2533+
idList.add(uniq);
25362534
}
25372535
count++;
25382536
}
@@ -2549,7 +2547,7 @@ private HashMap<String, Object[]> checkAndDeleteDupes(DataIterator rows,
25492547
return null;
25502548
}
25512549
else // also check target dataset
2552-
return checkTargetDupesAndDelete(isDemographic, noDeleteMap, sbIn, uriMap);
2550+
return checkTargetDupesAndDelete(isDemographic, noDeleteMap, idList, uriMap);
25532551
}
25542552
catch (BatchValidationException vex)
25552553
{
@@ -2569,14 +2567,15 @@ private HashMap<String, Object[]> checkAndDeleteDupes(DataIterator rows,
25692567
}
25702568
}
25712569

2572-
private HashMap<String, Object[]> checkTargetDupesAndDelete(final boolean demographic, final LinkedHashMap<String, Object[]> noDeleteMap, StringBuilder sbIn, final Map<String, Object[]> uriMap)
2570+
private HashMap<String, Object[]> checkTargetDupesAndDelete(final boolean demographic, final LinkedHashMap<String, Object[]> noDeleteMap, ArrayList<String> idList, final Map<String, Object[]> uriMap)
25732571
{
25742572
// duplicate keys found that should be deleted
25752573
final Set<String> deleteSet = new HashSet<>();
25762574

25772575
TableInfo tinfo = getStorageTableInfo(false);
25782576
SimpleFilter filter = new SimpleFilter();
2579-
filter.addWhereClause((demographic ?"ParticipantId":"LSID") + " IN (" + sbIn + ")", new Object[]{});
2577+
SQLFragment inClause = tinfo.getSqlDialect().appendInClauseSql(new SQLFragment(demographic ?"ParticipantId":"LSID"), idList);
2578+
filter.addWhereClause(inClause);
25802579
if (isShared())
25812580
{
25822581
Container rowsContainer = getContainer();

0 commit comments

Comments
 (0)