Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
adcd90d
Secure Issue 36967: SQL Injection in LabKey SQL via LeveyJennings rep…
cnathe Mar 14, 2019
f67ab6a
Sampleset delete perf
Mar 14, 2019
6b7b5d5
Use new parameterized method for getting paths to platform modules an…
labkey-susanh Mar 20, 2019
72c9bca
Don't apply java plugin and labkey Module plugin to internal and api …
labkey-susanh Mar 20, 2019
28e1fce
Fix test file locations for new project layout
labkey-tchad Mar 25, 2019
d63f0ec
appendNavTrail issues
labkey-dave Mar 25, 2019
a22123f
Merge pull request #1 from LabKey/fb_crawler
labkey-dave Mar 26, 2019
fb40f88
Merge remote-tracking branch 'origin/develop' into develop
labkey-klum Mar 26, 2019
0683931
Merge branch 'develop' of https://github.com/LabKey/commonAssays into…
labkey-klum Apr 1, 2019
9687bd8
Merge remote-tracking branch 'origin/develop' into develop
labkey-klum Apr 9, 2019
6e261ed
Merge remote-tracking branch 'origin/develop' into develop
labkey-klum Apr 10, 2019
0716dc5
Merge remote-tracking branch 'origin/develop' into develop
labkey-klum Apr 11, 2019
0e02054
Merge remote-tracking branch 'origin/develop' into develop
labkey-klum Apr 15, 2019
09e441d
initial QC state and flag handler interfaces and default implementations
labkey-klum Apr 16, 2019
332806f
Merge branch 'develop' into fb_assayQC_5364
labkey-klum Apr 16, 2019
f0a174d
Merge branch 'develop' of https://github.com/LabKey/commonAssays into…
labkey-klum Apr 22, 2019
138fedb
Merge branch 'develop' into fb_assayQC_5364
labkey-eyounske Apr 23, 2019
88a9281
Merge remote-tracking branch 'origin/develop' into develop
labkey-klum Apr 23, 2019
da10e43
Merge branch 'develop' of https://github.com/LabKey/commonAssays into…
labkey-klum Apr 24, 2019
0f637aa
Merge branch 'develop' into fb_assayQC_5364
labkey-klum Apr 24, 2019
c69743c
Merge branch 'develop' into fb_assayQC_5364
labkey-eyounske Apr 25, 2019
702c245
Merge branch 'develop' into fb_assayQC_5364
labkey-eyounske Apr 30, 2019
e054c1b
Merge remote-tracking branch 'origin/fb_assayQC_5364' into fb_assayQC…
labkey-klum May 1, 2019
ead401a
FK to QCState table
labkey-klum May 7, 2019
0340d74
Merge branch 'develop' of https://github.com/LabKey/commonAssays into…
labkey-klum May 17, 2019
5601528
merge from develop
labkey-klum May 17, 2019
6499b5d
Merge branch 'develop' of https://github.com/LabKey/commonAssays into…
labkey-klum May 21, 2019
8273ea1
Merge branch 'develop' into fb_assayQC_5364
labkey-klum May 21, 2019
590df8d
fixes for Luminex tests
labkey-klum May 22, 2019
3337f9b
Merge branch 'develop' of https://github.com/LabKey/commonAssays into…
labkey-klum May 23, 2019
683c5ae
Merge branch 'develop' into fb_assayQC_5364
labkey-klum May 23, 2019
59ec749
Merge branch 'develop' of https://github.com/LabKey/commonAssays into…
labkey-klum May 24, 2019
e0e0dcb
Merge branch 'develop' into fb_assayQC_5364
labkey-klum May 24, 2019
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
11 changes: 6 additions & 5 deletions luminex/src/org/labkey/luminex/LuminexDataHandler.java
Original file line number Diff line number Diff line change
Expand Up @@ -684,6 +684,7 @@ private void insertCVQCFlags(User user, ExpRun expRun, List<LuminexDataRow> data
{
LuminexWellGroup wellGroup = analyte.buildWellGroup(dataRows);
List<LuminexWell> allReplicates = wellGroup.getWellData(true); // combine replicates and get mean MFI and %CV
AssayProvider provider = AssayService.get().getProvider(expRun);

Set<CVQCFlag> newCVQCFlags = new HashSet<>();
for (LuminexWell replicate : allReplicates)
Expand All @@ -701,7 +702,7 @@ private void insertCVQCFlags(User user, ExpRun expRun, List<LuminexDataRow> data
if (!newCVQCFlags.contains(newQcFlag))
{
newCVQCFlags.add(newQcFlag);
Table.insert(user, ExperimentService.get().getTinfoAssayQCFlag(), newQcFlag);
AssayService.get().saveFlag(expRun.getContainer(), user, provider, newQcFlag);
}
}
}
Expand Down Expand Up @@ -851,7 +852,7 @@ public static void insertOrUpdateAnalyteSinglePointControlQCFlags(User user, Exp
{
if (!existingQCFlags.contains(newQCFlag))
{
Table.insert(user, ExperimentService.get().getTinfoAssayQCFlag(), newQCFlag);
AssayService.get().saveFlag(expRun.getContainer(), user, provider, newQCFlag);
}
}

Expand All @@ -860,7 +861,7 @@ public static void insertOrUpdateAnalyteSinglePointControlQCFlags(User user, Exp
{
if (!newQCFlags.contains(existingAnalyteTitrationQCFlag))
{
Table.delete(ExperimentService.get().getTinfoAssayQCFlag(), existingAnalyteTitrationQCFlag.getRowId());
AssayService.get().deleteFlag(expRun.getContainer(), user, provider, existingAnalyteTitrationQCFlag);
}
}
}
Expand Down Expand Up @@ -1520,7 +1521,7 @@ else if (guideSetRow.isAucEnabled() && curveFit.getCurveType().equals("Trapezoid
{
if (!existingAnalyteTitrationQCFlags.contains(newAnalyteTitrationQCFlag))
{
Table.insert(user, ExperimentService.get().getTinfoAssayQCFlag(), newAnalyteTitrationQCFlag);
AssayService.get().saveFlag(expRun.getContainer(), user, provider, newAnalyteTitrationQCFlag);
}
}

Expand All @@ -1529,7 +1530,7 @@ else if (guideSetRow.isAucEnabled() && curveFit.getCurveType().equals("Trapezoid
{
if (!newAnalyteTitrationQCFlags.contains(existingAnalyteTitrationQCFlag))
{
Table.delete(ExperimentService.get().getTinfoAssayQCFlag(), existingAnalyteTitrationQCFlag.getRowId());
AssayService.get().deleteFlag(expRun.getContainer(), user, provider, existingAnalyteTitrationQCFlag);
}
}
}
Expand Down
6 changes: 5 additions & 1 deletion luminex/src/org/labkey/luminex/LuminexModule.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,14 @@
package org.labkey.luminex;

import org.jetbrains.annotations.NotNull;
import org.labkey.api.assay.AssayDefaultFlagHandler;
import org.labkey.api.assay.AssayFlagHandler;
import org.labkey.api.assay.AssayQCFlagColumn;
import org.labkey.api.data.Container;
import org.labkey.api.exp.api.ExperimentService;
import org.labkey.api.exp.property.PropertyService;
import org.labkey.api.module.DefaultModule;
import org.labkey.api.module.ModuleContext;
import org.labkey.api.study.assay.AssayQCFlagColumn;
import org.labkey.api.study.assay.AssayService;
import org.labkey.api.util.PageFlowUtil;
import org.labkey.api.view.WebPartFactory;
Expand Down Expand Up @@ -72,6 +74,8 @@ public void doStartup(ModuleContext moduleContext)
AssayService.get().registerAssayProvider(new LuminexAssayProvider());
PropertyService.get().registerDomainKind(new LuminexAnalyteDomainKind());
PropertyService.get().registerDomainKind(new LuminexDataDomainKind());

AssayFlagHandler.registerHandler(AssayService.get().getProvider(LuminexAssayProvider.NAME), new AssayDefaultFlagHandler());
}

@Override
Expand Down
7 changes: 4 additions & 3 deletions nab/src/org/labkey/nab/NabAssayController.java
Original file line number Diff line number Diff line change
Expand Up @@ -1055,7 +1055,7 @@ public ApiResponse execute(QCControlInfo form, BindException errors) throws Exce
DilutionManager.clearWellExclusions(scope.getSqlDialect(), form.getRunId());

// clear out prior qc flags
Table.delete(ExperimentService.get().getTinfoAssayQCFlag(), new SimpleFilter(FieldKey.fromParts("runId"), form.getRunId()));
AssayService.get().deleteFlagsForRun(getContainer(), getUser(), provider, form.getRunId());
Set<String> excludedWells = new HashSet<>();
Collection<Integer> wellRowIds = new HashSet<>();

Expand All @@ -1065,7 +1065,7 @@ public ApiResponse execute(QCControlInfo form, BindException errors) throws Exce

// add the assay qc flag for the exclusions
NabWellQCFlag flag = new NabWellQCFlag(form.getRunId(), well);
Table.insert(getUser(), ExperimentService.get().getTinfoAssayQCFlag(), flag);
AssayService.get().saveFlag(getContainer(), getUser(), provider, flag);
}

// get the rowid's for the wells to exclude
Expand Down Expand Up @@ -1257,9 +1257,10 @@ public ApiResponse execute(RenderAssayBean form, BindException errors)
{
List<WellExclusion> exclusions = new ArrayList<>();
Map<String, NabWellQCFlag> qcFlagMap = new HashMap<>();
AssayProvider provider = AssayService.get().getProvider(run);

// get the saved assay QC flags to pull comment information from
for (NabWellQCFlag flag : new TableSelector(ExperimentService.get().getTinfoAssayQCFlag(), new SimpleFilter(FieldKey.fromParts("runId"), form.getRowId()), null).getArrayList(NabWellQCFlag.class))
for (NabWellQCFlag flag : AssayService.get().getFlags(provider, form.getRowId(), NabWellQCFlag.class))
{
qcFlagMap.put(flag.getKey1(), flag);
}
Expand Down
9 changes: 9 additions & 0 deletions nab/src/org/labkey/nab/NabModule.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,9 @@
package org.labkey.nab;

import org.jetbrains.annotations.NotNull;
import org.labkey.api.assay.AssayDefaultFlagHandler;
import org.labkey.api.data.ContainerManager;
import org.labkey.api.assay.AssayFlagHandler;
import org.labkey.api.exp.api.ExperimentService;
import org.labkey.api.exp.property.PropertyService;
import org.labkey.api.module.DefaultModule;
Expand Down Expand Up @@ -99,6 +101,13 @@ public void doStartup(ModuleContext moduleContext)
ExperimentService.get().registerExperimentDataHandler(new SinglePlateDilutionNabDataHandler());
ContainerManager.addContainerListener(new NabContainerListener());

// register QC flag handlers for supported assays
AssayFlagHandler handler = new AssayDefaultFlagHandler();

AssayFlagHandler.registerHandler(AssayService.get().getProvider(NabAssayProvider.NAME), handler);
AssayFlagHandler.registerHandler(new CrossPlateDilutionNabAssayProvider(), handler);
AssayFlagHandler.registerHandler(new SinglePlateDilutionNabAssayProvider(), handler);

PropertyService.get().registerDomainKind(new NabVirusDomainKind());
}

Expand Down
12 changes: 0 additions & 12 deletions nab/src/org/labkey/nab/query/NabProtocolSchema.java
Original file line number Diff line number Diff line change
Expand Up @@ -31,18 +31,15 @@
import org.labkey.api.data.DatabaseCache;
import org.labkey.api.data.DisplayColumn;
import org.labkey.api.data.DisplayColumnFactory;
import org.labkey.api.data.JdbcType;
import org.labkey.api.data.TableInfo;
import org.labkey.api.exp.api.ExpProtocol;
import org.labkey.api.exp.property.Domain;
import org.labkey.api.exp.query.ExpRunTable;
import org.labkey.api.query.ExprColumn;
import org.labkey.api.query.QuerySettings;
import org.labkey.api.security.User;
import org.labkey.api.study.assay.AssayDataLinkDisplayColumn;
import org.labkey.api.study.assay.AssayProtocolSchema;
import org.labkey.api.study.assay.AssayProvider;
import org.labkey.api.study.assay.AssayQCFlagColumn;
import org.labkey.api.study.assay.RunListDetailsQueryView;
import org.labkey.api.study.query.ResultsQueryView;
import org.labkey.api.study.query.RunListQueryView;
Expand Down Expand Up @@ -101,15 +98,6 @@ public DisplayColumn createRenderer(ColumnInfo colInfo)
return runTable;
}

@Override
protected void addQCFlagColumn(ExpRunTable runTable)
{
runTable.addColumn(new AssayQCFlagColumn(runTable, getSchemaName(), false));
var qcEnabled = runTable.addColumn(new ExprColumn(runTable, "QCFlagsEnabled", AssayQCFlagColumn.createSQLFragment(runTable.getSqlDialect(), "Enabled"), JdbcType.VARCHAR));
qcEnabled.setLabel("QC Flags Enabled State");
qcEnabled.setHidden(true);
}

@Nullable
@Override
protected ResultsQueryView createDataQueryView(ViewContext context, QuerySettings settings, BindException errors)
Expand Down