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
29 changes: 12 additions & 17 deletions ms2/src/org/labkey/ms2/compare/CompareQuery.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
import org.labkey.api.data.DataRegion;
import org.labkey.api.data.DisplayColumn;
import org.labkey.api.data.ExcelWriter;
import org.labkey.api.data.JdbcType;
import org.labkey.api.data.RuntimeSQLException;
import org.labkey.api.data.SQLFragment;
import org.labkey.api.data.SimpleFilter;
Expand All @@ -48,8 +49,11 @@
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;

/**
Expand All @@ -68,7 +72,7 @@ public class CompareQuery extends SQLFragment
private String _header;
protected final User _user;

private final Set<FieldKey> _columns = new HashSet<>();
private final Map<FieldKey, ColumnInfo> _columns = new HashMap<>();
protected static final String HEADER_PREFIX = "Numbers below represent ";

public CompareQuery(ActionURL currentUrl, List<MS2Run> runs, User user)
Expand Down Expand Up @@ -153,7 +157,12 @@ protected void generateSql(BindException errors)

protected void addColumn(String name)
{
_columns.add(FieldKey.fromParts(name));
// Fake up a column map so we can use Sort.getOrderByClause()
FieldKey fk = FieldKey.fromParts(name);
BaseColumnInfo col = new BaseColumnInfo(fk, JdbcType.VARCHAR);
col.setSortFieldKeys(Collections.singletonList(fk));
col.setAlias(MS2Manager.getSqlDialect().makeDatabaseIdentifier(name));
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Since names are mixed-case, we just have to make sure our usages are consistent. But it would be obvious if there were a problem.

_columns.put(fk, col);
}

protected void selectColumns()
Expand Down Expand Up @@ -357,28 +366,14 @@ protected void sort()
Sort sort = new Sort("-RunCount,-Pattern," + getLabelColumn());
sort.addURLSort(_currentUrl, MS2Manager.getDataRegionNameCompare());

// Filter out bogus URL sort columns
int index = 0;
while (sort.getSortList().size() > index)
{
if (!_columns.contains(sort.getSortList().get(index).getFieldKey()))
{
sort.deleteSortColumn(index);
}
else
{
index++;
}
}

// TODO: If there are more than three columns in the sort list, then it may be that "BestName" and "Protein"
// are in the list, in which case SQL server will fail to execute the query. Therefore, we restrict the number
// of columns you can sort on to 3.
while (sort.getSortList().size() > 3)
{
sort.deleteSortColumn(sort.getSortList().size() - 1);
}
append(sort.getOrderByClause(MS2Manager.getSqlDialect()));
append(sort.getOrderByClause(MS2Manager.getSqlDialect(), _columns));
}

protected void appendNewLine()
Expand Down
14 changes: 0 additions & 14 deletions ms2/src/org/labkey/ms2/peptideview/MS2ResultSet.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,15 +19,12 @@
import org.labkey.api.data.ResultSetWrapper;
import org.labkey.api.data.RuntimeSQLException;
import org.labkey.api.data.SQLFragment;
import org.labkey.api.data.SimpleFilter;
import org.labkey.api.data.Sort;
import org.labkey.ms2.MS2Manager;
import org.labkey.ms2.MS2Run;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Iterator;
import java.util.List;

/**
* User: adam
Expand All @@ -37,22 +34,12 @@
public abstract class MS2ResultSet extends ResultSetWrapper
{
protected Iterator<MS2Run> _iter;
protected SimpleFilter _filter;
protected Sort _sort;

protected MS2ResultSet()
{
super(null);
}

MS2ResultSet(List<MS2Run> runs, SimpleFilter filter, Sort sort)
{
super(null);
_iter = runs.iterator();
_filter = filter;
_sort = sort;
}

// Subclasses should call at the end of their constructors -- this pre-fetches the first result set which ensures
// that calls to getMetaData(), etc. will work before next() is called.
protected void init()
Expand Down Expand Up @@ -91,7 +78,6 @@ private boolean prepareNextResultSet() throws SQLException

/**
* Wraps the join of Peptides, PeptidesData, & SpectraData in a subselect to disambiguate scan & fraction column references in filters/sorts
*
*/
protected SQLFragment getBaseResultSetSql()
{
Expand Down
35 changes: 0 additions & 35 deletions ms2/src/org/labkey/ms2/peptideview/ResultSetSpectrumIterator.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,15 +17,9 @@
package org.labkey.ms2.peptideview;

import org.labkey.api.data.RuntimeSQLException;
import org.labkey.api.data.SQLFragment;
import org.labkey.api.data.SimpleFilter;
import org.labkey.api.data.Sort;
import org.labkey.api.data.SqlSelector;
import org.labkey.api.util.Pair;
import org.labkey.api.util.ResultSetUtil;
import org.labkey.ms2.MS2Manager;
import org.labkey.ms2.MS2Run;
import org.labkey.ms2.PeptideManager;
import org.labkey.ms2.Spectrum;
import org.labkey.ms2.SpectrumException;
import org.labkey.ms2.SpectrumImporter;
Expand All @@ -34,7 +28,6 @@
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

/**
Expand All @@ -61,11 +54,6 @@ protected ResultSetSpectrumIterator()
{
}

public ResultSetSpectrumIterator(List<MS2Run> runs, SimpleFilter filter, Sort sort)
{
_rs = new SpectrumResultSet(runs, filter, sort);
}

@Override
public boolean hasNext()
{
Expand Down Expand Up @@ -302,27 +290,4 @@ public double getPrecursorMass()
}
}
}


private static class SpectrumResultSet extends MS2ResultSet
{
public SpectrumResultSet(List<MS2Run> runs, SimpleFilter filter, Sort sort)
{
super(runs, filter, sort);
}

@Override
public ResultSet getNextResultSet()
{
PeptideManager.replaceRunCondition(_filter, null, _iter.next());

SQLFragment sql = getBaseResultSetSql();
sql.append(") X\n");
sql.append(_filter.getWhereSQL(MS2Manager.getTableInfoPeptides()));
sql.append('\n');
sql.append(_sort.getOrderByClause(MS2Manager.getSqlDialect()));

return new SqlSelector(MS2Manager.getSchema(), sql.getSQL(), _filter.getWhereParams(MS2Manager.getTableInfoPeptides())).getResultSet(false);
}
}
}