Skip to content

Commit 0619778

Browse files
committed
Additional cleanup to remove raw strings from JSP
1 parent b7062ab commit 0619778

File tree

4 files changed

+81
-78
lines changed

4 files changed

+81
-78
lines changed

blast/src/org/labkey/blast/BLASTController.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,16 @@
2020
import org.jetbrains.annotations.NotNull;
2121
import org.json.JSONObject;
2222
import org.labkey.api.action.AbstractFileUploadAction;
23-
import org.labkey.api.action.ReadOnlyApiAction;
24-
import org.labkey.api.action.MutatingApiAction;
2523
import org.labkey.api.action.ApiJsonWriter;
2624
import org.labkey.api.action.ApiResponse;
2725
import org.labkey.api.action.ApiSimpleResponse;
2826
import org.labkey.api.action.ExportAction;
27+
import org.labkey.api.action.MutatingApiAction;
28+
import org.labkey.api.action.ReadOnlyApiAction;
2929
import org.labkey.api.action.SimpleErrorView;
3030
import org.labkey.api.action.SimpleViewAction;
3131
import org.labkey.api.action.SpringActionController;
32+
import org.labkey.api.assay.AssayFileWriter;
3233
import org.labkey.api.data.Container;
3334
import org.labkey.api.data.ContainerManager;
3435
import org.labkey.api.data.PropertyManager;
@@ -48,7 +49,6 @@
4849
import org.labkey.api.security.permissions.InsertPermission;
4950
import org.labkey.api.security.permissions.ReadPermission;
5051
import org.labkey.api.security.permissions.UpdatePermission;
51-
import org.labkey.api.assay.AssayFileWriter;
5252
import org.labkey.api.util.ExceptionUtil;
5353
import org.labkey.api.util.PageFlowUtil;
5454
import org.labkey.api.util.Pair;
@@ -69,6 +69,7 @@
6969
import java.io.IOException;
7070
import java.io.OutputStreamWriter;
7171
import java.io.PrintWriter;
72+
import java.io.Writer;
7273
import java.util.ArrayList;
7374
import java.util.Collections;
7475
import java.util.HashMap;
@@ -605,7 +606,7 @@ public void export(DownloadBlastResultsForm form, HttpServletResponse response,
605606
return;
606607
}
607608

608-
try (OutputStreamWriter out = new OutputStreamWriter(response.getOutputStream(), StringUtilsLabKey.DEFAULT_CHARSET))
609+
try (Writer out = new OutputStreamWriter(response.getOutputStream(), StringUtilsLabKey.DEFAULT_CHARSET))
609610
{
610611
Map<String, String> headers = new HashMap<>();
611612

blast/src/org/labkey/blast/BLASTWrapper.java

Lines changed: 10 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import org.apache.commons.lang3.StringUtils;
44
import org.apache.commons.lang3.SystemUtils;
55
import org.apache.logging.log4j.Logger;
6-
import org.apache.logging.log4j.LogManager;
76
import org.jetbrains.annotations.Nullable;
87
import org.labkey.api.pipeline.PipelineJobException;
98
import org.labkey.api.pipeline.PipelineJobService;
@@ -15,7 +14,6 @@
1514
import java.io.File;
1615
import java.io.FilenameFilter;
1716
import java.io.IOException;
18-
import java.io.Writer;
1917
import java.util.ArrayList;
2018
import java.util.Arrays;
2119
import java.util.List;
@@ -94,7 +92,7 @@ public File runBlastN(String blastDbGuid, File input, File outputFile, Map<Strin
9492
}
9593
}
9694

97-
executeBlast(args, null);
95+
executeBlast(args, false);
9896
if (!outputFile.exists())
9997
{
10098
throw new PipelineJobException("Expected file not created: " + outputFile.getPath());
@@ -103,7 +101,7 @@ public File runBlastN(String blastDbGuid, File input, File outputFile, Map<Strin
103101
return outputFile;
104102
}
105103

106-
public void runBlastFormatter(File inputFile, BlastJob.BLAST_OUTPUT_FORMAT outputFormat, Writer out) throws PipelineJobException, IOException
104+
public String runBlastFormatter(File inputFile, BlastJob.BLAST_OUTPUT_FORMAT outputFormat) throws PipelineJobException, IOException
107105
{
108106
File exe = getExe("blast_formatter", null);
109107
if (!exe.exists())
@@ -120,7 +118,7 @@ public void runBlastFormatter(File inputFile, BlastJob.BLAST_OUTPUT_FORMAT outpu
120118
args.add("-outfmt");
121119
args.add(outputFormat.getCmd());
122120

123-
executeBlast(args, out);
121+
return executeBlast(args, true);
124122
}
125123

126124
public File createDatabase(String dbName, String title, File fastaFile, File dbDir, Logger log) throws PipelineJobException, IOException
@@ -174,7 +172,7 @@ public File createDatabase(String dbName, String title, File fastaFile, File dbD
174172
args.add("-out");
175173
args.add(outFile.getPath());
176174

177-
executeBlast(args, null);
175+
executeBlast(args, false);
178176

179177
File[] files = dbDir.listFiles(new FilenameFilter()
180178
{
@@ -208,7 +206,7 @@ public boolean accept(File dir, String name)
208206
indexArgs.add("-iformat");
209207
indexArgs.add("blastdb");
210208

211-
executeBlast(indexArgs, null);
209+
executeBlast(indexArgs, false);
212210

213211
File[] idxFiles = dbDir.listFiles(new FilenameFilter()
214212
{
@@ -228,7 +226,7 @@ public boolean accept(File dir, String name)
228226
return outFile;
229227
}
230228

231-
private void executeBlast(List<String> args, @Nullable Writer writer) throws PipelineJobException, IOException
229+
private @Nullable String executeBlast(List<String> args, boolean retainOutput) throws PipelineJobException, IOException
232230
{
233231
StringBuilder output = new StringBuilder();
234232

@@ -238,20 +236,14 @@ private void executeBlast(List<String> args, @Nullable Writer writer) throws Pip
238236
getLogger().info(StringUtils.join(args, " "));
239237
}
240238

241-
if (writer == null)
239+
if (retainOutput)
242240
{
243-
execute(args);
241+
return executeWithOutput(args);
244242
}
245243
else
246244
{
247-
String ret = executeWithOutput(args);
248-
writer.write(ret);
249-
}
250-
251-
252-
if (getLogger() != null && output.length() > 0)
253-
{
254-
getLogger().info(output.toString());
245+
execute(args);
246+
return null;
255247
}
256248
}
257249

blast/src/org/labkey/blast/model/BlastJob.java

Lines changed: 63 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
package org.labkey.blast.model;
22

33
import org.apache.commons.lang3.StringUtils;
4-
import org.apache.logging.log4j.Logger;
54
import org.apache.logging.log4j.LogManager;
5+
import org.apache.logging.log4j.Logger;
66
import org.jetbrains.annotations.Nullable;
77
import org.json.JSONException;
88
import org.json.JSONObject;
@@ -23,19 +23,21 @@
2323
import org.labkey.blast.BLASTSchema;
2424
import org.labkey.blast.BLASTWrapper;
2525

26+
import javax.servlet.jsp.JspWriter;
2627
import java.io.File;
2728
import java.io.IOException;
2829
import java.io.Serializable;
2930
import java.io.StringWriter;
3031
import java.io.Writer;
3132
import java.util.ArrayList;
32-
import java.util.Collections;
3333
import java.util.Date;
3434
import java.util.HashMap;
3535
import java.util.List;
3636
import java.util.Map;
3737
import java.util.Scanner;
3838

39+
import static org.labkey.api.util.HtmlString.unsafe;
40+
3941
/**
4042
* User: bimber
4143
* Date: 7/20/2014
@@ -320,7 +322,14 @@ public void getResults(BLAST_OUTPUT_FORMAT outputFormat, Writer out) throws IOEx
320322
return;
321323
}
322324

323-
outputFormat.processResults(output, out);
325+
if (out instanceof JspWriter jsp)
326+
{
327+
jsp.print(unsafe(outputFormat.processResults(output)));
328+
}
329+
else
330+
{
331+
out.write(outputFormat.processResults(output));
332+
}
324333
}
325334

326335
public boolean hasError(User u)
@@ -381,16 +390,15 @@ public Alignment(int qLength, int sLength, int alignLength)
381390
private Map<String, Summary> _perfectHitSummary;
382391

383392
@Override
384-
public void processResults(File results, Writer out) throws IOException, PipelineJobException
393+
public String processResults(File results) throws IOException, PipelineJobException
385394
{
386395
//summary of perfect hits by query seq
387-
try (StringWriter writer = new StringWriter())
396+
try (StringWriter out = new StringWriter())
388397
{
389398
_perfectHitSummary = new HashMap<>();
390399

391-
new BLASTWrapper(_log).runBlastFormatter(results, BLAST_OUTPUT_FORMAT.alignmentSummary, writer);
392-
393-
Scanner scan = new Scanner(writer.getBuffer().toString());
400+
String resultsText = new BLASTWrapper(_log).runBlastFormatter(results, BLAST_OUTPUT_FORMAT.alignmentSummary);
401+
Scanner scan = new Scanner(resultsText);
394402
while (scan.hasNextLine())
395403
{
396404
String line = scan.nextLine();
@@ -420,7 +428,7 @@ public void processResults(File results, Writer out) throws IOException, Pipelin
420428
String qseq = tokens[8];
421429
String sseq = tokens[9];
422430

423-
int i=0;
431+
int i = 0;
424432
int qmatch = 0;
425433
int qmismatch = 0;
426434
while (i < qseq.length())
@@ -448,58 +456,60 @@ public void processResults(File results, Writer out) throws IOException, Pipelin
448456
}
449457
}
450458
}
451-
}
452459

453-
out.write("<br><br><b>Summary of Perfect Hits:</b><br>");
454-
out.write("<table border=1 cellpadding=\"3\" style=\"border-collapse: collapse;\"><tr><td>Query</td><td># Perfect Hits</td><td>Reference Names</td><td>Alignment Length</td><td>Query Length</td><td>Reference Length</td></tr>");
455-
for (String qname : _perfectHitSummary.keySet())
456-
{
457-
out.write("<tr>");
458-
out.write("<td>" + qname + "</td>");
459-
out.write("<td>" + _perfectHitSummary.get(qname).hitMap.size() + "</td>");
460-
461-
StringBuilder sNameCell = new StringBuilder();
462-
StringBuilder alignLengthCell = new StringBuilder();
463-
StringBuilder qLengthCell = new StringBuilder();
464-
StringBuilder sLengthCell = new StringBuilder();
465-
466-
Summary s = _perfectHitSummary.get(qname);
467-
String br = "";
468-
for (String sname : s.hitMap.keySet())
460+
out.write("<br><br><b>Summary of Perfect Hits:</b><br>");
461+
out.write("<table border=1 cellpadding=\"3\" style=\"border-collapse: collapse;\"><tr><td>Query</td><td># Perfect Hits</td><td>Reference Names</td><td>Alignment Length</td><td>Query Length</td><td>Reference Length</td></tr>");
462+
for (String qname : _perfectHitSummary.keySet())
469463
{
470-
for (Alignment a : s.hitMap.get(sname))
464+
out.write("<tr>");
465+
out.write("<td>" + qname + "</td>");
466+
out.write("<td>" + _perfectHitSummary.get(qname).hitMap.size() + "</td>");
467+
468+
StringBuilder sNameCell = new StringBuilder();
469+
StringBuilder alignLengthCell = new StringBuilder();
470+
StringBuilder qLengthCell = new StringBuilder();
471+
StringBuilder sLengthCell = new StringBuilder();
472+
473+
Summary s = _perfectHitSummary.get(qname);
474+
String br = "";
475+
for (String sname : s.hitMap.keySet())
471476
{
472-
sNameCell.append(br);
473-
sNameCell.append(sname);
477+
for (Alignment a : s.hitMap.get(sname))
478+
{
479+
sNameCell.append(br);
480+
sNameCell.append(sname);
474481

475-
alignLengthCell.append(br);
476-
alignLengthCell.append(a.alignLength);
482+
alignLengthCell.append(br);
483+
alignLengthCell.append(a.alignLength);
477484

478-
qLengthCell.append(br);
479-
qLengthCell.append(a.qLength);
485+
qLengthCell.append(br);
486+
qLengthCell.append(a.qLength);
480487

481-
sLengthCell.append(br);
482-
sLengthCell.append(a.sLength);
488+
sLengthCell.append(br);
489+
sLengthCell.append(a.sLength);
483490

484-
br = "<br>";
491+
br = "<br>";
492+
}
485493
}
486-
}
487494

488-
out.write("<td>" + sNameCell + "</td>");
489-
out.write("<td>" + alignLengthCell + "</td>");
490-
out.write("<td>" + qLengthCell + "</td>");
491-
out.write("<td>" + sLengthCell + "</td>");
495+
out.write("<td>" + sNameCell + "</td>");
496+
out.write("<td>" + alignLengthCell + "</td>");
497+
out.write("<td>" + qLengthCell + "</td>");
498+
out.write("<td>" + sLengthCell + "</td>");
492499

493-
out.write("</tr>");
494-
}
500+
out.write("</tr>");
501+
}
495502

496-
out.write("</table><br><br>");
497-
out.write("<hr>");
503+
out.write("</table><br><br>");
504+
out.write("<hr>");
498505

499-
out.write("<b>BLAST Output:</b>");
500-
out.write("<pre>");
501-
new BLASTWrapper(_log).runBlastFormatter(results, BLAST_OUTPUT_FORMAT.flatQueryAnchoredWithIdentities, out);
502-
out.write("</pre>");
506+
out.write("<b>BLAST Output:</b>");
507+
out.write("<pre>");
508+
out.write(new BLASTWrapper(_log).runBlastFormatter(results, BLAST_OUTPUT_FORMAT.flatQueryAnchoredWithIdentities));
509+
out.write("</pre>");
510+
511+
return out.toString();
512+
}
503513
}
504514

505515
private void appendHit(String qname, String sname, int qLen, int sLen, int alignLen)
@@ -547,23 +557,23 @@ public boolean supportsHTML()
547557
return _supportsHTML;
548558
}
549559

550-
public void processResults(File results, Writer out) throws IOException, PipelineJobException
560+
public String processResults(File results) throws IOException, PipelineJobException
551561
{
552562
if (_processor == null)
553563
{
554-
new BLASTWrapper(_log).runBlastFormatter(results, this, out);
564+
return new BLASTWrapper(_log).runBlastFormatter(results, this);
555565
}
556566
else
557567
{
558-
_processor.processResults(results, out);
568+
return _processor.processResults(results);
559569
}
560570
}
561571

562572
}
563573

564574
public interface BlastResultProcessor
565575
{
566-
void processResults(File results, Writer out) throws IOException, PipelineJobException;
576+
String processResults(File results) throws IOException, PipelineJobException;
567577
}
568578
}
569579

blast/src/org/labkey/blast/view/jobDetails.jsp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -205,18 +205,18 @@
205205
{
206206
if (!outputFormat.supportsHTML())
207207
{
208-
out.print("<pre>");
208+
out.print(unsafe("<pre>"));
209209
}
210210
job.getResults(outputFormat, out);
211211
212212
if (!outputFormat.supportsHTML())
213213
{
214-
out.print("</pre>");
214+
out.print(unsafe("</pre>"));
215215
}
216216
}
217217
else
218218
{
219-
out.print("Either no output format specified, or an invalid option was provided.");
219+
out.print(h("Either no output format specified, or an invalid option was provided."));
220220
}
221221
}
222222
else if (job.hasError(getUser()))

0 commit comments

Comments
 (0)