Skip to content

Commit 5d6730c

Browse files
authored
Use helper methods to create IN clauses (#449)
## Rationale Using helpers to generate SQL IN clauses is more convenient and prevents broken SQL & injection risks ## Related Pull Requests - LabKey/platform#8187
1 parent e5975ef commit 5d6730c

3 files changed

Lines changed: 6 additions & 4 deletions

File tree

‎SequenceAnalysis/src/org/labkey/sequenceanalysis/SequenceAnalysisManager.java‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -436,7 +436,7 @@ else if (doDelete)
436436

437437
public Set<Integer> getAnalysesAssociatedWithOutputFiles(List<Integer> outputFileIds)
438438
{
439-
Set<Integer> possibleDeletes = new HashSet<>(outputFileIds.isEmpty() ? Collections.emptyList() : new SqlSelector(SequenceAnalysisSchema.getInstance().getSchema(), new SQLFragment("SELECT distinct a.rowid FROM " + SequenceAnalysisSchema.SCHEMA_NAME + "." + SequenceAnalysisSchema.TABLE_OUTPUTFILES + " o JOIN " + SequenceAnalysisSchema.SCHEMA_NAME + "." + SequenceAnalysisSchema.TABLE_ANALYSES + " a ON (o.dataId = a.alignmentFile) WHERE o.rowid IN (" + StringUtils.join(outputFileIds, ",") + ")")).getArrayList(Integer.class));
439+
Set<Integer> possibleDeletes = new HashSet<>(outputFileIds.isEmpty() ? Collections.emptyList() : new SqlSelector(SequenceAnalysisSchema.getInstance().getSchema(), new SQLFragment("SELECT distinct a.rowid FROM " + SequenceAnalysisSchema.SCHEMA_NAME + "." + SequenceAnalysisSchema.TABLE_OUTPUTFILES + " o JOIN " + SequenceAnalysisSchema.SCHEMA_NAME + "." + SequenceAnalysisSchema.TABLE_ANALYSES + " a ON (o.dataId = a.alignmentFile) WHERE o.rowid").appendInClause(outputFileIds, SequenceAnalysisSchema.getInstance().getSchema().getSqlDialect())).getArrayList(Integer.class));
440440

441441
//make sure these are not in use by other outputfiles not being deleted
442442
if (!possibleDeletes.isEmpty())

‎SequenceAnalysis/src/org/labkey/sequenceanalysis/run/variant/KingInferenceStep.java‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import htsjdk.variant.utils.SAMSequenceDictionaryExtractor;
88
import org.apache.commons.io.FileUtils;
99
import org.apache.commons.lang3.StringUtils;
10+
import org.apache.commons.lang3.Strings;
1011
import org.apache.commons.lang3.math.NumberUtils;
1112
import org.apache.logging.log4j.Logger;
1213
import org.jetbrains.annotations.Nullable;
@@ -86,7 +87,7 @@ public Output processVariants(File inputVCF, File outputDirectory, ReferenceGeno
8687
{
8788
SAMSequenceDictionary dict = SAMSequenceDictionaryExtractor.extractDictionary(genome.getSequenceDictionary().toPath());
8889
List<String> toKeep = dict.getSequences().stream().map(SAMSequenceRecord::getSequenceName).filter(sequenceName -> {
89-
String name = StringUtils.replaceIgnoreCase(sequenceName, "^chr", "");
90+
String name = Strings.CI.replace(sequenceName, "^chr", "");
9091

9192
return NumberUtils.isCreatable(name) || "X".equalsIgnoreCase(name) || "Y".equalsIgnoreCase(name);
9293
}).toList();

‎SequenceAnalysis/src/org/labkey/sequenceanalysis/util/AbstractSequenceMatcher.java‎

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import htsjdk.samtools.fastq.FastqRecord;
55
import htsjdk.samtools.fastq.FastqWriter;
66
import org.apache.commons.lang3.StringUtils;
7+
import org.apache.commons.text.similarity.LevenshteinDistance;
78
import org.apache.logging.log4j.Logger;
89
import org.labkey.api.util.Pair;
910
import org.labkey.sequenceanalysis.model.SequenceTag;
@@ -82,7 +83,7 @@ protected void processTag5(FastqRecord rec, String sequenceToTest, SequenceTag b
8283
targetSeq = sequenceToTest.substring(0, barcodeSeq.length());
8384
}
8485

85-
int editDist = StringUtils.getLevenshteinDistance(barcodeSeq, targetSeq);
86+
int editDist = LevenshteinDistance.getDefaultInstance().apply(barcodeSeq, targetSeq);
8687
if (editDist <= _editDistance)
8788
{
8889
Map<String, SequenceMatch> matchesAtDist = trackingMap.get(editDist);
@@ -117,7 +118,7 @@ protected void processTag3(FastqRecord rec, String sequenceToTest, SequenceTag b
117118
targetSeq = StringUtils.reverse(sequenceToTest).substring(0, barcodeSeq.length());
118119
}
119120

120-
int editDist = StringUtils.getLevenshteinDistance(barcodeSeq, targetSeq);
121+
int editDist = LevenshteinDistance.getDefaultInstance().apply(barcodeSeq, targetSeq);
121122
if (editDist <= _editDistance)
122123
{
123124
Map<String, SequenceMatch> matchesAtDist = trackingMap.get(editDist);

0 commit comments

Comments
 (0)