Skip to content

Commit f5e05e0

Browse files
authored
Use helper methods to create IN clauses (#681)
## 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 70043b0 commit f5e05e0

5 files changed

Lines changed: 14 additions & 19 deletions

File tree

‎panoramapublic/src/org/labkey/panoramapublic/chromlib/ChromLibStateImporter.java‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
package org.labkey.panoramapublic.chromlib;
1717

1818
import org.apache.commons.lang3.StringUtils;
19+
import org.apache.commons.lang3.Strings;
1920
import org.apache.logging.log4j.Logger;
2021
import org.labkey.api.data.Container;
2122
import org.labkey.api.data.DbSchema;
@@ -136,7 +137,7 @@ void parseLibStateRow(Map<String, Object> row) throws ChromLibStateException
136137
{
137138
String skyFile = getSkyFile(row);
138139
String runState = String.valueOf(row.get(RUN_STATE));
139-
if (_currentRun == null || !StringUtils.equals(skyFile, _currentRun.getFileName()))
140+
if (_currentRun == null || !Strings.CS.equals(skyFile, _currentRun.getFileName()))
140141
{
141142
ITargetedMSRun run = _svc.getRunByFileName(skyFile, _container);
142143
if (run == null)

‎panoramapublic/src/org/labkey/panoramapublic/model/validation/SpecLibValidation.java‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
*/
1616
package org.labkey.panoramapublic.model.validation;
1717

18-
import org.apache.commons.lang3.StringUtils;
18+
import org.apache.commons.lang3.Strings;
1919
import org.jetbrains.annotations.NotNull;
2020
import org.jetbrains.annotations.Nullable;
2121
import org.labkey.panoramapublic.model.speclib.SpecLibInfo;
@@ -330,7 +330,7 @@ public boolean isPrositLibrary()
330330
{
331331
String modelName = getSpectrumFiles().getFirst().getName();
332332
return "Prositintensity_prosit_publication_v1".equals(modelName)
333-
|| StringUtils.startsWith(modelName, "Koina-");
333+
|| Strings.CS.startsWith(modelName, "Koina-");
334334
}
335335
return false;
336336
}

‎panoramapublic/src/org/labkey/panoramapublic/query/ContainerJoin.java‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
*/
1616
package org.labkey.panoramapublic.query;
1717

18-
import org.apache.commons.lang3.StringUtils;
18+
import org.apache.commons.lang3.Strings;
1919
import org.jetbrains.annotations.NotNull;
2020
import org.jetbrains.annotations.Nullable;
2121
import org.junit.Assert;
@@ -177,8 +177,8 @@ void assertSQLEquals(Object Oexpected, Object Oactual)
177177
String actual = Oactual instanceof SQLFragment s ? s.getRawSQL() : String.valueOf(Oactual);
178178

179179
// strip "'s to make this less sensitive to SQL generation changes
180-
expected = StringUtils.replace(expected, "\"", "").trim();
181-
actual = StringUtils.replace(actual, "\"", "").trim();
180+
expected = Strings.CS.replace(expected, "\"", "").trim();
181+
actual = Strings.CS.replace(actual, "\"", "").trim();
182182
assertEquals(expected, actual);
183183
}
184184

‎panoramapublic/src/org/labkey/panoramapublic/query/ExperimentAnnotationsManager.java‎

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -486,18 +486,11 @@ public static boolean hasProteomicData(ExperimentAnnotations experimentAnnotatio
486486
SQLFragment sql = new SQLFragment("SELECT Id FROM ").append(svc.getTableInfoRuns(), "r")
487487
.append(" WHERE PeptideCount > 0 ")
488488
.append(" AND Deleted = ? " ).add(Boolean.FALSE)
489-
.append(" AND Container IN ");
490-
if (experimentAnnotations.isIncludeSubfolders())
491-
{
492-
List<Container> containers = ContainerManager.getAllChildren(experimentAnnotations.getContainer(), user);
493-
sql.append(ContainerManager.getIdsAsCsvList(new HashSet<>(containers), d));
494-
}
495-
else
496-
{
497-
sql.append("(");
498-
sql.appendValue(experimentAnnotations.getContainer(),d);
499-
sql.append(")");
500-
}
489+
.append(" AND Container");
490+
List<Container> containers = experimentAnnotations.isIncludeSubfolders()
491+
? ContainerManager.getAllChildren(experimentAnnotations.getContainer(), user)
492+
: List.of(experimentAnnotations.getContainer());
493+
sql.appendInClause(containers, d);
501494

502495
return new SqlSelector(targetedmsSchema.getDbSchema(), sql).exists();
503496
}

‎panoramapublic/src/org/labkey/panoramapublic/query/ModificationInfoManager.java‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -276,8 +276,9 @@ private static boolean runsHaveModifications(List<Long> runIds, TableInfo tableI
276276
.append(svc.getTableInfoGeneralMolecule(), "gm").append(" ON gm.Id = mod.peptideId ")
277277
.append(" INNER JOIN ")
278278
.append(svc.getTableInfoPeptideGroup(), "pg").append(" ON pg.Id = gm.peptideGroupId ")
279-
.append(" WHERE pg.runId IN (").append(StringUtils.join(runIds, ",")).append(") ");
279+
.append(" WHERE pg.runId");
280280
var schema = svc.getUserSchema(user, container).getDbSchema();
281+
sql.appendInClause(runIds, schema.getSqlDialect());
281282
sql = schema.getSqlDialect().limitRows(sql, 1);
282283
return new SqlSelector(schema, sql).exists();
283284
}

0 commit comments

Comments
 (0)