1616package org .labkey .ehr .table ;
1717
1818import org .apache .commons .lang3 .StringUtils ;
19- import org .apache .logging .log4j .Logger ;
2019import org .apache .logging .log4j .LogManager ;
20+ import org .apache .logging .log4j .Logger ;
2121import org .jetbrains .annotations .NotNull ;
22+ import org .labkey .api .collections .LabKeyCollectors ;
2223import org .labkey .api .data .ColumnInfo ;
2324import org .labkey .api .data .DataColumn ;
2425import org .labkey .api .data .RenderContext ;
2526import org .labkey .api .query .FieldKey ;
27+ import org .labkey .api .util .HtmlString ;
28+ import org .labkey .api .util .HtmlStringBuilder ;
2629import org .labkey .api .view .template .ClientDependency ;
2730import org .labkey .api .writer .HtmlWriter ;
2831
29- import java .io .IOException ;
30- import java .io .Writer ;
3132import java .util .Collections ;
3233import java .util .Map ;
3334import java .util .Set ;
3435import java .util .TreeMap ;
3536
36- /**
37- * User: bimber
38- * Date: 10/23/13
39- * Time: 3:49 PM
40- */
4137public class SNOMEDCodesDisplayColumn extends DataColumn
4238{
4339 private static final Logger _log = LogManager .getLogger (SNOMEDCodesDisplayColumn .class );
@@ -48,48 +44,41 @@ public SNOMEDCodesDisplayColumn(ColumnInfo col)
4844 }
4945
5046 @ Override
51- public void renderGridCellContents (RenderContext ctx , Writer oldWriter , HtmlWriter out ) throws IOException
47+ public void renderGridCellContents (RenderContext ctx , HtmlWriter out )
5248 {
5349 Object o = getValue (ctx );
5450 if (o != null )
5551 {
5652 String val = o .toString ();
5753 String [] parts = val .split ("\\ n" );
58- Map <Integer , String > ret = new TreeMap <>();
54+ Map <Integer , HtmlStringBuilder > ret = new TreeMap <>();
5955 for (String part : parts )
6056 {
61- part = StringUtils .trimToNull (part );
57+ part = StringUtils .trimToNull (part ); // TODO: trimToEmpty()? null means an NPE on the next line!
6258 String [] tokens = part .split (": " );
6359 if (tokens .length == 2 && StringUtils .trimToNull (tokens [0 ]) != null )
6460 {
6561 Integer sort = Integer .parseInt (tokens [0 ]);
6662 if (ret .containsKey (sort ))
6763 {
6864 Object objectid = ctx .get (FieldKey .fromString ("objectid" ));
69- _log .error ("Duplicate sort for snomed: " + sort + ( objectid == null ? "" : ". objectid: " + objectid ) );
70- ret .put (sort , ret . get ( sort ) + "<br>" + part );
65+ _log .error ("Duplicate sort for snomed: {}{}" , sort , objectid == null ? "" : ". objectid: " + objectid );
66+ ret .get (sort ). append ( HtmlString . BR ). append ( part );
7167 }
7268 else
7369 {
74- ret .put (sort , part );
70+ ret .put (sort , HtmlStringBuilder . of ( part ) );
7571 }
76-
7772 }
7873 else
7974 {
80- _log .error ("Invalid SNOMED string: " + val );
75+ _log .error ("Invalid SNOMED string: {}" , val );
8176 }
8277 }
8378
84- String text ;
85- String delim = "" ;
86- for (Integer sort : ret .keySet ())
87- {
88- text = ret .get (sort ).replaceAll ("\\ r?\\ n" , "<br>" );
89- oldWriter .write (delim );
90- delim = "<br>" ;
91- oldWriter .write (text );
92- }
79+ out .write (ret .values ().stream ()
80+ .map (HtmlStringBuilder ::getHtmlString )
81+ .collect (LabKeyCollectors .joining (HtmlString .BR )));
9382 }
9483 }
9584
0 commit comments