From 3f5c5999f456ac1d873ab60d3d5c42ce8a3b9651 Mon Sep 17 00:00:00 2001 From: Adam Rauch Date: Tue, 11 Mar 2025 22:06:17 -0700 Subject: [PATCH 1/5] lk-region-form -> data-region-form --- .../query/ExperimentAnnotationsTableInfo.java | 6 +++--- .../tests/panoramapublic/PanoramaWebPublicSearchTest.java | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/panoramapublic/src/org/labkey/panoramapublic/query/ExperimentAnnotationsTableInfo.java b/panoramapublic/src/org/labkey/panoramapublic/query/ExperimentAnnotationsTableInfo.java index 4c4df823..961f38cc 100644 --- a/panoramapublic/src/org/labkey/panoramapublic/query/ExperimentAnnotationsTableInfo.java +++ b/panoramapublic/src/org/labkey/panoramapublic/query/ExperimentAnnotationsTableInfo.java @@ -286,12 +286,12 @@ public String renderURL(RenderContext ctx) return license != null ? license.getUrl() : null; } @Override - public Class getValueClass() + public Class getValueClass() { return String.class; } @Override - public Class getDisplayValueClass() + public Class getDisplayValueClass() { return String.class; } @@ -314,7 +314,7 @@ public Class getDisplayValueClass() getMutableColumn("ModifiedBy").setFk(new UserIdQueryForeignKey(schema)); ExprColumn catalogEntryCol = getCatalogEntryCol(); - catalogEntryCol.setDisplayColumnFactory(colInfo -> new CatalogEntryIconColumn(colInfo)); + catalogEntryCol.setDisplayColumnFactory(CatalogEntryIconColumn::new); addColumn(catalogEntryCol); List visibleColumns = new ArrayList<>(); diff --git a/panoramapublic/test/src/org/labkey/test/tests/panoramapublic/PanoramaWebPublicSearchTest.java b/panoramapublic/test/src/org/labkey/test/tests/panoramapublic/PanoramaWebPublicSearchTest.java index 87f764ce..3fb9c64b 100644 --- a/panoramapublic/test/src/org/labkey/test/tests/panoramapublic/PanoramaWebPublicSearchTest.java +++ b/panoramapublic/test/src/org/labkey/test/tests/panoramapublic/PanoramaWebPublicSearchTest.java @@ -118,7 +118,7 @@ public void testExperimentSearch() } catch (StaleElementReferenceException e) { - shortWait().until(ExpectedConditions.stalenessOf(Locator.tagWithAttribute("form", "lk-region-form", "Targeted MS Experiment List").findElement(getDriver()))); + shortWait().until(ExpectedConditions.stalenessOf(Locator.tagWithAttribute("form", "data-region-form", "Targeted MS Experiment List").findElement(getDriver()))); } checker().verifyEquals("Incorrect search results", 3, table.getDataRowCount()); checker().verifyEquals("Incorrect values for experiment title", Arrays.asList(" Test experiment for search improvements", " Experiment for small molecule search", " Submitter Experiment"), @@ -135,7 +135,7 @@ public void testExperimentSearch() } catch (StaleElementReferenceException e) { - shortWait().until(ExpectedConditions.stalenessOf(Locator.tagWithAttribute("form", "lk-region-form", "Targeted MS Experiment List").findElement(getDriver()))); + shortWait().until(ExpectedConditions.stalenessOf(Locator.tagWithAttribute("form", "data-region-form", "Targeted MS Experiment List").findElement(getDriver()))); } checker().verifyEquals("Incorrect search results", 1, table.getDataRowCount()); checker().verifyEquals("Incorrect values for experiment title", Arrays.asList(" Submitter Experiment"), From 1c496506ab4589eb0d233abd1c2aa9eb8507717c Mon Sep 17 00:00:00 2001 From: Adam Rauch Date: Wed, 12 Mar 2025 18:34:41 -0700 Subject: [PATCH 2/5] renderInputHtml(), renderDetailsCaptionCell(), and renderHiddenFormInput() --- lincs/src/org/labkey/lincs/LincsController.java | 3 ++- .../panoramapublic/query/ExperimentAnnotationsTableInfo.java | 5 +++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/lincs/src/org/labkey/lincs/LincsController.java b/lincs/src/org/labkey/lincs/LincsController.java index 4918de43..64bd51d9 100644 --- a/lincs/src/org/labkey/lincs/LincsController.java +++ b/lincs/src/org/labkey/lincs/LincsController.java @@ -78,6 +78,7 @@ import org.labkey.api.view.ViewBackgroundInfo; import org.labkey.api.view.ViewContext; import org.labkey.api.view.WebPartView; +import org.labkey.api.writer.HtmlWriter; import org.labkey.lincs.cromwell.CromwellConfig; import org.labkey.lincs.cromwell.CromwellException; import org.labkey.lincs.psp.LincsPspException; @@ -1290,7 +1291,7 @@ public void renderDetailsCellContents(RenderContext ctx, Writer out) throws IOEx } else { - super.renderDetailsCellContents(ctx, out); + super.renderDetailsCellContents(ctx, HtmlWriter.of(out)); } } }; diff --git a/panoramapublic/src/org/labkey/panoramapublic/query/ExperimentAnnotationsTableInfo.java b/panoramapublic/src/org/labkey/panoramapublic/query/ExperimentAnnotationsTableInfo.java index 961f38cc..ee7eb28f 100644 --- a/panoramapublic/src/org/labkey/panoramapublic/query/ExperimentAnnotationsTableInfo.java +++ b/panoramapublic/src/org/labkey/panoramapublic/query/ExperimentAnnotationsTableInfo.java @@ -67,6 +67,7 @@ import org.labkey.api.view.HttpView; import org.labkey.api.view.template.ClientDependency; import org.labkey.api.view.template.PageConfig; +import org.labkey.api.writer.HtmlWriter; import org.labkey.panoramapublic.PanoramaPublicController; import org.labkey.panoramapublic.PanoramaPublicManager; import org.labkey.panoramapublic.PanoramaPublicSchema; @@ -700,7 +701,7 @@ public AutoCompleteColumn(ColumnInfo col, ActionURL autocompletionUrl, boolean p } @Override - public void renderInputHtml(RenderContext ctx, Writer out, Object value) throws IOException + public void renderInputHtml(RenderContext ctx, Writer oldWriter, HtmlWriter out, Object value) throws IOException { String name = getFormFieldName(ctx); String valueString = getStringValue(value, isDisabledInput(ctx)); @@ -723,7 +724,7 @@ public void renderInputHtml(RenderContext ctx, Writer out, Object value) throws sb.append(""); sb.append("
").append(PageFlowUtil.filter(getHelpText(), true, false)).append("
"); - out.write(sb.toString()); + oldWriter.write(sb.toString()); } @NotNull From b1a56497e2e3a8fabc674dad419d1063117e6645 Mon Sep 17 00:00:00 2001 From: Adam Rauch Date: Thu, 13 Mar 2025 08:08:55 -0700 Subject: [PATCH 3/5] Migrate renderGridCellContents() and renderDetailsCellContents() --- .../src/org/labkey/lincs/LincsController.java | 6 +-- .../src/org/labkey/lincs/LincsDataTable.java | 33 +++++++-------- lincs/src/org/labkey/lincs/LincsSchema.java | 5 ++- .../query/CatalogEntryTableInfo.java | 19 +++++---- .../query/ExperimentAnnotationsTableInfo.java | 41 ++++++++++--------- .../PeptideMatchesDisplayColumnFactory.java | 7 ++-- .../ProteinMatchesDisplayColumnFactory.java | 7 ++-- ...lMoleculesMatchesDisplayColumnFactory.java | 7 ++-- .../query/SubmissionTableInfo.java | 11 ++--- .../ModificationDocsDisplayColumnFactory.java | 7 ++-- .../UnimodIdDisplayColumnFactory.java | 5 ++- .../UnimodMatchDisplayColumnFactory.java | 9 ++-- .../EditLibInfoDisplayColumnFactory.java | 9 ++-- .../LibraryDocsDisplayColumnFactory.java | 7 ++-- .../pwebdashboard/ProjectAdminsTable.java | 10 ++--- .../src/org/labkey/signup/SignUpSchema.java | 13 +++--- 16 files changed, 106 insertions(+), 90 deletions(-) diff --git a/lincs/src/org/labkey/lincs/LincsController.java b/lincs/src/org/labkey/lincs/LincsController.java index 64bd51d9..9e523074 100644 --- a/lincs/src/org/labkey/lincs/LincsController.java +++ b/lincs/src/org/labkey/lincs/LincsController.java @@ -1281,17 +1281,17 @@ private static DataRegion getPspJobDetailsDataRegion() SimpleDisplayColumn jsonCol = new SimpleDisplayColumn(){ @Override - public void renderDetailsCellContents(RenderContext ctx, Writer out) throws IOException + public void renderDetailsCellContents(RenderContext ctx, Writer oldWriter, HtmlWriter out) throws IOException { String json = ctx.get(FieldKey.fromParts("Json"), String.class); if(!StringUtils.isBlank(json)) { JSONObject jsonObj = new JSONObject(json); - out.write("
" + PageFlowUtil.filter(jsonObj.toString(2)) + "
"); + oldWriter.write("
" + PageFlowUtil.filter(jsonObj.toString(2)) + "
"); } else { - super.renderDetailsCellContents(ctx, HtmlWriter.of(out)); + super.renderDetailsCellContents(ctx, HtmlWriter.of(oldWriter)); } } }; diff --git a/lincs/src/org/labkey/lincs/LincsDataTable.java b/lincs/src/org/labkey/lincs/LincsDataTable.java index 2bb76c16..c8c2b2c5 100644 --- a/lincs/src/org/labkey/lincs/LincsDataTable.java +++ b/lincs/src/org/labkey/lincs/LincsDataTable.java @@ -33,6 +33,7 @@ import org.labkey.api.util.Link; import org.labkey.api.util.PageFlowUtil; import org.labkey.api.view.ActionURL; +import org.labkey.api.writer.HtmlWriter; import org.labkey.lincs.psp.LincsPspJob; import java.io.IOException; @@ -72,17 +73,17 @@ public LincsDataTable(@NotNull TableInfo table, @NotNull UserSchema userSchema) addColumn(level1Col); level1Col.setDisplayColumnFactory(colInfo -> new DataColumn(colInfo){ @Override - public void renderGridCellContents(RenderContext ctx, Writer out) throws IOException + public void renderGridCellContents(RenderContext ctx, Writer oldWriter, HtmlWriter out) throws IOException { ActionURL downloadUrl = new ActionURL("targetedms", "DownloadDocument", getContainer()); Integer runId = ctx.get(FieldKey.fromParts("Id"), Integer.class); downloadUrl.addParameter("id", runId); - out.write(""); - out.write(new Link.LinkBuilder("Download").iconCls("fa fa-download").href(downloadUrl).toString()); + oldWriter.write(""); + oldWriter.write(new Link.LinkBuilder("Download").iconCls("fa fa-download").href(downloadUrl).toString()); ActionURL docDetailsUrl = new ActionURL("targetedms", "ShowPrecursorList", getContainer()); docDetailsUrl.addParameter("id", runId); - out.write(" " + new Link.LinkBuilder("Skyline").href(docDetailsUrl).clearClasses().toString()); - out.write(""); + oldWriter.write(" " + new Link.LinkBuilder("Skyline").href(docDetailsUrl).clearClasses().toString()); + oldWriter.write(""); } @Override @@ -133,24 +134,24 @@ public boolean isFilterable() pspJobCol.setDisplayColumnFactory(colInfo -> new DataColumn(colInfo) { @Override - public void renderGridCellContents(RenderContext ctx, Writer out) throws IOException + public void renderGridCellContents(RenderContext ctx, Writer oldWriter, HtmlWriter out) throws IOException { Integer runId = ctx.get(FieldKey.fromParts("Id"), Integer.class); if(runId == null) { - out.write("NO_RUN_ID"); + oldWriter.write("NO_RUN_ID"); return; } LincsPspJob pspJob = LincsManager.get().getLincsPspJobForRun(runId); if(pspJob == null) { - out.write("PSP job not found for runId: " + runId); + oldWriter.write("PSP job not found for runId: " + runId); if(userSchema.getUser().hasSiteAdminPermission()) { ActionURL url = new ActionURL(LincsController.SubmitPspJobAction.class, getContainer()); url.addParameter("runId", runId); - out.write(new Link.LinkBuilder(" [Submit Job]").href(url).usePost().toString()); + oldWriter.write(new Link.LinkBuilder(" [Submit Job]").href(url).usePost().toString()); } return; } @@ -168,7 +169,7 @@ public void renderGridCellContents(RenderContext ctx, Writer out) throws IOExcep } ActionURL url = new ActionURL(LincsController.LincsPspJobDetailsAction.class, getContainer()); url.addParameter("runId", pspJob.getRunId()); - out.write(PageFlowUtil.link(text).href(url).toString()); + oldWriter.write(PageFlowUtil.link(text).href(url).toString()); } @Override @@ -323,24 +324,24 @@ private String getMorpheusUrl(String gctFileUrl, LincsModule.LincsAssay assayTyp } @Override - public void renderGridCellContents(RenderContext ctx, Writer out) throws IOException + public void renderGridCellContents(RenderContext ctx, Writer oldWriter, HtmlWriter out) throws IOException { if(getAssayType() == null) { - out.write("Unknown assay type"); + oldWriter.write("Unknown assay type"); return; } String fileName = ctx.get(getDisplayColumn().getFieldKey(), String.class); if(fileName == null) { - out.write(" "); + oldWriter.write(" "); return; } Integer runId = ctx.get(FieldKey.fromParts("Id"), Integer.class); if(runId == null) { - out.write(""); + oldWriter.write(""); return; } @@ -349,7 +350,7 @@ public void renderGridCellContents(RenderContext ctx, Writer out) throws IOExcep downloadFileName = downloadFileName + extension; if(!fileAvailable(runId, downloadFileName)) { - out.write("NOT AVAILABLE"); + oldWriter.write("NOT AVAILABLE"); return; } @@ -357,7 +358,7 @@ public void renderGridCellContents(RenderContext ctx, Writer out) throws IOExcep String analyticsScript = getAnalyticsScript(actionName, downloadFileName, true); String morpheusUrl = externalHeatmapViewerLink(downloadFileName, getAssayType(), getLevel()); String downloadText = (getLevel() == LincsModule.LincsLevel.Config) ? "CFG" : "GCT"; - renderGridCell(out, analyticsScript, getGctDavUrlUnencoded(downloadFileName), getGctDavUrl(downloadFileName), downloadText, morpheusUrl); + renderGridCell(oldWriter, analyticsScript, getGctDavUrlUnencoded(downloadFileName), getGctDavUrl(downloadFileName), downloadText, morpheusUrl); } private void renderGridCell(Writer out, String analyticsScript, String downloadUrl, String downloadUrlEncoded, String downloadText, String morpheusUrl) throws IOException diff --git a/lincs/src/org/labkey/lincs/LincsSchema.java b/lincs/src/org/labkey/lincs/LincsSchema.java index 971c20b1..6e9252e1 100644 --- a/lincs/src/org/labkey/lincs/LincsSchema.java +++ b/lincs/src/org/labkey/lincs/LincsSchema.java @@ -48,6 +48,7 @@ import org.labkey.api.security.UserPrincipal; import org.labkey.api.security.permissions.Permission; import org.labkey.api.view.ViewContext; +import org.labkey.api.writer.HtmlWriter; import org.springframework.validation.BindException; import java.io.IOException; @@ -109,11 +110,11 @@ public DisplayColumn createRenderer(ColumnInfo colInfo) { return new DataColumn(colInfo){ @Override - public void renderDetailsCellContents(RenderContext ctx, Writer out) throws IOException + public void renderDetailsCellContents(RenderContext ctx, Writer oldWriter, HtmlWriter out) throws IOException { String json = ctx.get(colInfo.getFieldKey(), String.class); JSONObject jsonObj = new JSONObject(json); - out.write("
" + jsonObj.toString(2) + "
"); + oldWriter.write("
" + jsonObj.toString(2) + "
"); } }; } diff --git a/panoramapublic/src/org/labkey/panoramapublic/query/CatalogEntryTableInfo.java b/panoramapublic/src/org/labkey/panoramapublic/query/CatalogEntryTableInfo.java index fd975bb2..6eb5a9c0 100644 --- a/panoramapublic/src/org/labkey/panoramapublic/query/CatalogEntryTableInfo.java +++ b/panoramapublic/src/org/labkey/panoramapublic/query/CatalogEntryTableInfo.java @@ -13,6 +13,7 @@ import org.labkey.api.util.PageFlowUtil; import org.labkey.api.view.ActionURL; import org.labkey.api.view.ShortURLRecord; +import org.labkey.api.writer.HtmlWriter; import org.labkey.panoramapublic.PanoramaPublicController; import org.labkey.panoramapublic.PanoramaPublicManager; import org.labkey.panoramapublic.PanoramaPublicSchema; @@ -21,7 +22,6 @@ import org.labkey.panoramapublic.view.publish.CatalogEntryWebPart; import org.labkey.panoramapublic.view.publish.ShortUrlDisplayColumnFactory; -import java.io.IOException; import java.io.Writer; import java.util.ArrayList; import java.util.List; @@ -63,7 +63,7 @@ public Object getDisplayValue(RenderContext ctx) } @Override - public void renderGridCellContents(RenderContext ctx, Writer out) throws IOException + public void renderGridCellContents(RenderContext ctx, HtmlWriter out) { Object viewCatalogEntryUrl = getValue(ctx); if (viewCatalogEntryUrl instanceof ActionURL url) @@ -108,7 +108,7 @@ public Object getDisplayValue(RenderContext ctx) } @Override - public void renderGridCellContents(RenderContext ctx, Writer out) throws IOException + public void renderGridCellContents(RenderContext ctx, HtmlWriter out) { String fileName = (String) getValue(ctx); ShortURLRecord shortUrl = ctx.get(_shortUrlFieldKey, ShortURLRecord.class); @@ -116,10 +116,11 @@ public void renderGridCellContents(RenderContext ctx, Writer out) throws IOExcep if (fileName != null && expAnnotations != null) { ActionURL downloadLink = PanoramaPublicController.getCatalogImageDownloadUrl(expAnnotations, fileName); - SPAN(at(style, "white-space: nowrap;"), - fileName, - PageFlowUtil.iconLink("fa fa-download", null).href(downloadLink).style("margin-left:10px;").build()) - .appendTo(out); + SPAN( + at(style, "white-space: nowrap;"), + fileName, + PageFlowUtil.iconLink("fa fa-download", null).href(downloadLink).style("margin-left:10px;").build() + ).appendTo(out); return; } super.renderGridCellContents(ctx, out); @@ -157,7 +158,7 @@ public Object getDisplayValue(RenderContext ctx) reviewCol.setDisplayColumnFactory(colInfo -> new DataColumn(colInfo) { @Override - public void renderGridCellContents(RenderContext ctx, Writer out) + public void renderGridCellContents(RenderContext ctx, Writer oldWriter, HtmlWriter out) { Integer catalogEntryId = ctx.get(getColumnInfo().getFieldKey(), Integer.class); if (catalogEntryId != null && ctx.getViewContext().getUser().hasSiteAdminPermission()) @@ -168,7 +169,7 @@ public void renderGridCellContents(RenderContext ctx, Writer out) { DIV(CatalogEntryWebPart.changeStatusButtonBuilder(entry.getApproved(), expAnnotations.getId(), catalogEntryId, expAnnotations.getContainer()) .build()) - .appendTo(out); + .appendTo(oldWriter); } } } diff --git a/panoramapublic/src/org/labkey/panoramapublic/query/ExperimentAnnotationsTableInfo.java b/panoramapublic/src/org/labkey/panoramapublic/query/ExperimentAnnotationsTableInfo.java index ee7eb28f..155d9878 100644 --- a/panoramapublic/src/org/labkey/panoramapublic/query/ExperimentAnnotationsTableInfo.java +++ b/panoramapublic/src/org/labkey/panoramapublic/query/ExperimentAnnotationsTableInfo.java @@ -147,22 +147,25 @@ public DisplayColumn createRenderer(ColumnInfo colInfo) } @Override - public void renderGridCellContents(RenderContext ctx, Writer out) throws IOException + public void renderGridCellContents(RenderContext ctx, HtmlWriter out) { Integer id = ctx.get(_idKey, Integer.class); Container container = ctx.get(_containerKey, Container.class); - if(id != null && container != null) + if (id != null && container != null) { ActionURL detailsPage = PageFlowUtil.urlProvider(ProjectUrls.class).getBeginURL(container); // experiment container PageConfig pageConfig = HttpView.currentPageConfig(); String spanId = pageConfig.makeId("expt_details_"); - DOM.SPAN(at(DOM.Attribute.id, spanId) - .data("active", "false") // will be rendered as "data-active" attribute - .data("loaded", "false"), // will be rendered as "data-loaded" attribute - IMG(at(DOM.Attribute.id, "expandcontract-" + id) - .at(src, PageFlowUtil.staticResourceUrl("_images/plus.gif"))), - HtmlString.NBSP) - .appendTo(out); + DOM.SPAN( + at(DOM.Attribute.id, spanId) + .data("active", "false") // will be rendered as "data-active" attribute + .data("loaded", "false"), // will be rendered as "data-loaded" attribute + IMG( + at(DOM.Attribute.id, "expandcontract-" + id) + .at(src, PageFlowUtil.staticResourceUrl("_images/plus.gif")) + ), + HtmlString.NBSP + ).appendTo(out); pageConfig.addHandler(spanId, "click", "viewExperimentDetails(this,'" + container.getPath() + "', '" + id + "','" + detailsPage + "')"); } super.renderGridCellContents(ctx, out); @@ -198,7 +201,7 @@ public void addQueryFieldKeys(Set keys) } @Override - public void renderGridCellContents(RenderContext ctx, Writer out) throws IOException + public void renderGridCellContents(RenderContext ctx, Writer oldWriter, HtmlWriter out) throws IOException { // Get the ExperimentAnnotations record Integer experimentAnnotationsId = ctx.get(colInfo.getFieldKey(), Integer.class); @@ -208,7 +211,7 @@ public void renderGridCellContents(RenderContext ctx, Writer out) throws IOExcep if(accessUrl == null) { - out.write(""); + oldWriter.write(""); } else { @@ -216,7 +219,7 @@ public void renderGridCellContents(RenderContext ctx, Writer out) throws IOExcep .clearClasses().addClass("button-small button-small-green") .style("margin:0px 5px 0px 2px;") .onClick("showShareLink(this, " + PageFlowUtil.jsString(accessUrl) + ");return false;"); - DIV(link.build()).appendTo(out); + DIV(link.build()).appendTo(oldWriter); } } @@ -741,19 +744,18 @@ String getHelpText() private static class OrganismColumn extends AutoCompleteColumn { - public OrganismColumn(ColumnInfo col, ActionURL autocompletionUrl, boolean prefetch, String placeHolderText) { super(col, autocompletionUrl, prefetch, placeHolderText); } @Override - public void renderGridCellContents(RenderContext ctx, Writer out) throws IOException + public void renderGridCellContents(RenderContext ctx, HtmlWriter out) { String organismsStr = ctx.get(getColumnInfo().getFieldKey(), String.class); if(!StringUtils.isBlank(organismsStr)) { - out.write(PageFlowUtil.filter(ExperimentAnnotations.getOrganismsNoTaxId(organismsStr))); + out.write(ExperimentAnnotations.getOrganismsNoTaxId(organismsStr)); } else { @@ -770,6 +772,7 @@ String getHelpText() } @Override + @NotNull String getRenderId() { return "input-picker-div-organism"; @@ -800,12 +803,12 @@ public CatalogEntryIconColumn(ColumnInfo col) } @Override - public void renderGridCellContents(RenderContext ctx, Writer out) throws IOException + public void renderGridCellContents(RenderContext ctx, Writer oldWriter, HtmlWriter out) throws IOException { User user = ctx.getViewContext().getUser(); if (user == null || user.isGuest()) { - HtmlString.NBSP.appendTo(out); + HtmlString.NBSP.appendTo(oldWriter); return; } Integer catalogEntryId = ctx.get(getColumnInfo().getFieldKey(), Integer.class); @@ -827,11 +830,11 @@ public void renderGridCellContents(RenderContext ctx, Writer out) throws IOExcep : PanoramaPublicController.getAddCatalogEntryUrl(expAnnot).addReturnUrl(returnUrl); DOM.A(at(href, catalogEntryLink.getLocalURIString(), title, PageFlowUtil.filter(imageTitle)), DOM.IMG(at(src, imageUrl, height, 22, width, 22))) - .appendTo(out); + .appendTo(oldWriter); return; } } - HtmlString.NBSP.appendTo(out); + HtmlString.NBSP.appendTo(oldWriter); } } } diff --git a/panoramapublic/src/org/labkey/panoramapublic/query/PeptideMatchesDisplayColumnFactory.java b/panoramapublic/src/org/labkey/panoramapublic/query/PeptideMatchesDisplayColumnFactory.java index f47f1dcc..ae80fced 100644 --- a/panoramapublic/src/org/labkey/panoramapublic/query/PeptideMatchesDisplayColumnFactory.java +++ b/panoramapublic/src/org/labkey/panoramapublic/query/PeptideMatchesDisplayColumnFactory.java @@ -11,6 +11,7 @@ import org.labkey.api.util.Link; import org.labkey.api.util.PageFlowUtil; import org.labkey.api.view.ActionURL; +import org.labkey.api.writer.HtmlWriter; import java.io.IOException; import java.io.Writer; @@ -37,7 +38,7 @@ public void addQueryFieldKeys(Set keys) } @Override - public void renderGridCellContents(RenderContext ctx, Writer out) throws IOException + public void renderGridCellContents(RenderContext ctx, Writer oldWriter, HtmlWriter out) throws IOException { String proteinLabel = ctx.get(PEPTIDE_SEQUENCE, String.class); String exactMatch = ctx.get(EXACT_MATCH, String.class); @@ -48,8 +49,8 @@ public void renderGridCellContents(RenderContext ctx, Writer out) throws IOExcep searchUrl.addParameter("peptideSequence", proteinLabel); searchUrl.addParameter("exactMatch", exactMatch); - out.write(new Link.LinkBuilder(String.valueOf(matches)).href(searchUrl).toString()); - out.write(PageFlowUtil.button("View").href(searchUrl).toString()); + oldWriter.write(new Link.LinkBuilder(String.valueOf(matches)).href(searchUrl).toString()); + oldWriter.write(PageFlowUtil.button("View").href(searchUrl).toString()); } }; } diff --git a/panoramapublic/src/org/labkey/panoramapublic/query/ProteinMatchesDisplayColumnFactory.java b/panoramapublic/src/org/labkey/panoramapublic/query/ProteinMatchesDisplayColumnFactory.java index 22b20a13..e8b5497f 100644 --- a/panoramapublic/src/org/labkey/panoramapublic/query/ProteinMatchesDisplayColumnFactory.java +++ b/panoramapublic/src/org/labkey/panoramapublic/query/ProteinMatchesDisplayColumnFactory.java @@ -11,6 +11,7 @@ import org.labkey.api.util.Link; import org.labkey.api.util.PageFlowUtil; import org.labkey.api.view.ActionURL; +import org.labkey.api.writer.HtmlWriter; import java.io.IOException; import java.io.Writer; @@ -38,7 +39,7 @@ public void addQueryFieldKeys(Set keys) } @Override - public void renderGridCellContents(RenderContext ctx, Writer out) throws IOException + public void renderGridCellContents(RenderContext ctx, Writer oldWriter, HtmlWriter out) throws IOException { Integer matches = ctx.get(FieldKey.fromParts("Matches"), Integer.class); String proteinLabel = ctx.get(PROTEIN_LABEL, String.class); @@ -49,8 +50,8 @@ public void renderGridCellContents(RenderContext ctx, Writer out) throws IOExcep searchUrl.addParameter("proteinLabel", proteinLabel); searchUrl.addParameter("exactMatch", exactMatch); - out.write(new Link.LinkBuilder(String.valueOf(matches)).href(searchUrl).toString()); - out.write(PageFlowUtil.button("View").href(searchUrl).toString()); + oldWriter.write(new Link.LinkBuilder(String.valueOf(matches)).href(searchUrl).toString()); + oldWriter.write(PageFlowUtil.button("View").href(searchUrl).toString()); } }; } diff --git a/panoramapublic/src/org/labkey/panoramapublic/query/SmallMoleculesMatchesDisplayColumnFactory.java b/panoramapublic/src/org/labkey/panoramapublic/query/SmallMoleculesMatchesDisplayColumnFactory.java index df45b586..f4814e2d 100644 --- a/panoramapublic/src/org/labkey/panoramapublic/query/SmallMoleculesMatchesDisplayColumnFactory.java +++ b/panoramapublic/src/org/labkey/panoramapublic/query/SmallMoleculesMatchesDisplayColumnFactory.java @@ -11,6 +11,7 @@ import org.labkey.api.util.Link; import org.labkey.api.util.PageFlowUtil; import org.labkey.api.view.ActionURL; +import org.labkey.api.writer.HtmlWriter; import java.io.IOException; import java.io.Writer; @@ -37,7 +38,7 @@ public void addQueryFieldKeys(Set keys) } @Override - public void renderGridCellContents(RenderContext ctx, Writer out) throws IOException + public void renderGridCellContents(RenderContext ctx, Writer oldWriter, HtmlWriter out) throws IOException { String smallMol= ctx.get(SMALL_MOLECULE, String.class); String exactMatch = ctx.get(EXACT_MATCH, String.class); @@ -48,8 +49,8 @@ public void renderGridCellContents(RenderContext ctx, Writer out) throws IOExcep searchUrl.addParameter("smallMolecule", smallMol); searchUrl.addParameter("exactMatch", exactMatch); - out.write(new Link.LinkBuilder(String.valueOf(matches)).href(searchUrl).toString()); - out.write(PageFlowUtil.button("View").href(searchUrl).toString()); + oldWriter.write(new Link.LinkBuilder(String.valueOf(matches)).href(searchUrl).toString()); + oldWriter.write(PageFlowUtil.button("View").href(searchUrl).toString()); } }; } diff --git a/panoramapublic/src/org/labkey/panoramapublic/query/SubmissionTableInfo.java b/panoramapublic/src/org/labkey/panoramapublic/query/SubmissionTableInfo.java index 45b7fcac..da1be00d 100644 --- a/panoramapublic/src/org/labkey/panoramapublic/query/SubmissionTableInfo.java +++ b/panoramapublic/src/org/labkey/panoramapublic/query/SubmissionTableInfo.java @@ -14,6 +14,7 @@ import org.labkey.api.util.HtmlString; import org.labkey.api.util.PageFlowUtil; import org.labkey.api.view.ActionURL; +import org.labkey.api.writer.HtmlWriter; import org.labkey.panoramapublic.PanoramaPublicController; import org.labkey.panoramapublic.PanoramaPublicManager; import org.labkey.panoramapublic.PanoramaPublicSchema; @@ -157,7 +158,7 @@ public DisplayColumn createRenderer(ColumnInfo colInfo) return new DataColumn(colInfo) { @Override - public void renderGridCellContents(RenderContext ctx, Writer out) throws IOException + public void renderGridCellContents(RenderContext ctx, Writer oldWriter, HtmlWriter out) throws IOException { Integer id = ctx.get(colInfo.getFieldKey(), Integer.class); Submission s = SubmissionManager.getSubmission(id, ctx.getContainer()); @@ -165,7 +166,7 @@ public void renderGridCellContents(RenderContext ctx, Writer out) throws IOExcep { // Show the delete link only if the experiment has not yet been copied _url.replaceParameter("id", id); - out.write(PageFlowUtil.link("Delete").href(_url).toString()); + oldWriter.write(PageFlowUtil.link("Delete").href(_url).toString()); } } }; @@ -187,7 +188,7 @@ public DisplayColumn createRenderer(ColumnInfo colInfo) return new DataColumn(colInfo) { @Override - public void renderGridCellContents(RenderContext ctx, Writer out) throws IOException + public void renderGridCellContents(RenderContext ctx, Writer oldWriter, HtmlWriter out) throws IOException { Integer id = ctx.get(colInfo.getFieldKey(), Integer.class); Submission s = SubmissionManager.getSubmission(id, ctx.getContainer()); @@ -205,13 +206,13 @@ public void renderGridCellContents(RenderContext ctx, Writer out) throws IOExcep { ActionURL resubmitUrl = PanoramaPublicController.getResubmitExperimentURL(js.getExperimentAnnotationsId(), js.getJournalId(), _container, s.isKeepPrivate(), true /*check if data is valid for PXD. Always do this check on a resubmit.*/); - out.write(PageFlowUtil.link("Resubmit").href(resubmitUrl).toString()); + oldWriter.write(PageFlowUtil.link("Resubmit").href(resubmitUrl).toString()); } } else { ActionURL ediUrl = PanoramaPublicController.getUpdateSubmissionURL(js.getExperimentAnnotationsId(), js.getJournalId(), _container, s.isKeepPrivate(), true); - out.write(PageFlowUtil.link("Edit").href(ediUrl).toString()); + oldWriter.write(PageFlowUtil.link("Edit").href(ediUrl).toString()); } } } diff --git a/panoramapublic/src/org/labkey/panoramapublic/query/modification/ModificationDocsDisplayColumnFactory.java b/panoramapublic/src/org/labkey/panoramapublic/query/modification/ModificationDocsDisplayColumnFactory.java index 9c2cbfb1..7fa385ca 100644 --- a/panoramapublic/src/org/labkey/panoramapublic/query/modification/ModificationDocsDisplayColumnFactory.java +++ b/panoramapublic/src/org/labkey/panoramapublic/query/modification/ModificationDocsDisplayColumnFactory.java @@ -18,6 +18,7 @@ import org.labkey.api.util.HtmlString; import org.labkey.api.util.Link; import org.labkey.api.util.PageFlowUtil; +import org.labkey.api.writer.HtmlWriter; import org.labkey.panoramapublic.PanoramaPublicSchema; import java.io.IOException; @@ -54,7 +55,7 @@ public DisplayColumn createRenderer(ColumnInfo colInfo) return new DataColumn(colInfo) { @Override - public void renderGridCellContents(RenderContext ctx, Writer out) throws IOException + public void renderGridCellContents(RenderContext ctx, Writer oldWriter, HtmlWriter out) throws IOException { String runIds = ctx.get(colInfo.getFieldKey(), String.class); if (!StringUtils.isBlank(runIds)) @@ -77,11 +78,11 @@ public void renderGridCellContents(RenderContext ctx, Writer out) throws IOExcep modId != null ? TD(at(style, "padding:2px; vertical-align:top;"), peptidesLink(run, modId)) : HtmlString.EMPTY_STRING) ); } - DOM.TABLE(runPeptideLinks).appendTo(out); + DOM.TABLE(runPeptideLinks).appendTo(oldWriter); } else { - out.write("No runs found for Ids: " + PageFlowUtil.filter(runIds)); + oldWriter.write("No runs found for Ids: " + PageFlowUtil.filter(runIds)); } } } diff --git a/panoramapublic/src/org/labkey/panoramapublic/query/modification/UnimodIdDisplayColumnFactory.java b/panoramapublic/src/org/labkey/panoramapublic/query/modification/UnimodIdDisplayColumnFactory.java index de303db5..c4caa47a 100644 --- a/panoramapublic/src/org/labkey/panoramapublic/query/modification/UnimodIdDisplayColumnFactory.java +++ b/panoramapublic/src/org/labkey/panoramapublic/query/modification/UnimodIdDisplayColumnFactory.java @@ -5,6 +5,7 @@ import org.labkey.api.data.DisplayColumn; import org.labkey.api.data.DisplayColumnFactory; import org.labkey.api.data.RenderContext; +import org.labkey.api.writer.HtmlWriter; import org.labkey.panoramapublic.proteomexchange.UnimodModification; import java.io.Writer; @@ -21,12 +22,12 @@ public DisplayColumn createRenderer(ColumnInfo colInfo) return new DataColumn(colInfo) { @Override - public void renderGridCellContents(RenderContext ctx, Writer out) + public void renderGridCellContents(RenderContext ctx, Writer oldWriter, HtmlWriter out) { Integer unimodId = ctx.get(colInfo.getFieldKey(), Integer.class); if (unimodId != null) { - UnimodModification.getLink(unimodId).appendTo(out); + UnimodModification.getLink(unimodId).appendTo(oldWriter); } } }; diff --git a/panoramapublic/src/org/labkey/panoramapublic/query/modification/UnimodMatchDisplayColumnFactory.java b/panoramapublic/src/org/labkey/panoramapublic/query/modification/UnimodMatchDisplayColumnFactory.java index c4be47be..f2eacd60 100644 --- a/panoramapublic/src/org/labkey/panoramapublic/query/modification/UnimodMatchDisplayColumnFactory.java +++ b/panoramapublic/src/org/labkey/panoramapublic/query/modification/UnimodMatchDisplayColumnFactory.java @@ -14,6 +14,7 @@ import org.labkey.api.util.HtmlString; import org.labkey.api.util.Link; import org.labkey.api.view.ActionURL; +import org.labkey.api.writer.HtmlWriter; import org.labkey.panoramapublic.PanoramaPublicController; import org.labkey.panoramapublic.model.ExperimentAnnotations; import org.labkey.panoramapublic.proteomexchange.UnimodModification; @@ -48,7 +49,7 @@ public DisplayColumn createRenderer(ColumnInfo colInfo) return new DataColumn(colInfo) { @Override - public void renderGridCellContents(RenderContext ctx, Writer out) + public void renderGridCellContents(RenderContext ctx, Writer oldWriter, HtmlWriter out) { Integer unimodId = ctx.get(colInfo.getFieldKey(), Integer.class); @@ -58,7 +59,7 @@ public void renderGridCellContents(RenderContext ctx, Writer out) if (modInfoId == null) { // This is the Unimod Id from the Skyline document - UnimodModification.getLink(unimodId).appendTo(out); + UnimodModification.getLink(unimodId).appendTo(oldWriter); } else { @@ -74,7 +75,7 @@ public void renderGridCellContents(RenderContext ctx, Writer out) .href(deleteUrl) .usePost(String.format("Are you sure you want to delete the saved Unimod information for modification '%s'?", dbMod != null ? dbMod.getName() : "")) - .build())).appendTo(out); + .build())).appendTo(oldWriter); } } else @@ -93,7 +94,7 @@ public void renderGridCellContents(RenderContext ctx, Writer out) url.addCancelURL(ctx.getViewContext().getActionURL()); var findMatchLink = new Link.LinkBuilder("Find Match").href(url); DIV(SPAN(at(style, "color: #d70101; font-weight: bold; margin-right:5px;"), "MISSING"), - findMatchLink).appendTo(out); + findMatchLink).appendTo(oldWriter); } } } diff --git a/panoramapublic/src/org/labkey/panoramapublic/query/speclib/EditLibInfoDisplayColumnFactory.java b/panoramapublic/src/org/labkey/panoramapublic/query/speclib/EditLibInfoDisplayColumnFactory.java index df5d46a7..3395c3cf 100644 --- a/panoramapublic/src/org/labkey/panoramapublic/query/speclib/EditLibInfoDisplayColumnFactory.java +++ b/panoramapublic/src/org/labkey/panoramapublic/query/speclib/EditLibInfoDisplayColumnFactory.java @@ -10,6 +10,7 @@ import org.labkey.api.util.PageFlowUtil; import org.labkey.api.util.URLHelper; import org.labkey.api.view.ActionURL; +import org.labkey.api.writer.HtmlWriter; import org.labkey.panoramapublic.PanoramaPublicController; import org.labkey.panoramapublic.model.ExperimentAnnotations; import org.labkey.panoramapublic.query.ExperimentAnnotationsManager; @@ -31,7 +32,7 @@ public DisplayColumn createRenderer(ColumnInfo colInfo) return new DataColumn(colInfo) { @Override - public void renderGridCellContents(RenderContext ctx, Writer out) throws IOException + public void renderGridCellContents(RenderContext ctx, Writer oldWriter, HtmlWriter out) throws IOException { if (ctx.getContainer().hasPermission(ctx.getViewContext().getUser(), UpdatePermission.class)) { @@ -58,18 +59,18 @@ public void renderGridCellContents(RenderContext ctx, Writer out) throws IOExcep } ActionURL editUrl = PanoramaPublicController.getEditSpecLibInfoURL(experimentAnnotationsId, specLibId, specLibInfoId, ctx.getContainer()); editUrl.addReturnUrl(returnUrl); - out.write(PageFlowUtil.link(specLibInfoId != null ? "Edit" : "Add").href(editUrl).toString()); + oldWriter.write(PageFlowUtil.link(specLibInfoId != null ? "Edit" : "Add").href(editUrl).toString()); if (specLibInfoId != null) { ActionURL deleteUrl = PanoramaPublicController.getDeleteSpecLibInfoURL(experimentAnnotationsId, specLibInfoId, ctx.getContainer()); deleteUrl.addReturnUrl(returnUrl); - out.write(PageFlowUtil.link("Delete").href(deleteUrl).usePost("Are you sure you want to delete the spectral library information?").toString()); + oldWriter.write(PageFlowUtil.link("Delete").href(deleteUrl).usePost("Are you sure you want to delete the spectral library information?").toString()); } return; } } } - out.write(""); + oldWriter.write(""); } @Override diff --git a/panoramapublic/src/org/labkey/panoramapublic/query/speclib/LibraryDocsDisplayColumnFactory.java b/panoramapublic/src/org/labkey/panoramapublic/query/speclib/LibraryDocsDisplayColumnFactory.java index fa9cbf5d..af3b4d2a 100644 --- a/panoramapublic/src/org/labkey/panoramapublic/query/speclib/LibraryDocsDisplayColumnFactory.java +++ b/panoramapublic/src/org/labkey/panoramapublic/query/speclib/LibraryDocsDisplayColumnFactory.java @@ -11,6 +11,7 @@ import org.labkey.api.security.User; import org.labkey.api.util.DOM; import org.labkey.api.util.PageFlowUtil; +import org.labkey.api.writer.HtmlWriter; import org.labkey.panoramapublic.model.speclib.SpectralLibrary; import org.labkey.panoramapublic.query.SpecLibInfoManager; @@ -40,7 +41,7 @@ public DisplayColumn createRenderer(ColumnInfo colInfo) return new DataColumn(colInfo) { @Override - public void renderGridCellContents(RenderContext ctx, Writer out) throws IOException + public void renderGridCellContents(RenderContext ctx, Writer oldWriter, HtmlWriter out) throws IOException { String specLibIds = ctx.get(colInfo.getFieldKey(), String.class); if (!StringUtils.isBlank(specLibIds)) @@ -65,11 +66,11 @@ public void renderGridCellContents(RenderContext ctx, Writer out) throws IOExcep "specLibInfoId", String.valueOf(specLibInfoId))))) ); } - DOM.TABLE(runLibraryLinks).appendTo(out); + DOM.TABLE(runLibraryLinks).appendTo(oldWriter); } else { - out.write("No libraries found for Ids: " + PageFlowUtil.filter(specLibIds)); + oldWriter.write("No libraries found for Ids: " + PageFlowUtil.filter(specLibIds)); } } } diff --git a/pwebdashboard/src/org/labkey/pwebdashboard/ProjectAdminsTable.java b/pwebdashboard/src/org/labkey/pwebdashboard/ProjectAdminsTable.java index 85fa71bf..d07a8211 100644 --- a/pwebdashboard/src/org/labkey/pwebdashboard/ProjectAdminsTable.java +++ b/pwebdashboard/src/org/labkey/pwebdashboard/ProjectAdminsTable.java @@ -34,6 +34,7 @@ import org.labkey.api.util.Link; import org.labkey.api.util.PageFlowUtil; import org.labkey.api.view.ActionURL; +import org.labkey.api.writer.HtmlWriter; import java.io.IOException; import java.io.Writer; @@ -151,7 +152,7 @@ private String getCommaSeparatedAdmins(Container container) } @Override - public void renderGridCellContents(RenderContext ctx, Writer out) throws IOException + public void renderGridCellContents(RenderContext ctx, Writer oldWriter, HtmlWriter out) throws IOException { String entityId = ctx.get(getColumnInfo().getFieldKey(), String.class); Container container = ContainerManager.getForId(entityId); @@ -164,7 +165,7 @@ public void renderGridCellContents(RenderContext ctx, Writer out) throws IOExcep String space = ""; - if (allAdmins.size() > 0) + if (!allAdmins.isEmpty()) { for(UserPrincipal user: allAdmins) { @@ -174,13 +175,12 @@ public void renderGridCellContents(RenderContext ctx, Writer out) throws IOExcep } - out.write(display.toString()); - return; + oldWriter.write(display.toString()); } } else { - out.write(""); + oldWriter.write(""); } } diff --git a/signup/src/org/labkey/signup/SignUpSchema.java b/signup/src/org/labkey/signup/SignUpSchema.java index ca6bbf28..26e19b11 100644 --- a/signup/src/org/labkey/signup/SignUpSchema.java +++ b/signup/src/org/labkey/signup/SignUpSchema.java @@ -40,6 +40,7 @@ import org.labkey.api.security.User; import org.labkey.api.security.permissions.AdminPermission; import org.labkey.api.view.ActionURL; +import org.labkey.api.writer.HtmlWriter; import java.io.IOException; import java.io.Writer; @@ -91,19 +92,19 @@ public TableInfo createTable(String name, ContainerFilter containerFilter) oldgroup.setDisplayColumnFactory(colInfo -> new DataColumn(colInfo) { @Override - public void renderGridCellContents(RenderContext ctx, Writer out) throws IOException + public void renderGridCellContents(RenderContext ctx, Writer oldWriter, HtmlWriter out) throws IOException { Group old = org.labkey.api.security.SecurityManager.getGroup(Integer.parseInt(String.valueOf(ctx.get(FieldKey.fromParts("oldgroup"))))); - out.write(old.getName()); + oldWriter.write(old.getName()); } }); newgroup.setDisplayColumnFactory(colInfo -> new DataColumn(colInfo) { @Override - public void renderGridCellContents(RenderContext ctx, Writer out) throws IOException + public void renderGridCellContents(RenderContext ctx, Writer oldWriter, HtmlWriter out) throws IOException { Group old = org.labkey.api.security.SecurityManager.getGroup(Integer.parseInt(String.valueOf(ctx.get(FieldKey.fromParts("newgroup"))))); - out.write(old.getName()); + oldWriter.write(old.getName()); } }); } @@ -120,7 +121,7 @@ public DisplayColumn createRenderer(ColumnInfo colInfo) return new DataColumn(colInfo) { @Override - public void renderGridCellContents(RenderContext ctx, Writer out) throws IOException + public void renderGridCellContents(RenderContext ctx, Writer oldWriter, HtmlWriter out) throws IOException { Container container = ContainerManager.getForId(String.valueOf(ctx.get(FieldKey.fromParts("Container")))); String email = String.valueOf(ctx.get(FieldKey.fromParts("email"))); @@ -129,7 +130,7 @@ public void renderGridCellContents(RenderContext ctx, Writer out) throws IOExcep ActionURL url = new ActionURL(SignUpController.ConfirmAction.class, container); url.addParameter("email", email); url.addParameter("key", key); - out.write(url.getLocalURIString()); + oldWriter.write(url.getLocalURIString()); // out.write("Confirmation URL"); } From 14c69455c25a7426cc0cd4dcba70b8bfda5db9cf Mon Sep 17 00:00:00 2001 From: Adam Rauch Date: Thu, 13 Mar 2025 11:23:20 -0700 Subject: [PATCH 4/5] Fewer StackOverflowExceptions, please --- .../src/org/labkey/lincs/LincsController.java | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/lincs/src/org/labkey/lincs/LincsController.java b/lincs/src/org/labkey/lincs/LincsController.java index 9e523074..19dc19ad 100644 --- a/lincs/src/org/labkey/lincs/LincsController.java +++ b/lincs/src/org/labkey/lincs/LincsController.java @@ -96,7 +96,6 @@ import java.io.FilenameFilter; import java.io.IOException; import java.io.InputStream; -import java.io.Writer; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.StandardCopyOption; @@ -115,6 +114,7 @@ import static org.labkey.api.util.DOM.BR; import static org.labkey.api.util.DOM.DIV; +import static org.labkey.api.util.DOM.PRE; public class LincsController extends SpringActionController { @@ -162,11 +162,11 @@ public boolean accept(File dir, String name) // Copy both to the GCT folder for(File file: reportDirFiles) { - if(file.getName().toLowerCase().equals("lincs.gct")) + if(file.getName().equalsIgnoreCase("lincs.gct")) { Files.copy(file.toPath(), gct, StandardCopyOption.REPLACE_EXISTING); } - else if(file.getName().toLowerCase().equals("console.txt")) + else if(file.getName().equalsIgnoreCase("console.txt")) { Files.copy(file.toPath(), gctDir.resolve(outputFileBaseName + ".console.txt" ), StandardCopyOption.REPLACE_EXISTING); } @@ -1281,17 +1281,19 @@ private static DataRegion getPspJobDetailsDataRegion() SimpleDisplayColumn jsonCol = new SimpleDisplayColumn(){ @Override - public void renderDetailsCellContents(RenderContext ctx, Writer oldWriter, HtmlWriter out) throws IOException + public void renderDetailsCellContents(RenderContext ctx, HtmlWriter out) { String json = ctx.get(FieldKey.fromParts("Json"), String.class); - if(!StringUtils.isBlank(json)) + if (!StringUtils.isBlank(json)) { JSONObject jsonObj = new JSONObject(json); - oldWriter.write("
" + PageFlowUtil.filter(jsonObj.toString(2)) + "
"); + PRE( + jsonObj.toString(2) + ).appendTo(out); } else { - super.renderDetailsCellContents(ctx, HtmlWriter.of(oldWriter)); + super.renderDetailsCellContents(ctx, out); } } }; @@ -1380,7 +1382,7 @@ public ModelAndView getView(LincsPspJobForm form, BindException errors) DOM.P("Status for job: " + pspJob.getId() +", PSP job Id: " + pspJob.getPspJobId() + ", Run Id: " + pspJob.getRunId()), "JSON Output:", DOM.BR(), - DOM.P(DOM.PRE(jsonStatus))))); + DOM.P(PRE(jsonStatus))))); view.setTitle("PSP job status"); view.setFrame(WebPartView.FrameType.PORTAL); return view; From 2afd19f7b212ba7d8657ae095a3022251a797f5c Mon Sep 17 00:00:00 2001 From: Adam Rauch Date: Mon, 17 Mar 2025 15:57:14 -0700 Subject: [PATCH 5/5] Migrate remaining DisplayColumn methods --- .../src/org/labkey/lincs/LincsDataTable.java | 77 ++++++++------- lincs/src/org/labkey/lincs/LincsSchema.java | 26 ++--- .../query/CatalogEntryTableInfo.java | 9 +- .../query/ExperimentAnnotationsTableInfo.java | 94 +++++++++++-------- .../PeptideMatchesDisplayColumnFactory.java | 8 +- .../ProteinMatchesDisplayColumnFactory.java | 9 +- ...lMoleculesMatchesDisplayColumnFactory.java | 8 +- .../query/SubmissionTableInfo.java | 12 +-- .../ModificationDocsDisplayColumnFactory.java | 10 +- .../UnimodIdDisplayColumnFactory.java | 6 +- .../UnimodMatchDisplayColumnFactory.java | 9 +- .../EditLibInfoDisplayColumnFactory.java | 10 +- .../LibraryDocsDisplayColumnFactory.java | 11 +-- .../pwebdashboard/ProjectAdminsTable.java | 26 ++--- .../src/org/labkey/signup/SignUpSchema.java | 14 ++- 15 files changed, 157 insertions(+), 172 deletions(-) diff --git a/lincs/src/org/labkey/lincs/LincsDataTable.java b/lincs/src/org/labkey/lincs/LincsDataTable.java index c8c2b2c5..3d2e8a57 100644 --- a/lincs/src/org/labkey/lincs/LincsDataTable.java +++ b/lincs/src/org/labkey/lincs/LincsDataTable.java @@ -17,6 +17,7 @@ import org.apache.commons.lang3.StringUtils; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import org.labkey.api.analytics.AnalyticsService; import org.labkey.api.data.ColumnInfo; import org.labkey.api.data.DataColumn; @@ -36,8 +37,6 @@ import org.labkey.api.writer.HtmlWriter; import org.labkey.lincs.psp.LincsPspJob; -import java.io.IOException; -import java.io.Writer; import java.nio.file.Files; import java.nio.file.Path; import java.util.ArrayList; @@ -46,6 +45,10 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; +import static org.labkey.api.util.DOM.Attribute.style; +import static org.labkey.api.util.DOM.SPAN; +import static org.labkey.api.util.DOM.at; + /** * Created by vsharma on 8/21/2017. */ @@ -73,17 +76,21 @@ public LincsDataTable(@NotNull TableInfo table, @NotNull UserSchema userSchema) addColumn(level1Col); level1Col.setDisplayColumnFactory(colInfo -> new DataColumn(colInfo){ @Override - public void renderGridCellContents(RenderContext ctx, Writer oldWriter, HtmlWriter out) throws IOException + public void renderGridCellContents(RenderContext ctx, HtmlWriter out) { ActionURL downloadUrl = new ActionURL("targetedms", "DownloadDocument", getContainer()); Integer runId = ctx.get(FieldKey.fromParts("Id"), Integer.class); downloadUrl.addParameter("id", runId); - oldWriter.write(""); - oldWriter.write(new Link.LinkBuilder("Download").iconCls("fa fa-download").href(downloadUrl).toString()); ActionURL docDetailsUrl = new ActionURL("targetedms", "ShowPrecursorList", getContainer()); docDetailsUrl.addParameter("id", runId); - oldWriter.write(" " + new Link.LinkBuilder("Skyline").href(docDetailsUrl).clearClasses().toString()); - oldWriter.write(""); + + // is recommended instead of deprecated + SPAN( + at(style, "white-space: nowrap;"), + new Link.LinkBuilder("Download").iconCls("fa fa-download").href(downloadUrl), + HtmlString.NBSP, + new Link.LinkBuilder("Skyline").href(docDetailsUrl).clearClasses() + ).appendTo(out); } @Override @@ -134,24 +141,24 @@ public boolean isFilterable() pspJobCol.setDisplayColumnFactory(colInfo -> new DataColumn(colInfo) { @Override - public void renderGridCellContents(RenderContext ctx, Writer oldWriter, HtmlWriter out) throws IOException + public void renderGridCellContents(RenderContext ctx, HtmlWriter out) { Integer runId = ctx.get(FieldKey.fromParts("Id"), Integer.class); if(runId == null) { - oldWriter.write("NO_RUN_ID"); + out.write("NO_RUN_ID"); return; } LincsPspJob pspJob = LincsManager.get().getLincsPspJobForRun(runId); if(pspJob == null) { - oldWriter.write("PSP job not found for runId: " + runId); + out.write("PSP job not found for runId: " + runId); if(userSchema.getUser().hasSiteAdminPermission()) { ActionURL url = new ActionURL(LincsController.SubmitPspJobAction.class, getContainer()); url.addParameter("runId", runId); - oldWriter.write(new Link.LinkBuilder(" [Submit Job]").href(url).usePost().toString()); + out.write(new Link.LinkBuilder(" [Submit Job]").href(url).usePost()); } return; } @@ -169,7 +176,7 @@ public void renderGridCellContents(RenderContext ctx, Writer oldWriter, HtmlWrit } ActionURL url = new ActionURL(LincsController.LincsPspJobDetailsAction.class, getContainer()); url.addParameter("runId", pspJob.getRunId()); - oldWriter.write(PageFlowUtil.link(text).href(url).toString()); + out.write(PageFlowUtil.link(text).href(url)); } @Override @@ -291,7 +298,7 @@ private String getAnalyticsScript(String eventAction, String fileName, boolean a return null; } - private String externalHeatmapViewerLink(String fileName, LincsModule.LincsAssay assayType) + private HtmlString externalHeatmapViewerLink(String fileName, LincsModule.LincsAssay assayType) { String gctFileUrl = davUrl + "GCT/" + PageFlowUtil.encodePath(fileName); String morpheusUrl = getMorpheusUrl(gctFileUrl, assayType); @@ -300,7 +307,9 @@ private String externalHeatmapViewerLink(String fileName, LincsModule.LincsAssay String onclickEvt = StringUtils.isBlank(analyticsScript) ? "" : "onclick=\"" + analyticsScript + "\""; String imgUrl = AppProps.getInstance().getContextPath() + "/lincs/GENE-E_icon.png"; - return "[ View in Morpheus  ]"; + + // TODO: Should use a LinkBuilder, etc. + return HtmlString.unsafe("[ View in Morpheus  ]"); } private String getMorpheusUrl(String gctFileUrl, LincsModule.LincsAssay assayType) @@ -324,24 +333,24 @@ private String getMorpheusUrl(String gctFileUrl, LincsModule.LincsAssay assayTyp } @Override - public void renderGridCellContents(RenderContext ctx, Writer oldWriter, HtmlWriter out) throws IOException + public void renderGridCellContents(RenderContext ctx, HtmlWriter out) { if(getAssayType() == null) { - oldWriter.write("Unknown assay type"); + out.write("Unknown assay type"); return; } String fileName = ctx.get(getDisplayColumn().getFieldKey(), String.class); if(fileName == null) { - oldWriter.write(" "); + out.write(HtmlString.NBSP); return; } Integer runId = ctx.get(FieldKey.fromParts("Id"), Integer.class); if(runId == null) { - oldWriter.write(""); + out.write(""); return; } @@ -350,29 +359,31 @@ public void renderGridCellContents(RenderContext ctx, Writer oldWriter, HtmlWrit downloadFileName = downloadFileName + extension; if(!fileAvailable(runId, downloadFileName)) { - oldWriter.write("NOT AVAILABLE"); + out.write("NOT AVAILABLE"); return; } String actionName = (getLevel() == LincsModule.LincsLevel.Config) ? "DownloadConfig" : "DownloadGCT"; String analyticsScript = getAnalyticsScript(actionName, downloadFileName, true); - String morpheusUrl = externalHeatmapViewerLink(downloadFileName, getAssayType(), getLevel()); + HtmlString morpheusUrl = externalHeatmapViewerLink(downloadFileName, getAssayType(), getLevel()); String downloadText = (getLevel() == LincsModule.LincsLevel.Config) ? "CFG" : "GCT"; - renderGridCell(oldWriter, analyticsScript, getGctDavUrlUnencoded(downloadFileName), getGctDavUrl(downloadFileName), downloadText, morpheusUrl); + renderGridCell(out, analyticsScript, getGctDavUrlUnencoded(downloadFileName), downloadText, morpheusUrl); } - private void renderGridCell(Writer out, String analyticsScript, String downloadUrl, String downloadUrlEncoded, String downloadText, String morpheusUrl) throws IOException + private void renderGridCell(HtmlWriter out, String analyticsScript, String downloadUrl, String downloadText, HtmlString morpheusUrl) { - out.write(" "); - out.write(new Link.LinkBuilder("Download").iconCls("fa fa-download").href(downloadUrl).onClick(analyticsScript).toString()); - out.write(" "); - out.write(new Link.LinkBuilder(downloadText).href(downloadUrl).onClick(analyticsScript).clearClasses().toString()); - out.write(" "); - if(morpheusUrl != null) - { - out.write(" " + morpheusUrl + " "); - } - out.write(""); + // is recommended instead of deprecated + SPAN( + at(style, "white-space: nowrap;"), + HtmlString.NBSP, + new Link.LinkBuilder("Download").iconCls("fa fa-download").href(downloadUrl).onClick(analyticsScript), + HtmlString.NBSP, + new Link.LinkBuilder(downloadText).href(downloadUrl).onClick(analyticsScript).clearClasses(), + HtmlString.NBSP, + morpheusUrl != null ? HtmlString.NBSP : null, + morpheusUrl, + morpheusUrl != null ? HtmlString.NBSP : null + ).appendTo(out); } private boolean fileAvailable(Integer runId, String downloadFileName) @@ -397,7 +408,7 @@ private boolean fileAvailable(Integer runId, String downloadFileName) } } - String externalHeatmapViewerLink(String fileName, LincsModule.LincsAssay assayType, LincsModule.LincsLevel level) + @Nullable HtmlString externalHeatmapViewerLink(String fileName, LincsModule.LincsAssay assayType, LincsModule.LincsLevel level) { if(level == LincsModule.LincsLevel.Config) { diff --git a/lincs/src/org/labkey/lincs/LincsSchema.java b/lincs/src/org/labkey/lincs/LincsSchema.java index 6e9252e1..338fd6c9 100644 --- a/lincs/src/org/labkey/lincs/LincsSchema.java +++ b/lincs/src/org/labkey/lincs/LincsSchema.java @@ -20,7 +20,6 @@ import org.jetbrains.annotations.Nullable; import org.json.JSONObject; import org.labkey.api.collections.CaseInsensitiveHashSet; -import org.labkey.api.data.ColumnInfo; import org.labkey.api.data.Container; import org.labkey.api.data.ContainerFilter; import org.labkey.api.data.ContainerForeignKey; @@ -28,7 +27,6 @@ import org.labkey.api.data.DbSchema; import org.labkey.api.data.DbSchemaType; import org.labkey.api.data.DisplayColumn; -import org.labkey.api.data.DisplayColumnFactory; import org.labkey.api.data.RenderContext; import org.labkey.api.data.TableInfo; import org.labkey.api.data.dialect.SqlDialect; @@ -51,11 +49,11 @@ import org.labkey.api.writer.HtmlWriter; import org.springframework.validation.BindException; -import java.io.IOException; -import java.io.Writer; import java.util.List; import java.util.Set; +import static org.labkey.api.util.DOM.PRE; + public class LincsSchema extends UserSchema { public static final String SCHEMA_NAME = "lincs"; @@ -103,20 +101,16 @@ public TableInfo createTable(String name, ContainerFilter cf) ContainerForeignKey.initColumn(containerCol, this); var jsonCol = result.getMutableColumn(FieldKey.fromParts("Json")); - jsonCol.setDisplayColumnFactory(new DisplayColumnFactory() - { + jsonCol.setDisplayColumnFactory(colInfo -> new DataColumn(colInfo){ @Override - public DisplayColumn createRenderer(ColumnInfo colInfo) + public void renderDetailsCellContents(RenderContext ctx, HtmlWriter out) { - return new DataColumn(colInfo){ - @Override - public void renderDetailsCellContents(RenderContext ctx, Writer oldWriter, HtmlWriter out) throws IOException - { - String json = ctx.get(colInfo.getFieldKey(), String.class); - JSONObject jsonObj = new JSONObject(json); - oldWriter.write("
" + jsonObj.toString(2) + "
"); - } - }; + String json = ctx.get(colInfo.getFieldKey(), String.class); + JSONObject jsonObj = new JSONObject(json); + + PRE( + jsonObj.toString(2) + ).appendTo(out); } }); return result; diff --git a/panoramapublic/src/org/labkey/panoramapublic/query/CatalogEntryTableInfo.java b/panoramapublic/src/org/labkey/panoramapublic/query/CatalogEntryTableInfo.java index 6eb5a9c0..df4e7037 100644 --- a/panoramapublic/src/org/labkey/panoramapublic/query/CatalogEntryTableInfo.java +++ b/panoramapublic/src/org/labkey/panoramapublic/query/CatalogEntryTableInfo.java @@ -22,7 +22,6 @@ import org.labkey.panoramapublic.view.publish.CatalogEntryWebPart; import org.labkey.panoramapublic.view.publish.ShortUrlDisplayColumnFactory; -import java.io.Writer; import java.util.ArrayList; import java.util.List; import java.util.Set; @@ -158,7 +157,7 @@ public Object getDisplayValue(RenderContext ctx) reviewCol.setDisplayColumnFactory(colInfo -> new DataColumn(colInfo) { @Override - public void renderGridCellContents(RenderContext ctx, Writer oldWriter, HtmlWriter out) + public void renderGridCellContents(RenderContext ctx, HtmlWriter out) { Integer catalogEntryId = ctx.get(getColumnInfo().getFieldKey(), Integer.class); if (catalogEntryId != null && ctx.getViewContext().getUser().hasSiteAdminPermission()) @@ -167,9 +166,9 @@ public void renderGridCellContents(RenderContext ctx, Writer oldWriter, HtmlWrit ExperimentAnnotations expAnnotations = ExperimentAnnotationsManager.getExperimentForShortUrl(entry.getShortUrl()); if (expAnnotations != null) { - DIV(CatalogEntryWebPart.changeStatusButtonBuilder(entry.getApproved(), expAnnotations.getId(), catalogEntryId, expAnnotations.getContainer()) - .build()) - .appendTo(oldWriter); + DIV( + CatalogEntryWebPart.changeStatusButtonBuilder(entry.getApproved(), expAnnotations.getId(), catalogEntryId, expAnnotations.getContainer()) + ).appendTo(out); } } } diff --git a/panoramapublic/src/org/labkey/panoramapublic/query/ExperimentAnnotationsTableInfo.java b/panoramapublic/src/org/labkey/panoramapublic/query/ExperimentAnnotationsTableInfo.java index 155d9878..38d66ffb 100644 --- a/panoramapublic/src/org/labkey/panoramapublic/query/ExperimentAnnotationsTableInfo.java +++ b/panoramapublic/src/org/labkey/panoramapublic/query/ExperimentAnnotationsTableInfo.java @@ -58,11 +58,13 @@ import org.labkey.api.settings.AppProps; import org.labkey.api.util.DOM; import org.labkey.api.util.HtmlString; +import org.labkey.api.util.JavaScriptFragment; import org.labkey.api.util.Link; import org.labkey.api.util.PageFlowUtil; import org.labkey.api.util.SimpleNamedObject; import org.labkey.api.util.StringExpressionFactory; import org.labkey.api.util.UniqueID; +import org.labkey.api.util.element.Input.InputBuilder; import org.labkey.api.view.ActionURL; import org.labkey.api.view.HttpView; import org.labkey.api.view.template.ClientDependency; @@ -78,8 +80,6 @@ import org.labkey.panoramapublic.view.publish.CatalogEntryWebPart; import org.labkey.panoramapublic.view.publish.ShortUrlDisplayColumnFactory; -import java.io.IOException; -import java.io.Writer; import java.util.ArrayList; import java.util.List; import java.util.Set; @@ -87,10 +87,12 @@ import static org.labkey.api.util.DOM.Attribute.height; import static org.labkey.api.util.DOM.Attribute.href; import static org.labkey.api.util.DOM.Attribute.src; +import static org.labkey.api.util.DOM.Attribute.style; import static org.labkey.api.util.DOM.Attribute.title; import static org.labkey.api.util.DOM.Attribute.width; import static org.labkey.api.util.DOM.DIV; import static org.labkey.api.util.DOM.IMG; +import static org.labkey.api.util.DOM.SCRIPT; import static org.labkey.api.util.DOM.at; /** @@ -133,8 +135,8 @@ public DisplayColumn createRenderer(ColumnInfo colInfo) { return new DataColumn(colInfo, true) { - private FieldKey _containerKey = new FieldKey(getColumnInfo().getFieldKey().getParent(), "container"); - private FieldKey _idKey = new FieldKey(getColumnInfo().getFieldKey().getParent(), "id"); + private final FieldKey _containerKey = new FieldKey(getColumnInfo().getFieldKey().getParent(), "container"); + private final FieldKey _idKey = new FieldKey(getColumnInfo().getFieldKey().getParent(), "id"); @Override public @NotNull Set getClientDependencies() @@ -192,16 +194,16 @@ public void addQueryFieldKeys(Set keys) public @NotNull Set getClientDependencies() { return PageFlowUtil.set( - ClientDependency.fromPath("PanoramaPublic/css/ExperimentAnnotations.css"), - ClientDependency.fromPath("hopscotch/css/hopscotch.min.css"), - ClientDependency.fromPath("PanoramaPublic/js/ExperimentAnnotations.js"), - ClientDependency.fromPath("PanoramaPublic/js/clipboard.min.js"), - ClientDependency.fromPath("hopscotch/js/hopscotch.min.js") - ); + ClientDependency.fromPath("PanoramaPublic/css/ExperimentAnnotations.css"), + ClientDependency.fromPath("hopscotch/css/hopscotch.min.css"), + ClientDependency.fromPath("PanoramaPublic/js/ExperimentAnnotations.js"), + ClientDependency.fromPath("PanoramaPublic/js/clipboard.min.js"), + ClientDependency.fromPath("hopscotch/js/hopscotch.min.js") + ); } @Override - public void renderGridCellContents(RenderContext ctx, Writer oldWriter, HtmlWriter out) throws IOException + public void renderGridCellContents(RenderContext ctx, HtmlWriter out) { // Get the ExperimentAnnotations record Integer experimentAnnotationsId = ctx.get(colInfo.getFieldKey(), Integer.class); @@ -209,18 +211,14 @@ public void renderGridCellContents(RenderContext ctx, Writer oldWriter, HtmlWrit String accessUrl = ExperimentAnnotationsManager.getExperimentShortUrl(expAnnotations); - if(accessUrl == null) - { - oldWriter.write(""); - } - else + if (accessUrl != null) { var link = new Link.LinkBuilder("Share") - .clearClasses().addClass("button-small button-small-green") - .style("margin:0px 5px 0px 2px;") - .onClick("showShareLink(this, " + PageFlowUtil.jsString(accessUrl) + ");return false;"); - DIV(link.build()).appendTo(oldWriter); + .clearClasses().addClass("button-small button-small-green") + .style("margin:0px 5px 0px 2px;") + .onClick("showShareLink(this, " + PageFlowUtil.jsString(accessUrl) + ");return false;"); + DIV(link).appendTo(out); } } }); @@ -704,7 +702,7 @@ public AutoCompleteColumn(ColumnInfo col, ActionURL autocompletionUrl, boolean p } @Override - public void renderInputHtml(RenderContext ctx, Writer oldWriter, HtmlWriter out, Object value) throws IOException + public void renderInputHtml(RenderContext ctx, HtmlWriter out, Object value) { String name = getFormFieldName(ctx); String valueString = getStringValue(value, isDisabledInput(ctx)); @@ -714,20 +712,31 @@ public void renderInputHtml(RenderContext ctx, Writer oldWriter, HtmlWriter out, } String renderId = getRenderId(); - StringBuilder sb = new StringBuilder(); - - sb.append("\n"); - sb.append("
"); - sb.append(""); - sb.append("
"); - sb.append("
").append(PageFlowUtil.filter(getHelpText(), true, false)).append("
"); - oldWriter.write(sb.toString()); + SCRIPT( + JavaScriptFragment.unsafe( + "LABKEY.requiresScript([\"/PanoramaPublic/js/ExpAnnotAutoComplete.js\"], function() {\n" + + " Ext4.onReady(function(){\n" + + " initAutoComplete(" + _autoCompletionUrl + ", " + PageFlowUtil.jsString(renderId) + ", " + (_prefetch ? "true" : "false") + ");\n" + + " });" + + "});\n" + ) + ).appendTo(out); + + DIV( + at(style, "margin-top:5px;").id(renderId).cl("scrollable-dropdown-menu"), + new InputBuilder<>() + .type("text") + .className("tags") + .placeholder(_placeholderText) + .name(name) + .value(valueString) + ).appendTo(out); + + DIV( + at(style, "font-size:11px"), + HtmlString.unsafe(PageFlowUtil.filter(getHelpText(), true, false)) + ).appendTo(out); } @NotNull @@ -781,13 +790,13 @@ String getRenderId() private static class InstrumentColumn extends AutoCompleteColumn { - public InstrumentColumn(ColumnInfo col, ActionURL autocompletionUrl, boolean prefetch, String placeHolderText) { super(col, autocompletionUrl, prefetch, placeHolderText); } @Override + @NotNull String getRenderId() { return "input-picker-div-instrument"; @@ -803,12 +812,12 @@ public CatalogEntryIconColumn(ColumnInfo col) } @Override - public void renderGridCellContents(RenderContext ctx, Writer oldWriter, HtmlWriter out) throws IOException + public void renderGridCellContents(RenderContext ctx, HtmlWriter out) { User user = ctx.getViewContext().getUser(); if (user == null || user.isGuest()) { - HtmlString.NBSP.appendTo(oldWriter); + out.write(HtmlString.NBSP); return; } Integer catalogEntryId = ctx.get(getColumnInfo().getFieldKey(), Integer.class); @@ -828,13 +837,16 @@ public void renderGridCellContents(RenderContext ctx, Writer oldWriter, HtmlWrit ActionURL returnUrl = ctx.getViewContext().getActionURL().clone(); ActionURL catalogEntryLink = entry != null ? PanoramaPublicController.getViewCatalogEntryUrl(expAnnot, entry).addReturnUrl(returnUrl) : PanoramaPublicController.getAddCatalogEntryUrl(expAnnot).addReturnUrl(returnUrl); - DOM.A(at(href, catalogEntryLink.getLocalURIString(), title, PageFlowUtil.filter(imageTitle)), - DOM.IMG(at(src, imageUrl, height, 22, width, 22))) - .appendTo(oldWriter); + DOM.A( + at(href, catalogEntryLink.getLocalURIString(), title, PageFlowUtil.filter(imageTitle)), + DOM.IMG( + at(src, imageUrl, height, 22, width, 22) + ) + ).appendTo(out); return; } } - HtmlString.NBSP.appendTo(oldWriter); + out.write(HtmlString.NBSP); } } } diff --git a/panoramapublic/src/org/labkey/panoramapublic/query/PeptideMatchesDisplayColumnFactory.java b/panoramapublic/src/org/labkey/panoramapublic/query/PeptideMatchesDisplayColumnFactory.java index ae80fced..e5582de5 100644 --- a/panoramapublic/src/org/labkey/panoramapublic/query/PeptideMatchesDisplayColumnFactory.java +++ b/panoramapublic/src/org/labkey/panoramapublic/query/PeptideMatchesDisplayColumnFactory.java @@ -13,8 +13,6 @@ import org.labkey.api.view.ActionURL; import org.labkey.api.writer.HtmlWriter; -import java.io.IOException; -import java.io.Writer; import java.util.Set; public class PeptideMatchesDisplayColumnFactory implements DisplayColumnFactory @@ -38,7 +36,7 @@ public void addQueryFieldKeys(Set keys) } @Override - public void renderGridCellContents(RenderContext ctx, Writer oldWriter, HtmlWriter out) throws IOException + public void renderGridCellContents(RenderContext ctx, HtmlWriter out) { String proteinLabel = ctx.get(PEPTIDE_SEQUENCE, String.class); String exactMatch = ctx.get(EXACT_MATCH, String.class); @@ -49,8 +47,8 @@ public void renderGridCellContents(RenderContext ctx, Writer oldWriter, HtmlWrit searchUrl.addParameter("peptideSequence", proteinLabel); searchUrl.addParameter("exactMatch", exactMatch); - oldWriter.write(new Link.LinkBuilder(String.valueOf(matches)).href(searchUrl).toString()); - oldWriter.write(PageFlowUtil.button("View").href(searchUrl).toString()); + out.write(new Link.LinkBuilder(String.valueOf(matches)).href(searchUrl)); + out.write(PageFlowUtil.button("View").href(searchUrl)); } }; } diff --git a/panoramapublic/src/org/labkey/panoramapublic/query/ProteinMatchesDisplayColumnFactory.java b/panoramapublic/src/org/labkey/panoramapublic/query/ProteinMatchesDisplayColumnFactory.java index e8b5497f..3821717e 100644 --- a/panoramapublic/src/org/labkey/panoramapublic/query/ProteinMatchesDisplayColumnFactory.java +++ b/panoramapublic/src/org/labkey/panoramapublic/query/ProteinMatchesDisplayColumnFactory.java @@ -13,13 +13,10 @@ import org.labkey.api.view.ActionURL; import org.labkey.api.writer.HtmlWriter; -import java.io.IOException; -import java.io.Writer; import java.util.Set; public class ProteinMatchesDisplayColumnFactory implements DisplayColumnFactory { - private static final FieldKey PROTEIN_LABEL = FieldKey.fromParts("proteinLabel"); private static final FieldKey EXACT_MATCH = FieldKey.fromParts("exactMatch"); private static final FieldKey CONTAINER = FieldKey.fromParts("container"); @@ -39,7 +36,7 @@ public void addQueryFieldKeys(Set keys) } @Override - public void renderGridCellContents(RenderContext ctx, Writer oldWriter, HtmlWriter out) throws IOException + public void renderGridCellContents(RenderContext ctx, HtmlWriter out) { Integer matches = ctx.get(FieldKey.fromParts("Matches"), Integer.class); String proteinLabel = ctx.get(PROTEIN_LABEL, String.class); @@ -50,8 +47,8 @@ public void renderGridCellContents(RenderContext ctx, Writer oldWriter, HtmlWrit searchUrl.addParameter("proteinLabel", proteinLabel); searchUrl.addParameter("exactMatch", exactMatch); - oldWriter.write(new Link.LinkBuilder(String.valueOf(matches)).href(searchUrl).toString()); - oldWriter.write(PageFlowUtil.button("View").href(searchUrl).toString()); + out.write(new Link.LinkBuilder(String.valueOf(matches)).href(searchUrl)); + out.write(PageFlowUtil.button("View").href(searchUrl)); } }; } diff --git a/panoramapublic/src/org/labkey/panoramapublic/query/SmallMoleculesMatchesDisplayColumnFactory.java b/panoramapublic/src/org/labkey/panoramapublic/query/SmallMoleculesMatchesDisplayColumnFactory.java index f4814e2d..ba06932b 100644 --- a/panoramapublic/src/org/labkey/panoramapublic/query/SmallMoleculesMatchesDisplayColumnFactory.java +++ b/panoramapublic/src/org/labkey/panoramapublic/query/SmallMoleculesMatchesDisplayColumnFactory.java @@ -13,8 +13,6 @@ import org.labkey.api.view.ActionURL; import org.labkey.api.writer.HtmlWriter; -import java.io.IOException; -import java.io.Writer; import java.util.Set; public class SmallMoleculesMatchesDisplayColumnFactory implements DisplayColumnFactory @@ -38,7 +36,7 @@ public void addQueryFieldKeys(Set keys) } @Override - public void renderGridCellContents(RenderContext ctx, Writer oldWriter, HtmlWriter out) throws IOException + public void renderGridCellContents(RenderContext ctx, HtmlWriter out) { String smallMol= ctx.get(SMALL_MOLECULE, String.class); String exactMatch = ctx.get(EXACT_MATCH, String.class); @@ -49,8 +47,8 @@ public void renderGridCellContents(RenderContext ctx, Writer oldWriter, HtmlWrit searchUrl.addParameter("smallMolecule", smallMol); searchUrl.addParameter("exactMatch", exactMatch); - oldWriter.write(new Link.LinkBuilder(String.valueOf(matches)).href(searchUrl).toString()); - oldWriter.write(PageFlowUtil.button("View").href(searchUrl).toString()); + out.write(new Link.LinkBuilder(String.valueOf(matches)).href(searchUrl)); + out.write(PageFlowUtil.button("View").href(searchUrl)); } }; } diff --git a/panoramapublic/src/org/labkey/panoramapublic/query/SubmissionTableInfo.java b/panoramapublic/src/org/labkey/panoramapublic/query/SubmissionTableInfo.java index da1be00d..4159b01b 100644 --- a/panoramapublic/src/org/labkey/panoramapublic/query/SubmissionTableInfo.java +++ b/panoramapublic/src/org/labkey/panoramapublic/query/SubmissionTableInfo.java @@ -23,8 +23,6 @@ import org.labkey.panoramapublic.model.Submission; import org.labkey.panoramapublic.view.publish.ShortUrlDisplayColumnFactory; -import java.io.IOException; -import java.io.Writer; import java.util.ArrayList; import java.util.List; @@ -158,7 +156,7 @@ public DisplayColumn createRenderer(ColumnInfo colInfo) return new DataColumn(colInfo) { @Override - public void renderGridCellContents(RenderContext ctx, Writer oldWriter, HtmlWriter out) throws IOException + public void renderGridCellContents(RenderContext ctx, HtmlWriter out) { Integer id = ctx.get(colInfo.getFieldKey(), Integer.class); Submission s = SubmissionManager.getSubmission(id, ctx.getContainer()); @@ -166,7 +164,7 @@ public void renderGridCellContents(RenderContext ctx, Writer oldWriter, HtmlWrit { // Show the delete link only if the experiment has not yet been copied _url.replaceParameter("id", id); - oldWriter.write(PageFlowUtil.link("Delete").href(_url).toString()); + out.write(PageFlowUtil.link("Delete").href(_url)); } } }; @@ -188,7 +186,7 @@ public DisplayColumn createRenderer(ColumnInfo colInfo) return new DataColumn(colInfo) { @Override - public void renderGridCellContents(RenderContext ctx, Writer oldWriter, HtmlWriter out) throws IOException + public void renderGridCellContents(RenderContext ctx, HtmlWriter out) { Integer id = ctx.get(colInfo.getFieldKey(), Integer.class); Submission s = SubmissionManager.getSubmission(id, ctx.getContainer()); @@ -206,13 +204,13 @@ public void renderGridCellContents(RenderContext ctx, Writer oldWriter, HtmlWrit { ActionURL resubmitUrl = PanoramaPublicController.getResubmitExperimentURL(js.getExperimentAnnotationsId(), js.getJournalId(), _container, s.isKeepPrivate(), true /*check if data is valid for PXD. Always do this check on a resubmit.*/); - oldWriter.write(PageFlowUtil.link("Resubmit").href(resubmitUrl).toString()); + out.write(PageFlowUtil.link("Resubmit").href(resubmitUrl)); } } else { ActionURL ediUrl = PanoramaPublicController.getUpdateSubmissionURL(js.getExperimentAnnotationsId(), js.getJournalId(), _container, s.isKeepPrivate(), true); - oldWriter.write(PageFlowUtil.link("Edit").href(ediUrl).toString()); + out.write(PageFlowUtil.link("Edit").href(ediUrl)); } } } diff --git a/panoramapublic/src/org/labkey/panoramapublic/query/modification/ModificationDocsDisplayColumnFactory.java b/panoramapublic/src/org/labkey/panoramapublic/query/modification/ModificationDocsDisplayColumnFactory.java index 7fa385ca..2112e4c4 100644 --- a/panoramapublic/src/org/labkey/panoramapublic/query/modification/ModificationDocsDisplayColumnFactory.java +++ b/panoramapublic/src/org/labkey/panoramapublic/query/modification/ModificationDocsDisplayColumnFactory.java @@ -21,8 +21,6 @@ import org.labkey.api.writer.HtmlWriter; import org.labkey.panoramapublic.PanoramaPublicSchema; -import java.io.IOException; -import java.io.Writer; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; @@ -55,7 +53,7 @@ public DisplayColumn createRenderer(ColumnInfo colInfo) return new DataColumn(colInfo) { @Override - public void renderGridCellContents(RenderContext ctx, Writer oldWriter, HtmlWriter out) throws IOException + public void renderGridCellContents(RenderContext ctx, HtmlWriter out) { String runIds = ctx.get(colInfo.getFieldKey(), String.class); if (!StringUtils.isBlank(runIds)) @@ -67,7 +65,7 @@ public void renderGridCellContents(RenderContext ctx, Writer oldWriter, HtmlWrit .collect(Collectors.toSet()); List runs = getRuns(ids, user); - if (runs.size() > 0) + if (!runs.isEmpty()) { Long modId = ctx.get(MOD_ID, Long.class); List runPeptideLinks = new ArrayList<>(); @@ -78,11 +76,11 @@ public void renderGridCellContents(RenderContext ctx, Writer oldWriter, HtmlWrit modId != null ? TD(at(style, "padding:2px; vertical-align:top;"), peptidesLink(run, modId)) : HtmlString.EMPTY_STRING) ); } - DOM.TABLE(runPeptideLinks).appendTo(oldWriter); + DOM.TABLE(runPeptideLinks).appendTo(out); } else { - oldWriter.write("No runs found for Ids: " + PageFlowUtil.filter(runIds)); + out.write("No runs found for Ids: " + runIds); } } } diff --git a/panoramapublic/src/org/labkey/panoramapublic/query/modification/UnimodIdDisplayColumnFactory.java b/panoramapublic/src/org/labkey/panoramapublic/query/modification/UnimodIdDisplayColumnFactory.java index c4caa47a..e80dc387 100644 --- a/panoramapublic/src/org/labkey/panoramapublic/query/modification/UnimodIdDisplayColumnFactory.java +++ b/panoramapublic/src/org/labkey/panoramapublic/query/modification/UnimodIdDisplayColumnFactory.java @@ -8,8 +8,6 @@ import org.labkey.api.writer.HtmlWriter; import org.labkey.panoramapublic.proteomexchange.UnimodModification; -import java.io.Writer; - /** * Displays a link to the Unimod page for a modification with the given Unimod Id. * Example: https://www.unimod.org/modifications_view.php?editid1=4 @@ -22,12 +20,12 @@ public DisplayColumn createRenderer(ColumnInfo colInfo) return new DataColumn(colInfo) { @Override - public void renderGridCellContents(RenderContext ctx, Writer oldWriter, HtmlWriter out) + public void renderGridCellContents(RenderContext ctx, HtmlWriter out) { Integer unimodId = ctx.get(colInfo.getFieldKey(), Integer.class); if (unimodId != null) { - UnimodModification.getLink(unimodId).appendTo(oldWriter); + UnimodModification.getLink(unimodId).appendTo(out); } } }; diff --git a/panoramapublic/src/org/labkey/panoramapublic/query/modification/UnimodMatchDisplayColumnFactory.java b/panoramapublic/src/org/labkey/panoramapublic/query/modification/UnimodMatchDisplayColumnFactory.java index f2eacd60..a60698e4 100644 --- a/panoramapublic/src/org/labkey/panoramapublic/query/modification/UnimodMatchDisplayColumnFactory.java +++ b/panoramapublic/src/org/labkey/panoramapublic/query/modification/UnimodMatchDisplayColumnFactory.java @@ -21,7 +21,6 @@ import org.labkey.panoramapublic.query.ExperimentAnnotationsManager; import org.labkey.panoramapublic.query.ModificationInfoManager; -import java.io.Writer; import java.util.ArrayList; import java.util.List; import java.util.Set; @@ -49,7 +48,7 @@ public DisplayColumn createRenderer(ColumnInfo colInfo) return new DataColumn(colInfo) { @Override - public void renderGridCellContents(RenderContext ctx, Writer oldWriter, HtmlWriter out) + public void renderGridCellContents(RenderContext ctx, HtmlWriter out) { Integer unimodId = ctx.get(colInfo.getFieldKey(), Integer.class); @@ -59,7 +58,7 @@ public void renderGridCellContents(RenderContext ctx, Writer oldWriter, HtmlWrit if (modInfoId == null) { // This is the Unimod Id from the Skyline document - UnimodModification.getLink(unimodId).appendTo(oldWriter); + UnimodModification.getLink(unimodId).appendTo(out); } else { @@ -75,7 +74,7 @@ public void renderGridCellContents(RenderContext ctx, Writer oldWriter, HtmlWrit .href(deleteUrl) .usePost(String.format("Are you sure you want to delete the saved Unimod information for modification '%s'?", dbMod != null ? dbMod.getName() : "")) - .build())).appendTo(oldWriter); + .build())).appendTo(out); } } else @@ -94,7 +93,7 @@ public void renderGridCellContents(RenderContext ctx, Writer oldWriter, HtmlWrit url.addCancelURL(ctx.getViewContext().getActionURL()); var findMatchLink = new Link.LinkBuilder("Find Match").href(url); DIV(SPAN(at(style, "color: #d70101; font-weight: bold; margin-right:5px;"), "MISSING"), - findMatchLink).appendTo(oldWriter); + findMatchLink).appendTo(out); } } } diff --git a/panoramapublic/src/org/labkey/panoramapublic/query/speclib/EditLibInfoDisplayColumnFactory.java b/panoramapublic/src/org/labkey/panoramapublic/query/speclib/EditLibInfoDisplayColumnFactory.java index 3395c3cf..0019af9b 100644 --- a/panoramapublic/src/org/labkey/panoramapublic/query/speclib/EditLibInfoDisplayColumnFactory.java +++ b/panoramapublic/src/org/labkey/panoramapublic/query/speclib/EditLibInfoDisplayColumnFactory.java @@ -15,8 +15,6 @@ import org.labkey.panoramapublic.model.ExperimentAnnotations; import org.labkey.panoramapublic.query.ExperimentAnnotationsManager; -import java.io.IOException; -import java.io.Writer; import java.util.Set; public class EditLibInfoDisplayColumnFactory implements DisplayColumnFactory @@ -32,7 +30,7 @@ public DisplayColumn createRenderer(ColumnInfo colInfo) return new DataColumn(colInfo) { @Override - public void renderGridCellContents(RenderContext ctx, Writer oldWriter, HtmlWriter out) throws IOException + public void renderGridCellContents(RenderContext ctx, HtmlWriter out) { if (ctx.getContainer().hasPermission(ctx.getViewContext().getUser(), UpdatePermission.class)) { @@ -59,18 +57,16 @@ public void renderGridCellContents(RenderContext ctx, Writer oldWriter, HtmlWrit } ActionURL editUrl = PanoramaPublicController.getEditSpecLibInfoURL(experimentAnnotationsId, specLibId, specLibInfoId, ctx.getContainer()); editUrl.addReturnUrl(returnUrl); - oldWriter.write(PageFlowUtil.link(specLibInfoId != null ? "Edit" : "Add").href(editUrl).toString()); + out.write(PageFlowUtil.link(specLibInfoId != null ? "Edit" : "Add").href(editUrl)); if (specLibInfoId != null) { ActionURL deleteUrl = PanoramaPublicController.getDeleteSpecLibInfoURL(experimentAnnotationsId, specLibInfoId, ctx.getContainer()); deleteUrl.addReturnUrl(returnUrl); - oldWriter.write(PageFlowUtil.link("Delete").href(deleteUrl).usePost("Are you sure you want to delete the spectral library information?").toString()); + out.write(PageFlowUtil.link("Delete").href(deleteUrl).usePost("Are you sure you want to delete the spectral library information?")); } - return; } } } - oldWriter.write(""); } @Override diff --git a/panoramapublic/src/org/labkey/panoramapublic/query/speclib/LibraryDocsDisplayColumnFactory.java b/panoramapublic/src/org/labkey/panoramapublic/query/speclib/LibraryDocsDisplayColumnFactory.java index af3b4d2a..f6c594c9 100644 --- a/panoramapublic/src/org/labkey/panoramapublic/query/speclib/LibraryDocsDisplayColumnFactory.java +++ b/panoramapublic/src/org/labkey/panoramapublic/query/speclib/LibraryDocsDisplayColumnFactory.java @@ -10,13 +10,10 @@ import org.labkey.api.query.FieldKey; import org.labkey.api.security.User; import org.labkey.api.util.DOM; -import org.labkey.api.util.PageFlowUtil; import org.labkey.api.writer.HtmlWriter; import org.labkey.panoramapublic.model.speclib.SpectralLibrary; import org.labkey.panoramapublic.query.SpecLibInfoManager; -import java.io.IOException; -import java.io.Writer; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -41,7 +38,7 @@ public DisplayColumn createRenderer(ColumnInfo colInfo) return new DataColumn(colInfo) { @Override - public void renderGridCellContents(RenderContext ctx, Writer oldWriter, HtmlWriter out) throws IOException + public void renderGridCellContents(RenderContext ctx, HtmlWriter out) { String specLibIds = ctx.get(colInfo.getFieldKey(), String.class); if (!StringUtils.isBlank(specLibIds)) @@ -52,7 +49,7 @@ public void renderGridCellContents(RenderContext ctx, Writer oldWriter, HtmlWrit .filter(l -> l != 0) .collect(Collectors.toSet()); List libraries = SpecLibInfoManager.getLibraries(ids, user); - if (libraries.size() > 0) + if (!libraries.isEmpty()) { Integer specLibInfoId = ctx.get(SPECLIB_INFO_ID, Integer.class); List runLibraryLinks = new ArrayList<>(); @@ -66,11 +63,11 @@ public void renderGridCellContents(RenderContext ctx, Writer oldWriter, HtmlWrit "specLibInfoId", String.valueOf(specLibInfoId))))) ); } - DOM.TABLE(runLibraryLinks).appendTo(oldWriter); + DOM.TABLE(runLibraryLinks).appendTo(out); } else { - oldWriter.write("No libraries found for Ids: " + PageFlowUtil.filter(specLibIds)); + out.write("No libraries found for Ids: " + specLibIds); } } } diff --git a/pwebdashboard/src/org/labkey/pwebdashboard/ProjectAdminsTable.java b/pwebdashboard/src/org/labkey/pwebdashboard/ProjectAdminsTable.java index d07a8211..d5d360f1 100644 --- a/pwebdashboard/src/org/labkey/pwebdashboard/ProjectAdminsTable.java +++ b/pwebdashboard/src/org/labkey/pwebdashboard/ProjectAdminsTable.java @@ -31,13 +31,12 @@ import org.labkey.api.security.roles.RoleManager; import org.labkey.api.security.roles.SiteAdminRole; import org.labkey.api.util.HtmlString; +import org.labkey.api.util.HtmlStringBuilder; import org.labkey.api.util.Link; import org.labkey.api.util.PageFlowUtil; import org.labkey.api.view.ActionURL; import org.labkey.api.writer.HtmlWriter; -import java.io.IOException; -import java.io.Writer; import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -136,7 +135,7 @@ private String getCommaSeparatedAdmins(Container container) String space = ""; - if (allAdmins.size() > 0) + if (!allAdmins.isEmpty()) { for(UserPrincipal user: allAdmins) { @@ -151,8 +150,10 @@ private String getCommaSeparatedAdmins(Container container) return null; } + private static final HtmlString COMMA_SPACE = HtmlStringBuilder.of(",").append(HtmlString.NBSP).getHtmlString(); + @Override - public void renderGridCellContents(RenderContext ctx, Writer oldWriter, HtmlWriter out) throws IOException + public void renderGridCellContents(RenderContext ctx, HtmlWriter out) { String entityId = ctx.get(getColumnInfo().getFieldKey(), String.class); Container container = ContainerManager.getForId(entityId); @@ -161,27 +162,18 @@ public void renderGridCellContents(RenderContext ctx, Writer oldWriter, HtmlWrit { List allAdmins = getAdmins(container); - StringBuilder display = new StringBuilder(); - - String space = ""; + HtmlString space = HtmlString.EMPTY_STRING; if (!allAdmins.isEmpty()) { for(UserPrincipal user: allAdmins) { - display.append(space); - display.append(getUserDetails(container, user)); - space = ", "; - + out.write(space); + out.write(getUserDetails(container, user)); + space = COMMA_SPACE; } - - oldWriter.write(display.toString()); } } - else - { - oldWriter.write(""); - } } @NotNull diff --git a/signup/src/org/labkey/signup/SignUpSchema.java b/signup/src/org/labkey/signup/SignUpSchema.java index 26e19b11..0edda9bc 100644 --- a/signup/src/org/labkey/signup/SignUpSchema.java +++ b/signup/src/org/labkey/signup/SignUpSchema.java @@ -42,8 +42,6 @@ import org.labkey.api.view.ActionURL; import org.labkey.api.writer.HtmlWriter; -import java.io.IOException; -import java.io.Writer; import java.util.Set; public class SignUpSchema extends UserSchema @@ -92,19 +90,19 @@ public TableInfo createTable(String name, ContainerFilter containerFilter) oldgroup.setDisplayColumnFactory(colInfo -> new DataColumn(colInfo) { @Override - public void renderGridCellContents(RenderContext ctx, Writer oldWriter, HtmlWriter out) throws IOException + public void renderGridCellContents(RenderContext ctx, HtmlWriter out) { Group old = org.labkey.api.security.SecurityManager.getGroup(Integer.parseInt(String.valueOf(ctx.get(FieldKey.fromParts("oldgroup"))))); - oldWriter.write(old.getName()); + out.write(old.getName()); } }); newgroup.setDisplayColumnFactory(colInfo -> new DataColumn(colInfo) { @Override - public void renderGridCellContents(RenderContext ctx, Writer oldWriter, HtmlWriter out) throws IOException + public void renderGridCellContents(RenderContext ctx, HtmlWriter out) { Group old = org.labkey.api.security.SecurityManager.getGroup(Integer.parseInt(String.valueOf(ctx.get(FieldKey.fromParts("newgroup"))))); - oldWriter.write(old.getName()); + out.write(old.getName()); } }); } @@ -121,7 +119,7 @@ public DisplayColumn createRenderer(ColumnInfo colInfo) return new DataColumn(colInfo) { @Override - public void renderGridCellContents(RenderContext ctx, Writer oldWriter, HtmlWriter out) throws IOException + public void renderGridCellContents(RenderContext ctx, HtmlWriter out) { Container container = ContainerManager.getForId(String.valueOf(ctx.get(FieldKey.fromParts("Container")))); String email = String.valueOf(ctx.get(FieldKey.fromParts("email"))); @@ -130,7 +128,7 @@ public void renderGridCellContents(RenderContext ctx, Writer oldWriter, HtmlWrit ActionURL url = new ActionURL(SignUpController.ConfirmAction.class, container); url.addParameter("email", email); url.addParameter("key", key); - oldWriter.write(url.getLocalURIString()); + out.write(url.getLocalURIString()); // out.write("Confirmation URL"); }