From 42d73f3474822ee2deab1596caee3984bf5fe3b0 Mon Sep 17 00:00:00 2001 From: labkey-matthewb Date: Wed, 26 Mar 2025 13:18:52 -0700 Subject: [PATCH 1/8] DatabaseIdentifier ColumnInfo.getAlias() ColumnInfo.getSelectName() --- .../src/org/labkey/elispot/query/ElispotRunDataTable.java | 3 +-- .../org/labkey/flow/query/FCSFileCoalescingColumn.java | 8 ++++---- flow/src/org/labkey/flow/query/FlowSchema.java | 4 ++-- ms2/src/org/labkey/ms2/PeptideManager.java | 5 ++--- ms2/src/org/labkey/ms2/ProteinListDisplayColumn.java | 2 +- ms2/src/org/labkey/ms2/query/MS2Schema.java | 2 +- .../ms2/query/PeptideAggregrationDisplayColumn.java | 8 ++++---- ms2/src/org/labkey/ms2/query/QueryAACoverageColumn.java | 2 +- nab/src/org/labkey/nab/NabManager.java | 4 +--- viability/src/org/labkey/viability/ViabilityManager.java | 8 ++++---- 10 files changed, 21 insertions(+), 25 deletions(-) diff --git a/elispotassay/src/org/labkey/elispot/query/ElispotRunDataTable.java b/elispotassay/src/org/labkey/elispot/query/ElispotRunDataTable.java index 84dd7c14d2..f7dab89706 100644 --- a/elispotassay/src/org/labkey/elispot/query/ElispotRunDataTable.java +++ b/elispotassay/src/org/labkey/elispot/query/ElispotRunDataTable.java @@ -219,8 +219,7 @@ private PlateReader getReader(RenderContext ctx) ColumnInfo plateReaderColumn = ctx.getFieldMap().get(FieldKey.fromParts("Run", "PlateReader")); if (null != plateReaderColumn) { - String readerAlias = plateReaderColumn.getAlias(); - Object readerName = ctx.getRow().get(readerAlias); + Object readerName = plateReaderColumn.getValue(ctx); if (readerName != null) { diff --git a/flow/src/org/labkey/flow/query/FCSFileCoalescingColumn.java b/flow/src/org/labkey/flow/query/FCSFileCoalescingColumn.java index 0440190df8..4c2a0da565 100644 --- a/flow/src/org/labkey/flow/query/FCSFileCoalescingColumn.java +++ b/flow/src/org/labkey/flow/query/FCSFileCoalescingColumn.java @@ -134,7 +134,7 @@ public void declareJoins(String parentAlias, Map map) SQLFragment coalesceFrag = new SQLFragment(); coalesceFrag.append("SELECT\n"); for (FieldKey pkCol : pkCols) - coalesceFrag.append(" ").append(columnMap.get(pkCol).getAlias()).append("\n"); + coalesceFrag.append(" ").appendIdentifier(columnMap.get(pkCol).getAlias()).append("\n"); for (Map.Entry> entry : pairs.entrySet()) { @@ -143,9 +143,9 @@ public void declareJoins(String parentAlias, Map map) coalesceFrag.append(",\n"); coalesceFrag.append(" COALESCE(\n"); - coalesceFrag.append(columnMap.get(pair.first).getAlias()); + coalesceFrag.appendIdentifier(columnMap.get(pair.first).getAlias()); coalesceFrag.append(", "); - coalesceFrag.append(columnMap.get(pair.second).getAlias()); + coalesceFrag.appendIdentifier(columnMap.get(pair.second).getAlias()); coalesceFrag.append(") AS ").append(name); } coalesceFrag.append("\n"); @@ -162,7 +162,7 @@ public void declareJoins(String parentAlias, Map map) frag.append(and); frag.append(parentAlias).append(".").append(pkCol); frag.append(" = "); - frag.append(name).append(".").append(columnMap.get(pkCol).getAlias()); + frag.append(name).append(".").appendIdentifier(columnMap.get(pkCol).getAlias()); and = " AND "; } diff --git a/flow/src/org/labkey/flow/query/FlowSchema.java b/flow/src/org/labkey/flow/query/FlowSchema.java index 8499840935..8e588c1bac 100644 --- a/flow/src/org/labkey/flow/query/FlowSchema.java +++ b/flow/src/org/labkey/flow/query/FlowSchema.java @@ -554,7 +554,7 @@ public void addAllowablePermission(Class permission) BaseColumnInfo addExpColumn(@NotNull ColumnInfo underlyingColumn) { - ExprColumn ret = new ExprColumn(this, underlyingColumn.getAlias(), underlyingColumn.getValueSql(ExprColumn.STR_TABLE_ALIAS), underlyingColumn.getJdbcType()); + ExprColumn ret = new ExprColumn(this, underlyingColumn.getAlias().getString(), underlyingColumn.getValueSql(ExprColumn.STR_TABLE_ALIAS), underlyingColumn.getJdbcType()); ret.copyAttributesFrom(underlyingColumn); ret.setHidden(underlyingColumn.isHidden()); if (underlyingColumn.getFk() instanceof RowIdForeignKey) @@ -2123,7 +2123,7 @@ SQLFragment generateBackgroundJuctionSql() selectInto.append(and); if (null == fgMap.get(m) || null == bgMap.get(m)) return null; - selectInto.append("F.").append(fgMap.get(m).getAlias()).append("=B.").append(bgMap.get(m).getAlias()); + selectInto.append("F.").appendIdentifier(fgMap.get(m).getAlias()).append("=B.").appendIdentifier(bgMap.get(m).getAlias()); and = " AND "; } diff --git a/ms2/src/org/labkey/ms2/PeptideManager.java b/ms2/src/org/labkey/ms2/PeptideManager.java index 232e14914b..4e1113a643 100644 --- a/ms2/src/org/labkey/ms2/PeptideManager.java +++ b/ms2/src/org/labkey/ms2/PeptideManager.java @@ -393,11 +393,10 @@ public String getLabKeySQLWhereClause(Map column public SQLFragment toSQLFragment(Map columnMap, SqlDialect dialect) { ColumnInfo colInfo = columnMap != null ? columnMap.get(_fieldKey) : null; - String name = colInfo != null ? colInfo.getAlias() : _fieldKey.getName(); - String alias = dialect.getColumnSelectName(name); + var alias = SimpleFilter.getAliasForColumnFilter(dialect, colInfo, _fieldKey); SQLFragment sql = new SQLFragment(); - sql.append(alias); + sql.appendIdentifier(alias); sql.append(" >= CASE Charge"); for (int i = 0; i < _values.length; i++) diff --git a/ms2/src/org/labkey/ms2/ProteinListDisplayColumn.java b/ms2/src/org/labkey/ms2/ProteinListDisplayColumn.java index e109fac815..c1a91ae393 100644 --- a/ms2/src/org/labkey/ms2/ProteinListDisplayColumn.java +++ b/ms2/src/org/labkey/ms2/ProteinListDisplayColumn.java @@ -272,6 +272,6 @@ private void writeInfo(ProteinSummary summary, Writer out, ActionURL url, int gr public void setColumnInfo(ColumnInfo colInfo) { _columnInfo = colInfo; - _columnName = colInfo.getAlias(); + _columnName = colInfo.getAlias().getString(); } } diff --git a/ms2/src/org/labkey/ms2/query/MS2Schema.java b/ms2/src/org/labkey/ms2/query/MS2Schema.java index ff936d95e9..76cf2082c0 100644 --- a/ms2/src/org/labkey/ms2/query/MS2Schema.java +++ b/ms2/src/org/labkey/ms2/query/MS2Schema.java @@ -933,7 +933,7 @@ protected SQLFragment getSelectSQL(TableInfo tableInfo, SimpleFilter filter, Col { sql.append(separator); separator = ", "; - sql.append(columnMap.get(fieldKey).getAlias()); + sql.appendIdentifier(columnMap.get(fieldKey).getAlias()); } sql.append(" FROM (\n"); sql.append(innerSelect); diff --git a/ms2/src/org/labkey/ms2/query/PeptideAggregrationDisplayColumn.java b/ms2/src/org/labkey/ms2/query/PeptideAggregrationDisplayColumn.java index c2c49c702b..046ef785f2 100644 --- a/ms2/src/org/labkey/ms2/query/PeptideAggregrationDisplayColumn.java +++ b/ms2/src/org/labkey/ms2/query/PeptideAggregrationDisplayColumn.java @@ -89,21 +89,21 @@ public Object getValue(RenderContext ctx) rs = ((GroupedResultSet) originalRS).getNextResultSet(); closeRS = true; } - Object groupingValue = originalRS.getObject(_groupingColumn.getAlias()); + Object groupingValue = _groupingColumn.getValue(originalRS); List peptides = (List) ctx.get("PeptideList"); Object cachedGroupingValue = ctx.get("PeptideListGroupingValue"); if (peptides == null || cachedGroupingValue == null || !cachedGroupingValue.equals(groupingValue)) { peptides = new ArrayList<>(); - peptides.add(originalRS.getString(_peptideColumn.getAlias())); + peptides.add(_peptideColumn.getStringValue(originalRS)); int originalRow = originalRS.getRow(); while (rs.next()) { - if (Objects.equals(rs.getObject(_groupingColumn.getAlias()), groupingValue)) + if (Objects.equals(_groupingColumn.getValue(rs), groupingValue)) { - peptides.add(rs.getString(_peptideColumn.getAlias())); + peptides.add(_peptideColumn.getStringValue(rs)); } else { diff --git a/ms2/src/org/labkey/ms2/query/QueryAACoverageColumn.java b/ms2/src/org/labkey/ms2/query/QueryAACoverageColumn.java index 3617230524..cec85a8da9 100644 --- a/ms2/src/org/labkey/ms2/query/QueryAACoverageColumn.java +++ b/ms2/src/org/labkey/ms2/query/QueryAACoverageColumn.java @@ -66,7 +66,7 @@ protected Object calculateValue(RenderContext ctx, List peptides) throws SQLException { Protein protein = new Protein(); - protein.setSequence(ctx.getResults().getString(_sequenceColumn.getAlias())); + protein.setSequence((String)_sequenceColumn.getValue(ctx)); protein.setPeptides(peptides.toArray(new String[peptides.size()])); return protein.getAAPercent(); } diff --git a/nab/src/org/labkey/nab/NabManager.java b/nab/src/org/labkey/nab/NabManager.java index 6e388e982d..e8ff1ef88a 100644 --- a/nab/src/org/labkey/nab/NabManager.java +++ b/nab/src/org/labkey/nab/NabManager.java @@ -197,9 +197,7 @@ public void getDataPropertiesFromNabRunData(NabRunDataTable nabRunDataTable, Str ColumnInfo column = columns.get(fieldKeys.get(pd)); if (null != column) { - String columnAlias = column.getAlias(); - if (null != columnAlias) - dataProperties.put(pd, rowMap.get(columnAlias)); + dataProperties.put(pd, column.getValue(rowMap)); } } } diff --git a/viability/src/org/labkey/viability/ViabilityManager.java b/viability/src/org/labkey/viability/ViabilityManager.java index b5d9fa0506..8d263ef368 100644 --- a/viability/src/org/labkey/viability/ViabilityManager.java +++ b/viability/src/org/labkey/viability/ViabilityManager.java @@ -412,12 +412,12 @@ private static SQLFragment specimenAggregates(ViabilityAssaySchema schema, ExpRu { // New viability.resultspecimens are added by the LetvinController.CreateVialsAction.importSpecimens() method // We need to re-generate the group-concat of the specimen IDs. - SQLFragment specimenID = new SQLFragment(columnMap.get(specimenId).getAlias()); - SQLFragment specimenIDs = schema.getDbSchema().getSqlDialect().getGroupConcat(specimenID, true, true); + var specimenID = columnMap.get(specimenId).getAlias(); + SQLFragment specimenIDs = schema.getDbSchema().getSqlDialect().getGroupConcat(specimenID.getSql(), true, true); groupFrag.append(" ").append(specimenIDs).append(" AS SpecimenIDs,\n"); - SQLFragment guid = new SQLFragment(columnMap.get(globalUniqueId).getAlias()); - SQLFragment specimenMatches = schema.getDbSchema().getSqlDialect().getGroupConcat(guid, true, true); + var guid = columnMap.get(globalUniqueId).getAlias(); + SQLFragment specimenMatches = schema.getDbSchema().getSqlDialect().getGroupConcat(guid.getSql(), true, true); groupFrag.append(" ").append(specimenMatches).append(" AS SpecimenMatches\n"); } else From 3baceb97b74c47d2bd08922784cb7a7fa199f1db Mon Sep 17 00:00:00 2001 From: Matthew Bellew Date: Wed, 2 Apr 2025 18:46:53 -0700 Subject: [PATCH 2/8] DatabaseIdentifier.getString() -> getid() some fuzz testing --- flow/src/org/labkey/flow/query/FlowSchema.java | 2 +- ms2/src/org/labkey/ms2/ProteinListDisplayColumn.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/flow/src/org/labkey/flow/query/FlowSchema.java b/flow/src/org/labkey/flow/query/FlowSchema.java index 8e588c1bac..b4bc002fe7 100644 --- a/flow/src/org/labkey/flow/query/FlowSchema.java +++ b/flow/src/org/labkey/flow/query/FlowSchema.java @@ -554,7 +554,7 @@ public void addAllowablePermission(Class permission) BaseColumnInfo addExpColumn(@NotNull ColumnInfo underlyingColumn) { - ExprColumn ret = new ExprColumn(this, underlyingColumn.getAlias().getString(), underlyingColumn.getValueSql(ExprColumn.STR_TABLE_ALIAS), underlyingColumn.getJdbcType()); + ExprColumn ret = new ExprColumn(this, underlyingColumn.getAlias().getId(), underlyingColumn.getValueSql(ExprColumn.STR_TABLE_ALIAS), underlyingColumn.getJdbcType()); ret.copyAttributesFrom(underlyingColumn); ret.setHidden(underlyingColumn.isHidden()); if (underlyingColumn.getFk() instanceof RowIdForeignKey) diff --git a/ms2/src/org/labkey/ms2/ProteinListDisplayColumn.java b/ms2/src/org/labkey/ms2/ProteinListDisplayColumn.java index c1a91ae393..0d54e2b598 100644 --- a/ms2/src/org/labkey/ms2/ProteinListDisplayColumn.java +++ b/ms2/src/org/labkey/ms2/ProteinListDisplayColumn.java @@ -272,6 +272,6 @@ private void writeInfo(ProteinSummary summary, Writer out, ActionURL url, int gr public void setColumnInfo(ColumnInfo colInfo) { _columnInfo = colInfo; - _columnName = colInfo.getAlias().getString(); + _columnName = colInfo.getAlias().getId(); } } From f47ab05053d5c38a3fde09afa7bc4b4614929693 Mon Sep 17 00:00:00 2001 From: labkey-matthewb Date: Sun, 6 Apr 2025 12:02:10 -0700 Subject: [PATCH 3/8] search for "+ col.getAlias() +" (implicit .toString()) --- .../labkey/ms2/peptideview/QueryPeptideMS2RunView.java | 2 +- .../ms2/peptideview/QueryProteinGroupMS2RunView.java | 2 +- .../org/labkey/ms2/query/ComparePeptideTableInfo.java | 6 ++++-- .../ms2/query/CompareProteinProphetTableInfo.java | 6 ++++-- ms2/src/org/labkey/ms2/query/MS2Schema.java | 2 +- .../src/org/labkey/viability/ViabilityManager.java | 10 +++++----- 6 files changed, 16 insertions(+), 12 deletions(-) diff --git a/ms2/src/org/labkey/ms2/peptideview/QueryPeptideMS2RunView.java b/ms2/src/org/labkey/ms2/peptideview/QueryPeptideMS2RunView.java index 5fd7c32119..939b6d0e61 100644 --- a/ms2/src/org/labkey/ms2/peptideview/QueryPeptideMS2RunView.java +++ b/ms2/src/org/labkey/ms2/peptideview/QueryPeptideMS2RunView.java @@ -122,7 +122,7 @@ public SQLFragment getProteins(ActionURL queryUrl, MS2Run run, MS2Controller.Cha } else { - result = new SQLFragment("SELECT " + desiredCol.getAlias() + " FROM ("); + result = new SQLFragment("SELECT ").appendIdentifier(desiredCol.getAlias()).append(" FROM ("); } result.append(sql); result.append(") x"); diff --git a/ms2/src/org/labkey/ms2/peptideview/QueryProteinGroupMS2RunView.java b/ms2/src/org/labkey/ms2/peptideview/QueryProteinGroupMS2RunView.java index 65f9ac65c8..bbdb13a454 100644 --- a/ms2/src/org/labkey/ms2/peptideview/QueryProteinGroupMS2RunView.java +++ b/ms2/src/org/labkey/ms2/peptideview/QueryProteinGroupMS2RunView.java @@ -92,7 +92,7 @@ public SQLFragment getProteins(ActionURL queryUrl, MS2Run run, MS2Controller.Cha ColumnInfo desiredCol = pair.first; SQLFragment sql = pair.second; - SQLFragment result = new SQLFragment("SELECT " + desiredCol.getAlias() + " FROM ("); + SQLFragment result = new SQLFragment("SELECT ").appendIdentifier(desiredCol.getAlias()).append(" FROM ("); result.append(sql); result.append(") x"); return result; diff --git a/ms2/src/org/labkey/ms2/query/ComparePeptideTableInfo.java b/ms2/src/org/labkey/ms2/query/ComparePeptideTableInfo.java index 7891f64655..89f61248d9 100644 --- a/ms2/src/org/labkey/ms2/query/ComparePeptideTableInfo.java +++ b/ms2/src/org/labkey/ms2/query/ComparePeptideTableInfo.java @@ -107,7 +107,8 @@ public TableInfo getLookupTableInfo() { runCountSQL.append(separator); separator = " + "; - runCountSQL.append("CASE WHEN " + runCol.getAlias() + "$.RowId IS NULL THEN 0 ELSE 1 END "); + // TODO Guessing the lookup column alias? + runCountSQL.append("CASE WHEN " + runCol.getAlias().getId() + "$.RowId IS NULL THEN 0 ELSE 1 END "); } runCountSQL.append(")"); ExprColumn runCount = new ExprColumn(this, "RunCount", runCountSQL, JdbcType.INTEGER, runColumns.toArray(new ColumnInfo[runColumns.size()])); @@ -120,7 +121,8 @@ public TableInfo getLookupTableInfo() { patternSQL.append(separator); separator = " + "; - patternSQL.append("CASE WHEN " + runCol.getAlias() + "$.RowId IS NULL THEN 0 ELSE "); + // TODO Guessing the lookup column alias? + patternSQL.append("CASE WHEN " + runCol.getAlias().getId() + "$.RowId IS NULL THEN 0 ELSE "); patternSQL.appendValue(1 << offset); patternSQL.append(" END "); offset++; diff --git a/ms2/src/org/labkey/ms2/query/CompareProteinProphetTableInfo.java b/ms2/src/org/labkey/ms2/query/CompareProteinProphetTableInfo.java index af61825380..a2401153e5 100644 --- a/ms2/src/org/labkey/ms2/query/CompareProteinProphetTableInfo.java +++ b/ms2/src/org/labkey/ms2/query/CompareProteinProphetTableInfo.java @@ -123,7 +123,8 @@ public TableInfo getLookupTableInfo() { runCountSQL.append(separator); separator = " + "; - runCountSQL.append("CASE WHEN " + runCol.getAlias() + "$.RowId IS NULL THEN 0 ELSE 1 END "); + // TODO Guessing the lookup column alias? + runCountSQL.append("CASE WHEN " + runCol.getAlias().getId() + "$.RowId IS NULL THEN 0 ELSE 1 END "); } runCountSQL.append(")"); ExprColumn runCount = new ExprColumn(this, "RunCount", runCountSQL, JdbcType.INTEGER, runColumns.toArray(new ColumnInfo[runColumns.size()])); @@ -136,7 +137,8 @@ public TableInfo getLookupTableInfo() { patternSQL.append(separator); separator = " + "; - patternSQL.append("CASE WHEN " + runCol.getAlias() + "$.RowId IS NULL THEN 0 ELSE "); + // TODO Guessing the lookup column alias? + patternSQL.append("CASE WHEN " + runCol.getAlias().getId() + "$.RowId IS NULL THEN 0 ELSE "); patternSQL.appendValue(1 << offset); patternSQL.append(" END "); offset++; diff --git a/ms2/src/org/labkey/ms2/query/MS2Schema.java b/ms2/src/org/labkey/ms2/query/MS2Schema.java index 7faa6a6bab..f5734fe363 100644 --- a/ms2/src/org/labkey/ms2/query/MS2Schema.java +++ b/ms2/src/org/labkey/ms2/query/MS2Schema.java @@ -1085,7 +1085,7 @@ public StringExpression getURL(ColumnInfo parent) ColumnInfo proteinGroupColumn = proteinGroupMembershipTable.getColumn("ProteinGroupId"); SQLFragment selectSQL = QueryService.get().getSelectSQL(proteinGroupMembershipTable, Collections.singleton(proteinGroupColumn), null, null, Table.ALL_ROWS, Table.NO_OFFSET, false); - SQLFragment filterSQL = new SQLFragment("ProteinGroupId IN (SELECT " + proteinGroupColumn.getAlias() + " FROM ("); + SQLFragment filterSQL = new SQLFragment("ProteinGroupId IN (SELECT ").appendIdentifier(proteinGroupColumn.getAlias()).append(" FROM ("); filterSQL.append(selectSQL); filterSQL.append(") x)"); diff --git a/viability/src/org/labkey/viability/ViabilityManager.java b/viability/src/org/labkey/viability/ViabilityManager.java index 070a8da85f..701563f7dc 100644 --- a/viability/src/org/labkey/viability/ViabilityManager.java +++ b/viability/src/org/labkey/viability/ViabilityManager.java @@ -403,10 +403,10 @@ private static SQLFragment specimenAggregates(ViabilityAssaySchema schema, ExpRu SQLFragment groupFrag = new SQLFragment(); groupFrag.append("SELECT\n"); groupFrag.append(" {fn now()} AS SpecimenAggregatesUpdated,\n"); - groupFrag.append(" " + columnMap.get(resultId).getAlias() + " AS ResultID,\n"); - groupFrag.append(" SUM(" + columnMap.get(volume).getAlias() + ") AS OriginalCells,\n"); - groupFrag.append(" COUNT(" + columnMap.get(specimenId).getAlias() + ") AS SpecimenCount,\n"); - groupFrag.append(" COUNT(" + columnMap.get(globalUniqueId).getAlias() + ") AS SpecimenMatchCount,\n"); + groupFrag.append(" ").appendIdentifier(columnMap.get(resultId).getAlias()).append(" AS ResultID,\n"); + groupFrag.append(" SUM(").appendIdentifier(columnMap.get(volume).getAlias()).append(") AS OriginalCells,\n"); + groupFrag.append(" COUNT(").appendIdentifier(columnMap.get(specimenId).getAlias()).append(") AS SpecimenCount,\n"); + groupFrag.append(" COUNT(").appendIdentifier(columnMap.get(globalUniqueId).getAlias()).append(") AS SpecimenMatchCount,\n"); if (schema.getDbSchema().getSqlDialect().supportsGroupConcat()) { @@ -428,7 +428,7 @@ private static SQLFragment specimenAggregates(ViabilityAssaySchema schema, ExpRu groupFrag.append("FROM (\n"); groupFrag.append(sub); - groupFrag.append(") y \nGROUP BY " + columnMap.get(resultId).getAlias()); + groupFrag.append(") y \nGROUP BY ").appendIdentifier(columnMap.get(resultId).getAlias()); // Debug the specimen aggregate queries if (LOG.isDebugEnabled()) From 661645e113d3e01915878da5a45c18b0a9d85f4a Mon Sep 17 00:00:00 2001 From: labkey-matthewb Date: Mon, 7 Apr 2025 13:01:40 -0700 Subject: [PATCH 4/8] getProperties() --- .../executescript/SamplesConfirmGridView.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/flow/src/org/labkey/flow/controllers/executescript/SamplesConfirmGridView.java b/flow/src/org/labkey/flow/controllers/executescript/SamplesConfirmGridView.java index 80a4d4baad..492fd8030a 100644 --- a/flow/src/org/labkey/flow/controllers/executescript/SamplesConfirmGridView.java +++ b/flow/src/org/labkey/flow/controllers/executescript/SamplesConfirmGridView.java @@ -38,6 +38,7 @@ import org.labkey.api.data.ResultsImpl; import org.labkey.api.data.SimpleDisplayColumn; import org.labkey.api.data.TableInfo; +import org.labkey.api.data.dialect.SqlDialect; import org.labkey.api.exp.api.ExpData; import org.labkey.api.query.FieldKey; import org.labkey.api.security.User; @@ -94,12 +95,11 @@ public SamplesConfirmGridView(User user, Container container, SelectedSamples da public SamplesConfirmGridView(User user, Container container, Collection keywords, List samples, boolean resolving, Map rows, Errors errors) { super(new SamplesConfirmDataRegion(), errors); - boolean hasGroupInfo = samples.get(0) instanceof Workspace.SampleInfo; // Create the list of columns keywords = KeywordUtil.filterHidden(keywords); - Map columns = new LinkedHashMap<>(); + Map columns = new LinkedHashMap<>(); if (resolving) { columns.put(MATCHED_FLAG_FIELD_KEY, new BaseColumnInfo(MATCHED_FLAG_FIELD_KEY, JdbcType.BOOLEAN)); @@ -116,7 +116,6 @@ public SamplesConfirmGridView(User user, Container container, Collection { FieldKey fieldKey = new FieldKey(null, keyword); var col = new BaseColumnInfo(fieldKey, JdbcType.VARCHAR); - col.setAlias(fieldKey.getName()); if (!columns.containsKey(fieldKey)) { uniqueKeywords.add(keyword); @@ -127,8 +126,9 @@ public SamplesConfirmGridView(User user, Container container, Collection LOG.warn("Ignoring duplicate columns for FieldKey '" + fieldKey + "', got: '" + col.getName() + "' and '" + columns.get(fieldKey).getName() + "'"); } } - + // these are "fake" columns (set fake aliases) int columnCount = columns.size(); + columns.values().forEach(c -> c.setAlias(SqlDialect.makeDatabaseIdentifier(c.getName(), null))); List columnNames = columns.keySet().stream().map(FieldKey::getName).collect(Collectors.toList()); RowMapFactory factory = new RowMapFactory<>(columnNames); @@ -189,7 +189,7 @@ public SamplesConfirmGridView(User user, Container container, Collection // Initialize the ResultSet and DataRegion ResultSet rs = CachedResultSets.create(maps); - Results results = new ResultsImpl(rs, columns); + Results results = new ResultsImpl(rs, (Map)(Map)columns); setResults(results); SamplesConfirmDataRegion dr = (SamplesConfirmDataRegion)getDataRegion(); From b53a72a16249bde481462646b606a82e5317c6d4 Mon Sep 17 00:00:00 2001 From: labkey-matthewb Date: Mon, 7 Apr 2025 17:22:20 -0700 Subject: [PATCH 5/8] replace .get(column.getAlias()) --- luminex/src/org/labkey/luminex/LuminexManager.java | 14 +++++++------- .../labkey/ms2/AbstractPeptideDisplayColumn.java | 2 +- .../org/labkey/ms2/GroupNumberDisplayColumn.java | 8 ++------ 3 files changed, 10 insertions(+), 14 deletions(-) diff --git a/luminex/src/org/labkey/luminex/LuminexManager.java b/luminex/src/org/labkey/luminex/LuminexManager.java index 1e10269021..0c025c7266 100644 --- a/luminex/src/org/labkey/luminex/LuminexManager.java +++ b/luminex/src/org/labkey/luminex/LuminexManager.java @@ -687,16 +687,16 @@ private Set getWellKeysForRun(Integer runId, ExpProtocol protocol, Conta new TableSelector(table, cols.values(), filter, null).forEachMap(row -> { - String readerSerialNumber = (String)row.get(cols.get(readerSerialNumberFK).getAlias()); - Date acquisitionDate = (Date)row.get(cols.get(acquisitionDateFK).getAlias()); + String readerSerialNumber = (String)cols.get(readerSerialNumberFK).getValue(row); + Date acquisitionDate = (Date)cols.get(acquisitionDateFK).getValue(row); String dataFileHeaderKey = getDataFileHeaderKey(readerSerialNumber, acquisitionDate); - String analyteName = (String)row.get(cols.get(analyteFK).getAlias()); - String description = (String)row.get(cols.get(descriptionFK).getAlias()); - String type = (String)row.get(cols.get(typeFK).getAlias()); - Object dilutionObj = row.get(cols.get(dilutionFK).getAlias()); + String analyteName = (String)cols.get(analyteFK).getValue(row); + String description = (String)cols.get(descriptionFK).getValue(row); + String type = (String)cols.get(typeFK).getValue(row); + Object dilutionObj = cols.get(dilutionFK).getValue(row); Double dilution = dilutionObj != null ? Double.parseDouble(dilutionObj.toString()) : null; - String well = onlyExcludedWells ? (String)row.get(cols.get(wellFK).getAlias()) : null; + String well = onlyExcludedWells ? (String)cols.get(wellFK).getValue(row) : null; excludedWellKeys.add(createWellKey(dataFileHeaderKey, analyteName, description, type, dilution, well)); }); diff --git a/ms2/src/org/labkey/ms2/AbstractPeptideDisplayColumn.java b/ms2/src/org/labkey/ms2/AbstractPeptideDisplayColumn.java index 028bee9ddf..5fb38a10e0 100644 --- a/ms2/src/org/labkey/ms2/AbstractPeptideDisplayColumn.java +++ b/ms2/src/org/labkey/ms2/AbstractPeptideDisplayColumn.java @@ -31,7 +31,7 @@ protected Object getColumnValue(RenderContext ctx, ColumnInfo colInfo, String... Object result = null; if (colInfo != null) { - result = ctx.get(colInfo.getAlias()); + result = colInfo.getValue(ctx); } if (result == null) { diff --git a/ms2/src/org/labkey/ms2/GroupNumberDisplayColumn.java b/ms2/src/org/labkey/ms2/GroupNumberDisplayColumn.java index 46e82974df..81068fe693 100644 --- a/ms2/src/org/labkey/ms2/GroupNumberDisplayColumn.java +++ b/ms2/src/org/labkey/ms2/GroupNumberDisplayColumn.java @@ -94,17 +94,13 @@ public HtmlString getFormattedHtml(RenderContext ctx) } else { - if (row.get(_collectionIdColumn.getAlias()) == null) - { - return HtmlString.EMPTY_STRING; - } - Number collectionIdObject = (Number) row.get(_collectionIdColumn.getAlias()); + Number collectionIdObject = (Number) _collectionIdColumn.getValue(row); if (collectionIdObject == null) { return HtmlString.EMPTY_STRING; } collectionId = collectionIdObject.longValue(); - Number groupNumberObject = (Number) row.get(getColumnInfo().getAlias()); + Number groupNumberObject = (Number) getColumnInfo().getValue(row); if (groupNumberObject == null) { return HtmlString.EMPTY_STRING; From 7930eafc60f3b902b57ff7c293c6d5af011d665f Mon Sep 17 00:00:00 2001 From: labkey-matthewb Date: Wed, 9 Apr 2025 09:45:39 -0700 Subject: [PATCH 6/8] StringBuilder->SQLFragment also assert in DatabaseIdentifier.toString() to find teamcity failures --- .../ChooseRunsToAnalyzeForm.java | 9 +++++---- .../src/org/labkey/flow/query/FlowSchema.java | 2 +- .../labkey/luminex/query/GuideSetTable.java | 4 ++-- ms2/src/org/labkey/ms2/MS2Importer.java | 20 +++++++++---------- ms2/src/org/labkey/ms2/PeptideManager.java | 14 ++++++------- .../labkey/ms2/peptideview/PeptidesView.java | 5 +++-- .../annotation/CustomAnnotationType.java | 7 ++++--- .../protein/search/PeptideSequenceFilter.java | 14 ++++++------- 8 files changed, 39 insertions(+), 36 deletions(-) diff --git a/flow/src/org/labkey/flow/controllers/executescript/ChooseRunsToAnalyzeForm.java b/flow/src/org/labkey/flow/controllers/executescript/ChooseRunsToAnalyzeForm.java index c79d58e1de..cb77bf4c09 100644 --- a/flow/src/org/labkey/flow/controllers/executescript/ChooseRunsToAnalyzeForm.java +++ b/flow/src/org/labkey/flow/controllers/executescript/ChooseRunsToAnalyzeForm.java @@ -21,6 +21,7 @@ import org.apache.logging.log4j.LogManager; import org.labkey.api.data.DataRegionSelection; import org.labkey.api.data.Filter; +import org.labkey.api.data.SQLFragment; import org.labkey.api.data.SimpleFilter; import org.labkey.api.data.TableInfo; import org.labkey.api.query.FieldKey; @@ -226,7 +227,7 @@ public SimpleFilter getBaseFilter(TableInfo table, Filter filter) List runs = FlowRun.getRunsForContainer(getContainer(), FlowProtocolStep.keywords); int runCount = 0; - StringBuilder sql = new StringBuilder("RowId IN ("); + SQLFragment sql = new SQLFragment("RowId IN ("); String comma = ""; for (FlowRun run : runs) { @@ -234,17 +235,17 @@ public SimpleFilter getBaseFilter(TableInfo table, Filter filter) continue; sql.append(comma); comma = ","; - sql.append(run.getRunId()); + sql.appendValue(run.getRunId()); runCount ++; } sql.append(")"); if (runCount == 0) { - ret.addWhereClause("1 = 0", null); + ret.addWhereClause(new SQLFragment("1 = 0")); } else { - ret.addWhereClause(sql.toString(), new Object[0], FieldKey.fromParts("RowId")); + ret.addWhereClause(sql, FieldKey.fromParts("RowId")); } return ret; } diff --git a/flow/src/org/labkey/flow/query/FlowSchema.java b/flow/src/org/labkey/flow/query/FlowSchema.java index b4bc002fe7..4bc6a0dfae 100644 --- a/flow/src/org/labkey/flow/query/FlowSchema.java +++ b/flow/src/org/labkey/flow/query/FlowSchema.java @@ -1180,7 +1180,7 @@ public void addVocabularyDomains() @Override public void addCondition(@NotNull SQLFragment condition, FieldKey... fieldKeys) { - _filter.addWhereClause(condition.getSQL(), condition.getParams().toArray(), fieldKeys); + _filter.addWhereClause(condition, fieldKeys); } @Override diff --git a/luminex/src/org/labkey/luminex/query/GuideSetTable.java b/luminex/src/org/labkey/luminex/query/GuideSetTable.java index 4aa757fca9..325188a24c 100644 --- a/luminex/src/org/labkey/luminex/query/GuideSetTable.java +++ b/luminex/src/org/labkey/luminex/query/GuideSetTable.java @@ -620,10 +620,10 @@ private void removeGuideSetQCFlagsByFlagType(int guideSetRowId, String flagType) inClauseSql.append(ExperimentService.get().getTinfoAssayQCFlag(), "qc"); inClauseSql.append(" ON a.AnalyteId = qc.IntKey1 AND a.").append(colName).append(" = qc.IntKey2 "); inClauseSql.append(" WHERE a.GuideSetId = ? AND qc.FlagType = ?)"); - Object[] params = new Object[]{guideSetRowId, flagType}; + inClauseSql.addAll(guideSetRowId, flagType); SimpleFilter filter = new SimpleFilter(); - filter.addWhereClause(inClauseSql.getSQL(), params, FieldKey.fromParts("RowId")); + filter.addWhereClause(inClauseSql, FieldKey.fromParts("RowId")); Table.delete(ExperimentService.get().getTinfoAssayQCFlag(), filter); } } diff --git a/ms2/src/org/labkey/ms2/MS2Importer.java b/ms2/src/org/labkey/ms2/MS2Importer.java index d130820cb4..9f20716e33 100644 --- a/ms2/src/org/labkey/ms2/MS2Importer.java +++ b/ms2/src/org/labkey/ms2/MS2Importer.java @@ -296,7 +296,7 @@ protected int createRun() runMap.put("Status", IMPORT_STARTED); runMap.put("Type", getType()); // TODO: Change how we handle type: For pepXML, this is null at this point... okay for Comet - Map returnMap = Table.insert(_user, MS2Manager.getTableInfoRuns(), runMap); + var returnMap = Table.insert(_user, MS2Manager.getTableInfoRuns(), runMap); return (Integer)returnMap.get("Run"); } @@ -441,11 +441,11 @@ WHERE Fraction IN (SELECT Fraction FROM ms2.Fractions WHERE Run = ?) AND } - private static String _updateSwissProtSeqIdSql; + private static SQLFragment _updateSwissProtSeqIdSql; static { - StringBuilder sql = new StringBuilder(); + SQLFragment sql = new SQLFragment(); /* UPDATE ms2.PeptidesData SET SeqId = (SELECT CASE (SELECT Count(*) FROM @@ -483,10 +483,10 @@ WHERE Fraction IN (SELECT Fraction FROM ms2.Fractions WHERE Run = ?) AND sql.append(")"); sql.append(" WHERE SeqId IS NULL AND Fraction = ?"); - _updateSwissProtSeqIdSql = sql.toString(); + _updateSwissProtSeqIdSql = sql; } - private static final String _updateSeqIdEndOfLookupStringSql; + private static SQLFragment _updateSeqIdEndOfLookupStringSql; static { @@ -540,14 +540,14 @@ WHERE Fraction IN (SELECT Fraction FROM ms2.Fractions WHERE Run = ?) AND sql.append(" ms2.PeptidesData.Protein = x.Protein AND\n"); sql.append(" ms2.PeptidesData.Fraction = ?"); - _updateSeqIdEndOfLookupStringSql = sql.getSQL(); + _updateSeqIdEndOfLookupStringSql = sql; } - private static final String _updateSeqIdInexactMatchSql; + private static final SQLFragment _updateSeqIdInexactMatchSql; static { - StringBuilder sql = new StringBuilder(); + SQLFragment sql = new SQLFragment(); /* UPDATE ms2.peptidesdata p SET SeqId = ( @@ -577,10 +577,10 @@ WHERE Fraction IN (SELECT Fraction FROM ms2.Fractions WHERE Run = ?) AND sql.append(" END)"); sql.append(" WHERE SeqId IS NULL AND Fraction = ?"); - _updateSeqIdInexactMatchSql = sql.toString(); + _updateSeqIdInexactMatchSql = sql; } - private static SQLFragment _updateSequencePositionSql; + private static final SQLFragment _updateSequencePositionSql; static { diff --git a/ms2/src/org/labkey/ms2/PeptideManager.java b/ms2/src/org/labkey/ms2/PeptideManager.java index 4e1113a643..f3211271a4 100644 --- a/ms2/src/org/labkey/ms2/PeptideManager.java +++ b/ms2/src/org/labkey/ms2/PeptideManager.java @@ -226,18 +226,18 @@ public static List getProteinsContainingPeptide(MS2Peptide peptide, int public static void addRunCondition(SimpleFilter filter, @Nullable String runTableName, MS2Run... runs) { String columnName = (runTableName == null ? "Run" : runTableName + ".Run"); - StringBuilder sb = new StringBuilder(); - sb.append(columnName); - sb.append(" IN ("); + SQLFragment sql = new SQLFragment(); + sql.append(columnName); + sql.append(" IN ("); String separator = ""; for (MS2Run run : runs) { - sb.append(separator); + sql.append(separator); separator = ", "; - sb.append(run.getRun()); + sql.appendValue(run.getRun()); } - sb.append(")"); - filter.addWhereClause(sb.toString(), new Object[0], FieldKey.fromString("Run")); + sql.append(")"); + filter.addWhereClause(sql, FieldKey.fromString("Run")); } // TODO: runTableName is null in all cases... remove parameter? diff --git a/ms2/src/org/labkey/ms2/peptideview/PeptidesView.java b/ms2/src/org/labkey/ms2/peptideview/PeptidesView.java index cd962ce1ee..770398b4be 100644 --- a/ms2/src/org/labkey/ms2/peptideview/PeptidesView.java +++ b/ms2/src/org/labkey/ms2/peptideview/PeptidesView.java @@ -18,6 +18,7 @@ import org.labkey.api.data.Container; import org.labkey.api.data.ContainerFilter; import org.labkey.api.data.ContainerManager; +import org.labkey.api.data.SQLFragment; import org.labkey.api.data.SimpleFilter; import org.labkey.api.data.Sort; import org.labkey.api.data.TableInfo; @@ -80,7 +81,7 @@ protected TableInfo createTable() ContainerManager.getAllChildren(getViewContext().getContainer(), getViewContext().getUser()) : Collections.singleton(getViewContext().getContainer()); - StringBuilder sql = new StringBuilder("Fraction IN (SELECT Fraction FROM ms2.Fractions WHERE Run IN (SELECT Run FROM ms2.Runs WHERE Container IN ("); + SQLFragment sql = new SQLFragment("Fraction IN (SELECT Fraction FROM ms2.Fractions WHERE Run IN (SELECT Run FROM ms2.Runs WHERE Container IN ("); String sep = ""; for(Container container : containers) { @@ -91,7 +92,7 @@ protected TableInfo createTable() sep = ","; } sql.append(")))"); - filter.addWhereClause(sql.toString(), null, FieldKey.fromParts("Fraction")); + filter.addWhereClause(sql, null, FieldKey.fromParts("Fraction")); List defCols = new ArrayList<>(); defCols.add(FieldKey.fromParts("Fraction", "Run", "Description")); diff --git a/protein/api-src/org/labkey/api/protein/annotation/CustomAnnotationType.java b/protein/api-src/org/labkey/api/protein/annotation/CustomAnnotationType.java index 7a3e5ba570..58e5808c77 100644 --- a/protein/api-src/org/labkey/api/protein/annotation/CustomAnnotationType.java +++ b/protein/api-src/org/labkey/api/protein/annotation/CustomAnnotationType.java @@ -17,6 +17,7 @@ package org.labkey.api.protein.annotation; import org.labkey.api.data.ColumnInfo; +import org.labkey.api.data.SQLFragment; import org.labkey.api.protein.ProteinSchema; import org.labkey.api.query.ExprColumn; import org.labkey.api.util.SafeToRenderEnum; @@ -60,9 +61,9 @@ public String validateUserLookupString(String lookupString) return null; } - public String getFirstSelectForSeqId() + public SQLFragment getFirstSelectForSeqId() { - StringBuilder sql = new StringBuilder(); + SQLFragment sql = new SQLFragment(); sql.append("(SELECT MIN(Identifier) FROM "); sql.append(ProteinSchema.getTableInfoIdentifiers()); sql.append(" i, "); @@ -72,7 +73,7 @@ public String getFirstSelectForSeqId() sql.append("' AND i.SeqId = "); sql.append(ExprColumn.STR_TABLE_ALIAS); sql.append(".SeqId)"); - return sql.toString(); + return sql; } private final String _description; diff --git a/protein/api-src/org/labkey/api/protein/search/PeptideSequenceFilter.java b/protein/api-src/org/labkey/api/protein/search/PeptideSequenceFilter.java index f8580a93f4..079579630a 100644 --- a/protein/api-src/org/labkey/api/protein/search/PeptideSequenceFilter.java +++ b/protein/api-src/org/labkey/api/protein/search/PeptideSequenceFilter.java @@ -90,19 +90,19 @@ public List getFieldKeys() @Override public SQLFragment toSQLFragment(Map columnMap, SqlDialect dialect) { - if(null == _sequences) + if (null == _sequences) return null; // OR together the sequence conditions - StringBuilder sql = new StringBuilder(); - for(int idx = 0; idx < _sequences.length; ++idx) + SQLFragment sql = new SQLFragment(); + for (int idx = 0; idx < _sequences.length; ++idx) { if(idx > 0) sql.append(" OR "); sql.append(genSeqPredicate(_sequences[idx], null)); } - return new SQLFragment(sql.toString()); + return sql; } @Override @@ -111,13 +111,13 @@ public String getLabKeySQLWhereClause(Map column throw new UnsupportedOperationException(); } - private String genSeqPredicate(String sequence, String pepDataAlias) + private SQLFragment genSeqPredicate(String sequence, String pepDataAlias) { //force sequence to upper-case for case-sensitive DBs like PostgreSQL sequence = sequence.toUpperCase(); //always add a condition for pd.TrimmedPeptide using normalized version of sequence - StringBuilder sql = new StringBuilder(null == pepDataAlias ? "(" + _sequenceColumnName + SQLFragment sql = new SQLFragment(null == pepDataAlias ? "(" + _sequenceColumnName : "(" + pepDataAlias + "." + _sequenceColumnName); if (_exact) @@ -143,6 +143,6 @@ private String genSeqPredicate(String sequence, String pepDataAlias) sql.append(")"); - return sql.toString(); + return sql; } } From e6ec1640bc3048780bf4f3d8ffad2f422938cad7 Mon Sep 17 00:00:00 2001 From: Matthew Bellew Date: Wed, 9 Apr 2025 13:00:14 -0700 Subject: [PATCH 7/8] StringBuilder->SQLFragment --- ms2/src/org/labkey/ms2/MS2Importer.java | 17 ++++--- .../annotation/CustomAnnotationType.java | 48 +++++++++---------- 2 files changed, 34 insertions(+), 31 deletions(-) diff --git a/ms2/src/org/labkey/ms2/MS2Importer.java b/ms2/src/org/labkey/ms2/MS2Importer.java index 9f20716e33..4e41057781 100644 --- a/ms2/src/org/labkey/ms2/MS2Importer.java +++ b/ms2/src/org/labkey/ms2/MS2Importer.java @@ -296,7 +296,7 @@ protected int createRun() runMap.put("Status", IMPORT_STARTED); runMap.put("Type", getType()); // TODO: Change how we handle type: For pepXML, this is null at this point... okay for Comet - var returnMap = Table.insert(_user, MS2Manager.getTableInfoRuns(), runMap); + Map returnMap = Table.insert(_user, MS2Manager.getTableInfoRuns(), runMap); return (Integer)returnMap.get("Run"); } @@ -441,7 +441,7 @@ WHERE Fraction IN (SELECT Fraction FROM ms2.Fractions WHERE Run = ?) AND } - private static SQLFragment _updateSwissProtSeqIdSql; + private static String _updateSwissProtSeqIdSql; static { @@ -483,10 +483,10 @@ WHERE Fraction IN (SELECT Fraction FROM ms2.Fractions WHERE Run = ?) AND sql.append(")"); sql.append(" WHERE SeqId IS NULL AND Fraction = ?"); - _updateSwissProtSeqIdSql = sql; + _updateSwissProtSeqIdSql = sql.getSQL(); } - private static SQLFragment _updateSeqIdEndOfLookupStringSql; + private static String _updateSeqIdEndOfLookupStringSql; static { @@ -540,10 +540,10 @@ WHERE Fraction IN (SELECT Fraction FROM ms2.Fractions WHERE Run = ?) AND sql.append(" ms2.PeptidesData.Protein = x.Protein AND\n"); sql.append(" ms2.PeptidesData.Fraction = ?"); - _updateSeqIdEndOfLookupStringSql = sql; + _updateSeqIdEndOfLookupStringSql = sql.getSQL(); } - private static final SQLFragment _updateSeqIdInexactMatchSql; + private static final String _updateSeqIdInexactMatchSql; static { @@ -577,7 +577,7 @@ WHERE Fraction IN (SELECT Fraction FROM ms2.Fractions WHERE Run = ?) AND sql.append(" END)"); sql.append(" WHERE SeqId IS NULL AND Fraction = ?"); - _updateSeqIdInexactMatchSql = sql; + _updateSeqIdInexactMatchSql = sql.getSQL(); } private static final SQLFragment _updateSequencePositionSql; @@ -636,18 +636,21 @@ protected void updatePeptideColumns(MS2Progress progress) for (int fastaId : run.getFastaIds()) { + assert 3 == StringUtils.countMatches(_updateSwissProtSeqIdSql,"?"); int rowCount = executor.execute(_updateSwissProtSeqIdSql, fastaId, fastaId, fraction.getFraction()); _log.info("Set SeqId values for " + rowCount + " peptides" + (fractionCount == 1 ? "" : (" for fraction " + ++i + " of " + fractionCount)) + " based on protein identifier match from SwissProt database for FASTA id " + fastaId); } for (int fastaId : run.getFastaIds()) { + assert 3 == StringUtils.countMatches(_updateSeqIdEndOfLookupStringSql, "?"); int rowCount = executor.execute(_updateSeqIdEndOfLookupStringSql, fraction.getFraction(), fastaId, fraction.getFraction()); _log.info("Set SeqId values for " + rowCount + " peptides" + (fractionCount == 1 ? "" : (" for fraction " + ++i + " of " + fractionCount)) + " based on trailing FASTA header line for FASTA id " + fastaId); } for (int fastaId : run.getFastaIds()) { + assert 2 == StringUtils.countMatches(_updateSpPrefixSeqIdSql, "?"); int rowCount = executor.execute(_updateSpPrefixSeqIdSql, fraction.getFraction(), fastaId); _log.info("Set SeqId values for " + rowCount + " peptides" + (fractionCount == 1 ? "" : (" for fraction " + ++i + " of " + fractionCount)) + " based on 'sp|' prefix name match for FASTA id " + fastaId); } diff --git a/protein/api-src/org/labkey/api/protein/annotation/CustomAnnotationType.java b/protein/api-src/org/labkey/api/protein/annotation/CustomAnnotationType.java index 58e5808c77..2062c2ab72 100644 --- a/protein/api-src/org/labkey/api/protein/annotation/CustomAnnotationType.java +++ b/protein/api-src/org/labkey/api/protein/annotation/CustomAnnotationType.java @@ -68,9 +68,9 @@ public SQLFragment getFirstSelectForSeqId() sql.append(ProteinSchema.getTableInfoIdentifiers()); sql.append(" i, "); sql.append(ProteinSchema.getTableInfoIdentTypes()); - sql.append(" it WHERE i.IdentTypeId = it.IdentTypeId AND it.Name = '"); - sql.append(_type.toString()); - sql.append("' AND i.SeqId = "); + sql.append(" it WHERE i.IdentTypeId = it.IdentTypeId AND it.Name = "); + sql.appendValue(_type); + sql.append(" AND i.SeqId = "); sql.append(ExprColumn.STR_TABLE_ALIAS); sql.append(".SeqId)"); return sql; @@ -85,34 +85,34 @@ public SQLFragment getFirstSelectForSeqId() _type = type; } - public String getLookupStringSelect(ColumnInfo colSeqId) + public SQLFragment getLookupStringSelect(ColumnInfo colSeqId) { - StringBuilder sb = new StringBuilder("SELECT "); - sb.append(getIdentifierSelectSQL()); - sb.append(" FROM "); - sb.append(ProteinSchema.getTableInfoIdentifiers()); - sb.append(" WHERE SeqId = "); - sb.append(colSeqId.getValueSql(ExprColumn.STR_TABLE_ALIAS)); - sb.append(" AND IdentTypeId IN "); - sb.append(getIdentTypeIdSelect()); - return sb.toString(); + SQLFragment sql = new SQLFragment("SELECT "); + sql.append(getIdentifierSelectSQL()); + sql.append(" FROM "); + sql.append(ProteinSchema.getTableInfoIdentifiers()); + sql.append(" WHERE SeqId = "); + sql.append(colSeqId.getValueSql(ExprColumn.STR_TABLE_ALIAS)); + sql.append(" AND IdentTypeId IN "); + sql.append(getIdentTypeIdSelect()); + return sql; } - public String getSeqIdSelect() + public SQLFragment getSeqIdSelect() { - StringBuilder sb = new StringBuilder(); - sb.append("SELECT SeqId, "); - sb.append(getIdentifierSelectSQL()); - sb.append(" AS Ident FROM "); - sb.append(ProteinSchema.getTableInfoIdentifiers()); - sb.append(" WHERE IdentTypeId IN "); - sb.append(getIdentTypeIdSelect()); - return sb.toString(); + SQLFragment sql = new SQLFragment(); + sql.append("SELECT SeqId, "); + sql.append(getIdentifierSelectSQL()); + sql.append(" AS Ident FROM "); + sql.append(ProteinSchema.getTableInfoIdentifiers()); + sql.append(" WHERE IdentTypeId IN "); + sql.append(getIdentTypeIdSelect()); + return sql; } - protected String getIdentTypeIdSelect() + protected SQLFragment getIdentTypeIdSelect() { - return "(SELECT IdentTypeId FROM " + ProteinSchema.getTableInfoIdentTypes() + " WHERE Name = '" + _type.toString() + "')"; + return new SQLFragment("(SELECT IdentTypeId FROM ").append(ProteinSchema.getTableInfoIdentTypes()).append(" WHERE Name = ").appendValue(_type).append(")"); } public String getDescription() From ba2dd8afff17c93658d100c011bfec5bca1072d3 Mon Sep 17 00:00:00 2001 From: Adam Rauch Date: Wed, 30 Apr 2025 14:18:58 -0700 Subject: [PATCH 8/8] Merge fb_long_identifiers changes into fb_databaseidentifier (#880) --- .../src/org/labkey/flow/reports/FilterFlowReport.java | 3 ++- .../org/labkey/flow/reports/PositivityFlowReport.java | 11 +++-------- ms2/src/org/labkey/ms2/ProteinProphetImporter.java | 6 +++--- ms2/src/org/labkey/ms2/compare/CompareQuery.java | 2 +- .../org/labkey/api/protein/fasta/FastaDbHelper.java | 6 +++--- 5 files changed, 12 insertions(+), 16 deletions(-) diff --git a/flow/src/org/labkey/flow/reports/FilterFlowReport.java b/flow/src/org/labkey/flow/reports/FilterFlowReport.java index f710b25766..7c7e6921aa 100644 --- a/flow/src/org/labkey/flow/reports/FilterFlowReport.java +++ b/flow/src/org/labkey/flow/reports/FilterFlowReport.java @@ -51,6 +51,7 @@ import org.labkey.flow.controllers.well.WellController; import org.labkey.flow.data.FlowProtocol; import org.labkey.flow.data.ICSMetadata; +import org.labkey.flow.persist.FlowManager; import org.labkey.flow.query.FlowSchema; import org.labkey.flow.query.FlowTableType; import org.springframework.beans.PropertyValue; @@ -195,7 +196,7 @@ void addScriptProlog(ViewContext context, StringBuffer sb) // Copied from ScriptEngineReport. private String oldLegalName(FieldKey fkey) { - String r = AliasManager.makeLegalName(StringUtils.join(fkey.getParts(), "_"), null, false, false); + String r = AliasManager.makeLegalName(StringUtils.join(fkey.getParts(), "_"), FlowManager.get().getSchema().getSqlDialect(), false); return ColumnInfo.propNameFromName(r).toLowerCase(); } diff --git a/flow/src/org/labkey/flow/reports/PositivityFlowReport.java b/flow/src/org/labkey/flow/reports/PositivityFlowReport.java index 74f8e05358..0ea120ff95 100644 --- a/flow/src/org/labkey/flow/reports/PositivityFlowReport.java +++ b/flow/src/org/labkey/flow/reports/PositivityFlowReport.java @@ -23,11 +23,9 @@ import org.labkey.api.data.ContainerManager; import org.labkey.api.exp.PropertyDescriptor; import org.labkey.api.exp.PropertyType; -import org.labkey.api.query.AliasManager; import org.labkey.api.query.FieldKey; import org.labkey.api.reports.report.ReportDescriptor; import org.labkey.api.util.LinkBuilder; -import org.labkey.api.util.PageFlowUtil; import org.labkey.api.util.Tuple3; import org.labkey.api.view.ActionURL; import org.labkey.api.view.HtmlView; @@ -41,6 +39,7 @@ import org.labkey.flow.controllers.protocol.ProtocolController; import org.labkey.flow.data.FlowProtocol; import org.labkey.flow.data.ICSMetadata; +import org.labkey.flow.persist.FlowManager; import org.springframework.beans.PropertyValues; import org.springframework.validation.BindException; @@ -50,10 +49,6 @@ import java.util.Collections; import java.util.List; -/** - * User: kevink - * Date: 5/26/11 - */ public class PositivityFlowReport extends FilterFlowReport { public static final String TYPE = "Flow.PositivityReport"; @@ -137,7 +132,7 @@ protected void addSelectList(ViewContext context, String tableName, StringBuilde for (FieldKey fieldKey : getMetadataColumns(metadata)) { - String alias = AliasManager.makeLegalName(fieldKey, null, false); + String alias = FlowManager.get().getSchema().getSqlDialect().makeLegalName(fieldKey, 0); query.append(" ").append(tableName).append(".").append(toSQL(fieldKey)).append(" AS ").append(alias).append(",\n"); } @@ -145,7 +140,7 @@ protected void addSelectList(ViewContext context, String tableName, StringBuilde SubsetSpec subsetParent = getSubsetParent(); String stat = subset + ":Count"; - String parentStat = subsetParent == null ? "Count" : subsetParent.toString() + ":Count"; + String parentStat = subsetParent == null ? "Count" : subsetParent + ":Count"; query.append(" ").append(tableName).append(".Statistic(").append(toSQL(stat)).append(") AS stat,\n"); query.append(" ").append(tableName).append(".Background(").append(toSQL(stat)).append(") AS stat_bg,\n"); diff --git a/ms2/src/org/labkey/ms2/ProteinProphetImporter.java b/ms2/src/org/labkey/ms2/ProteinProphetImporter.java index 35e56c2c6e..a5deb86a66 100644 --- a/ms2/src/org/labkey/ms2/ProteinProphetImporter.java +++ b/ms2/src/org/labkey/ms2/ProteinProphetImporter.java @@ -210,7 +210,7 @@ public MS2Run importFile(ViewBackgroundInfo info, Logger log) throws SQLExceptio long insertStartTime = System.currentTimeMillis(); log.info("Starting to move data into ms2.PeptidesMemberships"); - peptideIndexStmt = connection.prepareStatement("CREATE INDEX idx_" + AliasManager.makeLegalName(peptidesTempTableName,null) + " ON " + peptidesTempTableName + "(TrimmedPeptide, Charge)"); + peptideIndexStmt = connection.prepareStatement("CREATE INDEX idx_" + AliasManager.makeLegalName(peptidesTempTableName, _dialect) + " ON " + peptidesTempTableName + "(TrimmedPeptide, Charge)"); peptideIndexStmt.execute(); // Move the peptide information of the temp table into the real table @@ -231,11 +231,11 @@ public MS2Run importFile(ViewBackgroundInfo info, Logger log) throws SQLExceptio log.info("Starting to move data into ms2.ProteinGroupMemberships"); // Create an index to use for the join with prot.fastasequences - proteinIndexStmt = connection.prepareStatement("CREATE INDEX idx_" + AliasManager.makeLegalName(proteinsTempTableName,null) + " ON " + proteinsTempTableName + "(LookupString)"); + proteinIndexStmt = connection.prepareStatement("CREATE INDEX idx_" + AliasManager.makeLegalName(proteinsTempTableName, _dialect) + " ON " + proteinsTempTableName + "(LookupString)"); proteinIndexStmt.execute(); // Create an index to use for the GROUP BY - proteinIndex2Stmt = connection.prepareStatement("CREATE INDEX idx_" + AliasManager.makeLegalName(proteinsTempTableName,null) + "2 ON " + proteinsTempTableName + "(ProteinGroupId, Probability)"); + proteinIndex2Stmt = connection.prepareStatement("CREATE INDEX idx_" + AliasManager.makeLegalName(proteinsTempTableName, _dialect) + "2 ON " + proteinsTempTableName + "(ProteinGroupId, Probability)"); proteinIndex2Stmt.execute(); int[] fastaIds = run.getFastaIds(); diff --git a/ms2/src/org/labkey/ms2/compare/CompareQuery.java b/ms2/src/org/labkey/ms2/compare/CompareQuery.java index 1ccd331322..c5b8806d1a 100644 --- a/ms2/src/org/labkey/ms2/compare/CompareQuery.java +++ b/ms2/src/org/labkey/ms2/compare/CompareQuery.java @@ -496,7 +496,7 @@ public CompareDataRegion getCompareGrid(boolean export) protected DisplayColumn createColumn(ActionURL linkURL, RunColumn column, String columnName, TableInfo ti, ResultSetMetaData md, CompareDataRegion rgn) throws SQLException { - var ci = new BaseColumnInfo(columnName); + var ci = new BaseColumnInfo(columnName, ti, null); ci.setParentTable(ti); ci.setSqlTypeName(md.getColumnTypeName(rgn.getResultSet().findColumn(columnName))); ci.setLabel(column.getLabel()); diff --git a/protein/api-src/org/labkey/api/protein/fasta/FastaDbHelper.java b/protein/api-src/org/labkey/api/protein/fasta/FastaDbHelper.java index 53d7ece91a..3f74d3aae1 100644 --- a/protein/api-src/org/labkey/api/protein/fasta/FastaDbHelper.java +++ b/protein/api-src/org/labkey/api/protein/fasta/FastaDbHelper.java @@ -119,8 +119,8 @@ public FastaDbHelper(Connection c) throws SQLException "entry_date " + _dialect.getDefaultDateTimeDataType() + " NULL" + ")"); - c.createStatement().execute("CREATE INDEX IX_" + AliasManager.makeLegalName(_seqTableName,null) + "_HASH_ORGID_SROWID ON " + _seqTableName + "(hash, orgId, srowid)"); - c.createStatement().execute("CREATE INDEX IX_" + AliasManager.makeLegalName(_seqTableName,null) + "_ORGID ON " + _seqTableName + "(orgId)"); + c.createStatement().execute("CREATE INDEX IX_" + AliasManager.makeLegalName(_seqTableName, _dialect) + "_HASH_ORGID_SROWID ON " + _seqTableName + "(hash, orgId, srowid)"); + c.createStatement().execute("CREATE INDEX IX_" + AliasManager.makeLegalName(_seqTableName, _dialect) + "_ORGID ON " + _seqTableName + "(orgId)"); c.createStatement().execute("CREATE " + _dialect.getTempTableKeyword() + " TABLE " + _identTableName + " ( " + "Identifier varchar(50) NOT NULL, " + @@ -130,7 +130,7 @@ public FastaDbHelper(Connection c) throws SQLException "entry_date " + _dialect.getDefaultDateTimeDataType() + " NULL" + ")"); - c.createStatement().execute("CREATE INDEX IX_" + AliasManager.makeLegalName(_identTableName,null) + " ON " + _identTableName + "(Identifier,IdentTypeId,SeqId)"); + c.createStatement().execute("CREATE INDEX IX_" + AliasManager.makeLegalName(_identTableName, _dialect) + " ON " + _identTableName + "(Identifier,IdentTypeId,SeqId)"); _addSeqStmt = c.prepareStatement("INSERT INTO " + _seqTableName + " (ProtSequence,hash,description,mass,length,best_name,fname,lookup,genus,species,fullOrg,entry_date) " +