From ad3d9cc6d1cd6381c0aeb6689de93f546393d56d Mon Sep 17 00:00:00 2001 From: Darin Kelkhoff Date: Tue, 2 Apr 2024 19:30:52 -0500 Subject: [PATCH] CE-881 fix how booleans are written; after profiling, replace regex for cleansing test w/ indexOf calls --- .../excel/poi/StreamedPoiSheetWriter.java | 36 +++++++++++-------- 1 file changed, 21 insertions(+), 15 deletions(-) diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/reporting/excel/poi/StreamedPoiSheetWriter.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/reporting/excel/poi/StreamedPoiSheetWriter.java index 5579634a..43afbad7 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/reporting/excel/poi/StreamedPoiSheetWriter.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/reporting/excel/poi/StreamedPoiSheetWriter.java @@ -24,7 +24,6 @@ package com.kingsrook.qqq.backend.core.actions.reporting.excel.poi; import java.io.IOException; import java.io.Writer; -import java.util.regex.Pattern; import org.apache.poi.ss.util.CellReference; @@ -34,8 +33,6 @@ import org.apache.poi.ss.util.CellReference; *******************************************************************************/ public class StreamedPoiSheetWriter { - private static Pattern xmlSpecialChars = Pattern.compile(".*[&<>'\"].*"); - private final Writer writer; private int rowNo; @@ -71,8 +68,8 @@ public class StreamedPoiSheetWriter public void endSheet() throws IOException { writer.write(""" - - """); + + """); } @@ -111,8 +108,11 @@ public class StreamedPoiSheetWriter { writer.write(" s=\"" + styleIndex + "\""); } + + String cleanValue = cleanseValue(value); + writer.write(">"); - writer.write("" + cleanseValue(value) + ""); + writer.write("" + cleanValue + ""); writer.write(""); } @@ -123,15 +123,18 @@ public class StreamedPoiSheetWriter *******************************************************************************/ public static String cleanseValue(String value) { - // todo - profile... - if(xmlSpecialChars.matcher(value).find()) + if(value != null) { - value = value.replace("&", "&"); - value = value.replace("<", "<"); - value = value.replace(">", ">"); - value = value.replace("'", "'"); - value = value.replace("\"", """); + if(value.indexOf('&') > -1 || value.indexOf('<') > -1 || value.indexOf('>') > -1 || value.indexOf('\'') > -1 || value.indexOf('"') > -1) + { + value = value.replace("&", "&"); + value = value.replace("<", "<"); + value = value.replace(">", ">"); + value = value.replace("'", "'"); + value = value.replace("\"", """); + } } + return (value); } @@ -191,13 +194,16 @@ public class StreamedPoiSheetWriter public void createCell(int columnIndex, Boolean value, int styleIndex) throws IOException { String ref = new CellReference(rowNo, columnIndex).formatAsString(); - writer.write(""); - writer.write("" + value + ""); + if(value != null) + { + writer.write("" + (value ? 1 : 0) + ""); + } writer.write(""); }