Skip to content
Closed
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
42 changes: 42 additions & 0 deletions TODO_ContainerFilter.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
remove interface ContainerFilterable (migrate method to protected methods e.g. on FilteredTable)

remove class DelegatingContainerFilter

test ContainerFilter for ExperimentService.get().createQCFlagsTable

SpecimenForeignKey calls to getSpecimenTableInfo(null)

Find classes that override:
- UserSchema.createTable(String name)
- AssayProtocolSchema.createProviderTable(String name)
- AssayProtocolSchema.createDataTable(boolean includeCopiedToStudyColumns)
- AssayProtocolSchema.createRunsTable()
- AssayResultTable.AssayResultTable(AssayProtocolSchema schema, boolean includeCopiedToStudyColumns)

convert schemas: ms2, study, annoucements, flow

Find classes that use constructor
- SimpleTable(SchemaType schema, TableInfo table)

Who is still depending on AbstractExpSchema.setupTable(T table) to set containerFilter???

LineageTableInfo

More clean up of QueryForeignKey (Builder?)
More clean up of PdLookupForeignKey (.create()?)

QueryDefinitionImpl.getTable() remove usage of deprecated method w/o ContainerFilter

Issues.AllIssuesTable
IsuesTable.RelatedIssues lookup uses setFk() on locked table

search for "TODO ContainerFilter"

Check subclasses of LookupForeignKey. getLookupTableInfo() should use getLookupContainerFilter()

update MultiValuedForeignKey to take CF, check usages of passed in FK to make sure they are configured with CF

Check that subclasses of QueryView initialize ContainerFilter when they construct TableInfo

How does setting effectiveContainer (when != source container) on QFK affect the ContainerFilter? If effectiveContainer != sourceContainer
maybe it should have the same effect as setting lookupContainer? see for instance, ExperimentsTable in oconnorexperiments
5 changes: 3 additions & 2 deletions elisa/src/org/labkey/elisa/ElisaProtocolSchema.java
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.labkey.api.data.Container;
import org.labkey.api.data.ContainerFilter;
import org.labkey.api.exp.api.ExpProtocol;
import org.labkey.api.query.FilteredTable;
import org.labkey.api.security.User;
Expand All @@ -36,8 +37,8 @@ public ElisaProtocolSchema(User user, Container container, @NotNull ElisaAssayPr
}

@Override
public FilteredTable createDataTable(boolean includeCopiedToStudyColumns)
public FilteredTable createDataTable(ContainerFilter cf, boolean includeCopiedToStudyColumns)
{
return new ElisaResultsTable(this, includeCopiedToStudyColumns);
return new ElisaResultsTable(this, cf, includeCopiedToStudyColumns);
}
}
7 changes: 4 additions & 3 deletions elisa/src/org/labkey/elisa/query/ElisaResultsTable.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
package org.labkey.elisa.query;

import org.labkey.api.data.ColumnInfo;
import org.labkey.api.data.ContainerFilter;
import org.labkey.api.data.TableInfo;
import org.labkey.api.exp.api.ExpSampleSet;
import org.labkey.api.exp.api.ExperimentService;
Expand All @@ -41,9 +42,9 @@
*/
public class ElisaResultsTable extends AssayResultTable
{
public ElisaResultsTable(final AssayProtocolSchema schema, boolean includeCopiedToStudyColumns)
public ElisaResultsTable(final AssayProtocolSchema schema, ContainerFilter cf, boolean includeCopiedToStudyColumns)
{
super(schema, includeCopiedToStudyColumns);
super(schema, cf, includeCopiedToStudyColumns);

List<FieldKey> visibleColumns = new ArrayList<>();

Expand All @@ -65,7 +66,7 @@ public ElisaResultsTable(final AssayProtocolSchema schema, boolean includeCopied
{
public TableInfo getLookupTableInfo()
{
ExpMaterialTable materials = ExperimentService.get().createMaterialTable(ExpSchema.TableType.Materials.toString(), schema);
ExpMaterialTable materials = ExperimentService.get().createMaterialTable(ExpSchema.TableType.Materials.toString(), schema, cf);
// Make sure we are filtering to the same set of containers
materials.setContainerFilter(getContainerFilter());
if (sampleSet != null)
Expand Down
13 changes: 7 additions & 6 deletions elispotassay/src/org/labkey/elispot/ElispotProtocolSchema.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
import org.labkey.api.data.ActionButton;
import org.labkey.api.data.ButtonBar;
import org.labkey.api.data.Container;
import org.labkey.api.data.ContainerFilter;
import org.labkey.api.data.CrosstabMember;
import org.labkey.api.data.DataRegion;
import org.labkey.api.data.TableInfo;
Expand Down Expand Up @@ -75,26 +76,26 @@ public Set<String> getTableNames()
return names;
}

public TableInfo createProviderTable(String name)
public TableInfo createProviderTable(String name, ContainerFilter cf)
{
if (name.equalsIgnoreCase(ANTIGEN_TABLE_NAME))
{
Domain domain = AbstractAssayProvider.getDomainByPrefix(getProtocol(), ElispotAssayProvider.ASSAY_DOMAIN_ANTIGEN_WELLGROUP);
if (null != domain)
return new ElispotRunAntigenTable(this, domain, getProtocol());
return new ElispotRunAntigenTable(this, cf, domain, getProtocol());
}
else if (name.equalsIgnoreCase(ANTIGEN_STATS_TABLE_NAME))
{
return ElispotAntigenCrosstabTable.create((ElispotRunAntigenTable) createProviderTable(ANTIGEN_TABLE_NAME), getProtocol(), this);
return ElispotAntigenCrosstabTable.create((ElispotRunAntigenTable) createProviderTable(ANTIGEN_TABLE_NAME, cf), getProtocol(), this);
}

return super.createProviderTable(name);
return super.createProviderTable(name, cf);
}

@Override
public ElispotRunDataTable createDataTable(boolean includeCopiedToStudyColumns)
public ElispotRunDataTable createDataTable(ContainerFilter cf, boolean includeCopiedToStudyColumns)
{
ElispotRunDataTable table = new ElispotRunDataTable(this, getProtocol());
ElispotRunDataTable table = new ElispotRunDataTable(this, cf, getProtocol());
if (includeCopiedToStudyColumns)
{
addCopiedToStudyColumns(table, true);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.labkey.api.data.Container;
import org.labkey.api.data.ContainerFilter;
import org.labkey.api.data.EnumTableInfo;
import org.labkey.api.data.TableInfo;
import org.labkey.api.security.User;
Expand Down Expand Up @@ -53,7 +54,7 @@ public Set<String> getTableNames()
}

@Override
public TableInfo createTable(String name)
public TableInfo createTable(String name, ContainerFilter cf)
{
if (name.equalsIgnoreCase(ELISPOT_PLATE_READER_TABLE))
{
Expand All @@ -69,6 +70,6 @@ public String getValue(ElispotAssayProvider.PlateReaderType e)

return result;
}
return super.createTable(name);
return super.createTable(name, cf);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -116,6 +116,7 @@ public ElispotAntigenCrosstabTable(CrosstabSettings crosstabSettings, ArrayList<
setTitle("AntigenStats");
}

@NotNull
@Override
public ContainerFilter getContainerFilter()
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
package org.labkey.elispot.query;

import org.labkey.api.data.ColumnInfo;
import org.labkey.api.data.ContainerFilter;
import org.labkey.api.data.JdbcType;
import org.labkey.api.data.SQLFragment;
import org.labkey.api.data.TableInfo;
Expand All @@ -41,9 +42,9 @@
*/
public class ElispotRunAntigenTable extends PlateBasedAssayRunDataTable
{
public ElispotRunAntigenTable(final AssaySchema schema, final Domain domain, ExpProtocol protocol)
public ElispotRunAntigenTable(final AssaySchema schema, ContainerFilter cf, final Domain domain, ExpProtocol protocol)
{
super(schema, StorageProvisioner.createTableInfo(domain), protocol);
super(schema, StorageProvisioner.createTableInfo(domain), cf, protocol);
setDescription("Contains one row per well for the \"" + protocol.getName() + "\" ELISpot assay design.");
setTitle("Antigen");
this.setPublic(false);
Expand Down Expand Up @@ -84,13 +85,13 @@ protected ColumnInfo resolveColumn(String name)
// node can still be queried there.
result = wrapColumn("Properties", getRealTable().getColumn("ObjectId"));
result.setIsUnselectable(true);
LookupForeignKey fk = new LookupForeignKey("ObjectId")
LookupForeignKey fk = new LookupForeignKey(getContainerFilter(), "ObjectId", null)
{
@Override
public TableInfo getLookupTableInfo()
{
Domain domain = AbstractAssayProvider.getDomainByPrefix(_protocol, ElispotAssayProvider.ASSAY_DOMAIN_ANTIGEN_WELLGROUP);
return new ElispotRunAntigenTable(_userSchema, domain, _protocol);
return new ElispotRunAntigenTable(_userSchema, getLookupContainerFilter(), domain, _protocol);
}
};
fk.setPrefixColumnCaption(false);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@

import org.jetbrains.annotations.NotNull;
import org.labkey.api.data.ColumnInfo;
import org.labkey.api.data.ContainerFilter;
import org.labkey.api.data.DataColumn;
import org.labkey.api.data.DisplayColumn;
import org.labkey.api.data.DisplayColumnFactory;
Expand Down Expand Up @@ -49,14 +50,14 @@
*/
public class ElispotRunDataTable extends PlateBasedAssayRunDataTable
{
public ElispotRunDataTable(final AssaySchema schema, final ExpProtocol protocol)
public ElispotRunDataTable(final AssaySchema schema, ContainerFilter cf, final ExpProtocol protocol)
{
this(schema, ElispotManager.getTableInfoElispotRunData(), protocol);
this(schema, ElispotManager.getTableInfoElispotRunData(), cf, protocol);
}

public ElispotRunDataTable(final AssaySchema schema, TableInfo table, final ExpProtocol protocol)
public ElispotRunDataTable(final AssaySchema schema, TableInfo table, ContainerFilter cf, final ExpProtocol protocol)
{
super(schema, table, protocol);
super(schema, table, cf, protocol);

setDescription("Contains one row per sample for the \"" + protocol.getName() + "\" ELISpot assay design.");

Expand Down Expand Up @@ -116,11 +117,12 @@ protected void addPropertyColumns(final AssaySchema schema, final ExpProtocol pr

ColumnInfo antigenLsidColumn = getColumn("AntigenLsid");
antigenLsidColumn.setLabel("Antigen");
antigenLsidColumn.setFk(new LookupForeignKey(null, "AntigenName")
antigenLsidColumn.setFk(new LookupForeignKey( (String)null, "AntigenName")
{
@Override
public TableInfo getLookupTableInfo()
{
// TODO ContainerFilter
return ElispotManager.getTableInfoElispotAntigen(_protocol);
}
});
Expand All @@ -138,12 +140,12 @@ protected ColumnInfo resolveColumn(String name)
// node can still be queried there.
result = wrapColumn("Properties", getRealTable().getColumn("ObjectId"));
result.setIsUnselectable(true);
LookupForeignKey fk = new LookupForeignKey("ObjectId")
LookupForeignKey fk = new LookupForeignKey(getContainerFilter(), "ObjectId", null)
{
@Override
public TableInfo getLookupTableInfo()
{
return new ElispotRunDataTable(_userSchema, _protocol);
return new ElispotRunDataTable(_userSchema, getLookupContainerFilter(), _protocol);
}
};
fk.setPrefixColumnCaption(false);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@
package org.labkey.elispot.query;

import org.labkey.api.data.*;
import org.labkey.api.exp.PropertyDescriptor;
import org.labkey.api.exp.api.ExpProtocol;
import org.labkey.api.exp.api.ExpSampleSet;
import org.labkey.api.exp.api.ExperimentService;
Expand Down Expand Up @@ -47,9 +46,9 @@ public String getInputMaterialPropertyName()
return ElispotDataHandler.ELISPOT_INPUT_MATERIAL_DATA_PROPERTY;
}

public PlateBasedAssayRunDataTable(final AssaySchema schema, final TableInfo table, final ExpProtocol protocol)
public PlateBasedAssayRunDataTable(final AssaySchema schema, final TableInfo table, ContainerFilter cf, final ExpProtocol protocol)
{
super(table, schema);
super(table, schema, cf);
_protocol = protocol;

final AssayProvider provider = AssayService.get().getProvider(protocol);
Expand All @@ -63,7 +62,7 @@ public PlateBasedAssayRunDataTable(final AssaySchema schema, final TableInfo tab
{
public TableInfo getLookupTableInfo()
{
ExpRunTable expRunTable = AssayService.get().createRunTable(protocol, provider, schema.getUser(), schema.getContainer());
ExpRunTable expRunTable = AssayService.get().createRunTable(protocol, provider, schema.getUser(), schema.getContainer(), PlateBasedAssayRunDataTable.this.getContainerFilter());
expRunTable.setContainerFilter(getContainerFilter());
return expRunTable;
}
Expand All @@ -79,13 +78,11 @@ public TableInfo getLookupTableInfo()
ColumnInfo materialColumn = getColumn("SpecimenLsid"); // new PropertyColumn(materialProperty, objectUriColumn, getContainer(), schema.getUser(), false);
materialColumn.setLabel("Specimen");
materialColumn.setHidden(true);
materialColumn.setFk(new LookupForeignKey("LSID")
materialColumn.setFk(new LookupForeignKey(cf,"LSID", null)
{
public TableInfo getLookupTableInfo()
{
ExpMaterialTable materials = ExperimentService.get().createMaterialTable(ExpSchema.TableType.Materials.toString(), schema);
// Make sure we are filtering to the same set of containers
materials.setContainerFilter(getContainerFilter());
ExpMaterialTable materials = ExperimentService.get().createMaterialTable(ExpSchema.TableType.Materials.toString(), schema, getLookupContainerFilter());
if (sampleSet != null)
{
materials.setSampleSet(sampleSet, true);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
import org.labkey.api.data.ButtonBar;
import org.labkey.api.data.CachedResultSets;
import org.labkey.api.data.ColumnInfo;
import org.labkey.api.data.Container;
import org.labkey.api.data.DataRegion;
import org.labkey.api.data.DisplayColumn;
import org.labkey.api.data.InputColumn;
Expand All @@ -36,6 +37,7 @@
import org.labkey.api.data.TableInfo;
import org.labkey.api.exp.api.ExpData;
import org.labkey.api.query.FieldKey;
import org.labkey.api.security.User;
import org.labkey.api.settings.AppProps;
import org.labkey.api.util.PageFlowUtil;
import org.labkey.api.util.SimpleNamedObject;
Expand All @@ -45,6 +47,7 @@
import org.labkey.flow.analysis.model.Workspace;
import org.labkey.flow.data.FlowFCSFile;
import org.labkey.flow.data.FlowRun;
import org.labkey.flow.query.FlowSchema;
import org.labkey.flow.util.KeywordUtil;
import org.springframework.validation.Errors;

Expand Down Expand Up @@ -80,12 +83,12 @@ public class SamplesConfirmGridView extends GridView

Map<Integer, FlowRun> _runs = new HashMap<>();

public SamplesConfirmGridView(SelectedSamples data, boolean resolving, Errors errors)
public SamplesConfirmGridView(User user, Container container, SelectedSamples data, boolean resolving, Errors errors)
{
this(data.getKeywords(), data.getSamples(), resolving, data.getRows(), errors);
this(user, container, data.getKeywords(), data.getSamples(), resolving, data.getRows(), errors);
}

public SamplesConfirmGridView(Collection<String> keywords, List<? extends ISampleInfo> samples, boolean resolving, Map<String, SelectedSamples.ResolvedSample> rows, Errors errors)
public SamplesConfirmGridView(User user, Container container, Collection<String> keywords, List<? extends ISampleInfo> samples, boolean resolving, Map<String, SelectedSamples.ResolvedSample> rows, Errors errors)
{
super(new SamplesConfirmDataRegion(), errors);

Expand Down Expand Up @@ -225,7 +228,8 @@ public SamplesConfirmGridView(Collection<String> keywords, List<? extends ISampl
// Add Matched column
ColumnInfo matchCol = new ColumnInfo(MATCHED_FILE_FIELD_KEY, null, JdbcType.INTEGER);
matchCol.setLabel("Matched FCS File");
matchCol.setFk(new FCSFilesFilesForeignKey(FlowFCSFile.getOriginal(getViewContext().getContainer())));
FlowSchema schema = new FlowSchema(user, container);
matchCol.setFk(new FCSFilesFilesForeignKey(schema, FlowFCSFile.getOriginal(container)));
matchCol.setInputType("select");
dc = new MatchedFileDisplayColumn(matchCol);
dr.addDisplayColumn(dc);
Expand Down Expand Up @@ -380,8 +384,9 @@ private class FCSFilesFilesForeignKey extends AbstractForeignKey
List<FlowFCSFile> _files;
NamedObjectList _list;

FCSFilesFilesForeignKey(List<FlowFCSFile> files)
FCSFilesFilesForeignKey(FlowSchema schema, List<FlowFCSFile> files)
{
super(schema, null);
_files = files;

_list = new NamedObjectList();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@
}

SelectedSamples selectedSamples = form.getSelectedSamples();
SamplesConfirmGridView resolveView = new SamplesConfirmGridView(selectedSamples, form.isResolving(), null);
SamplesConfirmGridView resolveView = new SamplesConfirmGridView(getUser(), container, selectedSamples, form.isResolving(), null);
%>

<input type="hidden" name="selectFCSFilesOption" id="selectFCSFilesOption" value="<%=h(form.getSelectFCSFilesOption())%>">
Expand Down
2 changes: 1 addition & 1 deletion flow/src/org/labkey/flow/data/FlowProtocol.java
Original file line number Diff line number Diff line change
Expand Up @@ -572,7 +572,7 @@ public void updateFCSAnalysisName(User user) throws Exception
}
fs.insertParent(FieldKey.fromParts("FCSFile"));
FlowSchema schema = new FlowSchema(user, getContainer());
ExpDataTable table = schema.createFCSAnalysisTable("FCSAnalysis", FlowDataType.FCSAnalysis, false);
ExpDataTable table = schema.createFCSAnalysisTable(null,"FCSAnalysis", FlowDataType.FCSAnalysis, false);
Map<FieldKey, ColumnInfo> columns = new HashMap<>();
ColumnInfo colRowId = table.getColumn(ExpDataTable.Column.RowId);
columns.put(new FieldKey(null, "RowId"), colRowId);
Expand Down
Loading