Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions elisa/src/org/labkey/elisa/plate/BioTekPlateReader.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
*/
package org.labkey.elisa.plate;

import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.Strings;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellType;
import org.apache.poi.ss.usermodel.Row;
Expand Down Expand Up @@ -43,7 +43,7 @@ protected boolean isValidStartRow(Sheet sheet, int row)
{
for (Cell cell : sheetRow)
{
if (cell.getCellType() == CellType.STRING && StringUtils.equalsIgnoreCase(cell.getStringCellValue(), "A"))
if (cell.getCellType() == CellType.STRING && Strings.CI.equals(cell.getStringCellValue(), "A"))
continue;
else if (cell.getCellType() != CellType.NUMERIC)
return false;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
package org.labkey.flow.analysis.model;

import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.Strings;
import org.apache.logging.log4j.Logger;
import org.jetbrains.annotations.Nullable;
import org.junit.Assert;
Expand Down Expand Up @@ -392,8 +393,8 @@ protected double getRange(Element elParameter)

static public String ___cleanName(String name)
{
name = StringUtils.replace(name, "<", CompensationMatrix.PREFIX);
name = StringUtils.replace(name, ">", CompensationMatrix.SUFFIX);
name = Strings.CS.replace(name, "<", CompensationMatrix.PREFIX);
name = Strings.CS.replace(name, ">", CompensationMatrix.SUFFIX);
name = StringUtils.replaceChars(name, ',', ';');
// replace MacRoman em-dash and en-dash
name = StringUtils.replaceChars(name, PopulationName.MAC_EMDASH, '-');
Expand Down
6 changes: 3 additions & 3 deletions flow/src/org/labkey/flow/ScriptParser.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
*/
package org.labkey.flow;

import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.Strings;
import org.apache.xmlbeans.XmlError;
import org.apache.xmlbeans.XmlException;
import org.apache.xmlbeans.XmlOptions;
Expand Down Expand Up @@ -83,7 +83,7 @@ public void parse(String script)
XmlOptions options = new XmlOptions();
List<XmlError> errors = new ArrayList<>();
options.setDocumentType(ScriptDocument.type);
script = StringUtils.replace(script, "<script>", "<script xmlns=\"" + ScriptDocument.type.getContentModel().getName().getNamespaceURI() + "\">");
script = Strings.CS.replace(script, "<script>", "<script xmlns=\"" + ScriptDocument.type.getContentModel().getName().getNamespaceURI() + "\">");
ScriptDocument doc = ScriptDocument.Factory.parse(new StringReader(script), options);
options.setErrorListener(errors);

Expand All @@ -92,7 +92,7 @@ public void parse(String script)
for (XmlError xmlError : errors)
{
String message = xmlError.getMessage();
message = StringUtils.replace(message, "@" + ScriptDocument.type.getContentModel().getName().getNamespaceURI(), "");
message = Strings.CS.replace(message, "@" + ScriptDocument.type.getContentModel().getName().getNamespaceURI(), "");
String location = xmlError.getCursorLocation().xmlText();
if (location.length() > 100)
location = StringUtilsLabKey.leftSurrogatePairFriendly(location, 100);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -226,26 +226,17 @@ public SimpleFilter getBaseFilter(TableInfo table, Filter filter)
SimpleFilter ret = new SimpleFilter(filter);

List<FlowRun> runs = FlowRun.getRunsForContainer(getContainer(), FlowProtocolStep.keywords);
int runCount = 0;
SQLFragment sql = new SQLFragment("RowId IN (");
String comma = "";
for (FlowRun run : runs)
{
if (run.getPath() == null)
continue;
sql.append(comma);
comma = ",";
sql.appendValue(run.getRunId());
runCount ++;
}
sql.append(")");
if (runCount == 0)
List<Long> runIds = runs.stream()
.filter(run -> run.getPath() != null)
.map(FlowRun::getRunId)
.toList();
if (runIds.isEmpty())
{
ret.addWhereClause(new SQLFragment("1 = 0"));
}
else
{
ret.addWhereClause(sql, FieldKey.fromParts("RowId"));
ret.addInClause(FieldKey.fromParts("RowId"), runIds);
}
return ret;
}
Expand Down
16 changes: 4 additions & 12 deletions flow/src/org/labkey/flow/controllers/well/WellController.java
Original file line number Diff line number Diff line change
Expand Up @@ -105,11 +105,13 @@
import java.io.IOException;
import java.net.URI;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
import java.util.TreeSet;

Expand Down Expand Up @@ -756,18 +758,8 @@ public boolean handlePost(UpdateKeywordsForm form, BindException errors)
update.add(getContainer());
update.add(ObjectType.fcsKeywords.getTypeId());
update.add(_keywordid);
update.append(" AND value IN (");
String param = "?";
for (int i=0 ; i<form.from.length ; i++)
{
if (null != form.from[i])
{
update.append(param);
update.add(form.from[i]);
param = ",?";
}
}
update.append(")");
update.append(" AND value");
update.appendInClause(Arrays.stream(form.from).filter(Objects::nonNull).toList(), FlowManager.get().getSchema().getSqlDialect());

int updated = new SqlExecutor(FlowManager.get().getSchema()).execute(update);

Expand Down
6 changes: 3 additions & 3 deletions flow/src/org/labkey/flow/data/FieldSubstitution.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@

package org.labkey.flow.data;

import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.Strings;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.LogManager;
import org.labkey.api.query.FieldKey;
Expand All @@ -38,10 +38,10 @@ static public FieldSubstitution fromString(String s)
int ichCur = 0;
while (true)
{
int ichExprStart = StringUtils.indexOf(s, "${", ichCur);
int ichExprStart = Strings.CS.indexOf(s, "${", ichCur);
if (ichExprStart < 0)
break;
int ichExprEnd = StringUtils.indexOf(s, "}", ichExprStart);
int ichExprEnd = Strings.CS.indexOf(s, "}", ichExprStart);
if (ichExprEnd < 0)
break;
if (ichExprStart > ichCur)
Expand Down
14 changes: 7 additions & 7 deletions flow/src/org/labkey/flow/persist/AttributeSetHelper.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,13 +15,13 @@
*/
package org.labkey.flow.persist;

import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.jetbrains.annotations.Nullable;
import org.labkey.api.collections.LongHashMap;
import org.labkey.api.data.Container;
import org.labkey.api.data.DbScope;
import org.labkey.api.data.SQLFragment;
import org.labkey.api.data.SqlSelector;
import org.labkey.api.data.Table;
import org.labkey.api.exp.api.ExpData;
Expand Down Expand Up @@ -254,12 +254,12 @@ private static void loadFromDb(final AttributeSet attrs, AttrObject obj, final b

if (!keywordIDs.isEmpty())
{
String sqlKeywordAliaes = "SELECT A.name AS PreferredName, B.Name AS AliasName\n" +
SQLFragment sqlKeywordAliaes = new SQLFragment("SELECT A.name AS PreferredName, B.Name AS AliasName\n" +
"FROM flow.KeywordAttr A\n" +
"INNER JOIN flow.KeywordAttr B\n" +
"ON A.RowId = B.Id\n" +
"AND B.RowId != B.Id\n" +
"AND A.RowId IN (" + StringUtils.join(keywordIDs, ", ") + ")";
"AND A.RowId").appendInClause(keywordIDs, mgr.getSchema().getSqlDialect());

new SqlSelector(mgr.getSchema(), sqlKeywordAliaes).forEach(rs -> attrs.addKeywordAlias(rs.getString(1), rs.getString(2)));
}
Expand All @@ -282,12 +282,12 @@ private static void loadFromDb(final AttributeSet attrs, AttrObject obj, final b

if (!statisticIDs.isEmpty())
{
String sqlStatisticAliaes = "SELECT A.name AS PreferredName, B.Name AS AliasName\n" +
SQLFragment sqlStatisticAliaes = new SQLFragment("SELECT A.name AS PreferredName, B.Name AS AliasName\n" +
"FROM flow.StatisticAttr A\n" +
"INNER JOIN flow.StatisticAttr B\n" +
"ON A.RowId = B.Id\n" +
"AND B.RowId != B.Id\n" +
"AND A.RowId IN (" + StringUtils.join(statisticIDs, ", ") + ")";
"AND A.RowId").appendInClause(statisticIDs, mgr.getSchema().getSqlDialect());

new SqlSelector(mgr.getSchema(), sqlStatisticAliaes).forEach(rs -> attrs.addStatisticAlias(new StatisticSpec(rs.getString(1)), new StatisticSpec(rs.getString(2))));
}
Expand Down Expand Up @@ -330,12 +330,12 @@ private static void loadFromDb(final AttributeSet attrs, AttrObject obj, final b

if (!graphIDs.isEmpty())
{
String sqlGraphAliaes = "SELECT A.name AS PreferredName, B.Name AS AliasName\n" +
SQLFragment sqlGraphAliaes = new SQLFragment("SELECT A.name AS PreferredName, B.Name AS AliasName\n" +
"FROM flow.GraphAttr A\n" +
"INNER JOIN flow.GraphAttr B\n" +
"ON A.RowId = B.Id\n" +
"AND B.RowId != B.Id\n" +
"AND A.RowId IN (" + StringUtils.join(graphIDs, ", ") + ")";
"AND A.RowId").appendInClause(graphIDs, mgr.getSchema().getSqlDialect());

new SqlSelector(mgr.getSchema(), sqlGraphAliaes).forEach(rs -> attrs.addGraphAlias(new GraphSpec(rs.getString(1)), new GraphSpec(rs.getString(2))));
}
Expand Down
53 changes: 16 additions & 37 deletions flow/src/org/labkey/flow/persist/FlowManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@
package org.labkey.flow.persist;

import jakarta.servlet.http.HttpServletResponse;
import org.apache.commons.collections4.iterators.ArrayIterator;
import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
Expand All @@ -44,6 +43,7 @@
import org.labkey.api.data.Table;
import org.labkey.api.data.TableInfo;
import org.labkey.api.data.TableSelector;
import org.labkey.api.data.dialect.SqlDialect;
import org.labkey.api.dataiterator.DataIteratorContext;
import org.labkey.api.dataiterator.MapDataIterator;
import org.labkey.api.exp.Handler;
Expand Down Expand Up @@ -96,8 +96,6 @@
import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
Expand Down Expand Up @@ -953,14 +951,8 @@ public List<AttrObject> getAttrObjects(Collection<ExpData> datas)
{
if (datas.isEmpty())
return Collections.emptyList();
SQLFragment sql = new SQLFragment ("SELECT * FROM " + getTinfoObject().toString() + " WHERE DataId IN (");
String comma = "";
for (ExpData data : datas)
{
sql.append(comma).appendValue(data.getRowId());
comma = ",";
}
sql.append(")");
SQLFragment sql = new SQLFragment ("SELECT * FROM " + getTinfoObject().toString() + " WHERE DataId");
sql.appendInClause(datas.stream().map(ExpData::getRowId).toList(), getSchema().getSqlDialect());
AttrObject[] array = new SqlSelector(getSchema(), sql).getArray(AttrObject.class);
return Arrays.asList(array);
}
Expand Down Expand Up @@ -1023,31 +1015,27 @@ public AttrObject createAttrObject(@NotNull ExpData data, ObjectType type, URI u

int MAX_BATCH = 1000;

private String join(Integer[] oids, int from, int to)
{
Iterator<Integer> i = new ArrayIterator<>(oids, from, to);
return StringUtils.join(i, ',');
}

private void deleteAttributes(Integer[] oids)
{
if (oids.length == 0)
return;

SqlExecutor executor = new SqlExecutor(getSchema());
SqlDialect dialect = getSchema().getSqlDialect();

for (int from = 0, to; from < oids.length; from = to)
{
to = from + MAX_BATCH;
if (to > oids.length)
to = oids.length;

String list = join(oids, from, to);
// XXX: delete no longer referenced statattr afterwards?
executor.execute("DELETE FROM flow.Statistic WHERE ObjectId IN (" + list + ")");
executor.execute("DELETE FROM flow.Keyword WHERE ObjectId IN (" + list + ")");
executor.execute("DELETE FROM flow.Graph WHERE ObjectId IN (" + list + ")");
executor.execute("DELETE FROM flow.Script WHERE ObjectId IN (" + list + ")");
List<Integer> list = Arrays.asList(oids).subList(from, to);
Comment thread
labkey-adam marked this conversation as resolved.
var inList = new SQLFragment().appendInClause(list, dialect);
// XXX: delete no longer referenced statattr afterward?
executor.execute(new SQLFragment("DELETE FROM flow.Statistic WHERE ObjectId").append(inList));
executor.execute(new SQLFragment("DELETE FROM flow.Keyword WHERE ObjectId").append(inList));
executor.execute(new SQLFragment("DELETE FROM flow.Graph WHERE ObjectId").append(inList));
executor.execute(new SQLFragment("DELETE FROM flow.Script WHERE ObjectId").append(inList));
}
}

Expand All @@ -1069,9 +1057,8 @@ private void deleteObjectIds(Integer[] oids, Set<Container> containers)
try (DbScope.Transaction transaction = scope.ensureTransaction())
{
deleteAttributes(oids);
SQLFragment sqlf = new SQLFragment("DELETE FROM flow.Object WHERE RowId IN (" );
sqlf.append(StringUtils.join(oids,','));
sqlf.append(")");
SQLFragment sqlf = new SQLFragment("DELETE FROM flow.Object WHERE RowId");
sqlf.appendInClause(Arrays.asList(oids), getSchema().getSqlDialect());
new SqlExecutor(getSchema()).execute(sqlf);
transaction.commit();
}
Expand Down Expand Up @@ -1109,17 +1096,9 @@ public void deleteData(List<ExpData> datas)
{
if (datas.isEmpty())
return;
StringBuilder sqlGetOIDs = new StringBuilder("SELECT flow.Object.RowId FROM flow.Object WHERE flow.Object.DataId IN (");
String comma = "";
Set<Container> containers = new HashSet<>();
for (ExpData data : datas)
{
sqlGetOIDs.append(comma);
comma = ", ";
sqlGetOIDs.append(data.getRowId());
containers.add(data.getContainer());
}
sqlGetOIDs.append(")");
SQLFragment sqlGetOIDs = new SQLFragment("SELECT flow.Object.RowId FROM flow.Object WHERE flow.Object.DataId");
sqlGetOIDs.appendInClause(datas.stream().map(ExpData::getRowId).toList(), getSchema().getSqlDialect());
Set<Container> containers = datas.stream().map(ExpData::getContainer).collect(Collectors.toSet());
Integer[] objectIds = new SqlSelector(getSchema(), sqlGetOIDs).getArray(Integer.class);
if (objectIds.length == 0)
return;
Expand Down
6 changes: 2 additions & 4 deletions flow/src/org/labkey/flow/query/FlowSchema.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@
package org.labkey.flow.query;

import jakarta.servlet.http.HttpServletRequest;
import org.apache.commons.lang3.StringUtils;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.labkey.api.assay.AbstractAssayProvider;
Expand Down Expand Up @@ -1927,9 +1926,8 @@ private void filterTable(FilteredTable table, Map<? extends Object, Integer> map
}
else
{
SQLFragment sqlCondition = new SQLFragment("RowId IN (");
sqlCondition.append(StringUtils.join(map.values().iterator(), ","));
sqlCondition.append(")");
SQLFragment sqlCondition = new SQLFragment("RowId");
sqlCondition.appendInClause(map.values(), table.getSqlDialect());
table.addCondition(sqlCondition);
}
}
Expand Down
3 changes: 2 additions & 1 deletion flow/src/org/labkey/flow/reports/FilterFlowReport.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
import com.fasterxml.jackson.annotation.JsonManagedReference;
import org.apache.commons.beanutils.ConversionException;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.Strings;
import org.labkey.api.data.CachedResultSet;
import org.labkey.api.data.CachedResultSetBuilder;
import org.labkey.api.data.ColumnInfo;
Expand Down Expand Up @@ -437,7 +438,7 @@ public void updateFilterProperties(PropertyValues pvs)

public String toSQL(String s)
{
return null == s ? "''" : "'" + StringUtils.replace(s, "'", "\'\'") + "'";
return null == s ? "''" : "'" + Strings.CS.replace(s, "'", "\'\'") + "'";
}

public String toSQL(FieldKey fieldKey)
Expand Down
Loading
Loading