You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by fa...@apache.org on 2022/07/17 01:53:19 UTC

svn commit: r1902789 - in /poi/trunk: poi-examples/src/main/java/org/apache/poi/examples/xssf/eventusermodel/ poi-ooxml/src/main/java/org/apache/poi/openxml4j/opc/ poi-ooxml/src/main/java/org/apache/poi/xssf/binary/ poi-ooxml/src/main/java/org/apache/p...

Author: fanningpj
Date: Sun Jul 17 01:53:18 2022
New Revision: 1902789

URL: http://svn.apache.org/viewvc?rev=1902789&view=rev
Log:
[github-339] Add extra methods to StringUtil and refactor some code to use them. Thanks to XenoAmess. This closes #339

Modified:
    poi/trunk/poi-examples/src/main/java/org/apache/poi/examples/xssf/eventusermodel/FromHowTo.java
    poi/trunk/poi-ooxml/src/main/java/org/apache/poi/openxml4j/opc/OPCPackage.java
    poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/binary/XSSFBSheetHandler.java
    poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/eventusermodel/XSSFBReader.java
    poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFDataValidationConstraint.java
    poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFPivotTable.java
    poi/trunk/poi-ooxml/src/test/java/org/apache/poi/poifs/crypt/dsig/TestSignatureInfo.java
    poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xwpf/usermodel/TestXWPFParagraph.java
    poi/trunk/poi-scratchpad/src/main/java/org/apache/poi/hsmf/MAPIMessage.java
    poi/trunk/poi-scratchpad/src/main/java/org/apache/poi/hwpf/converter/AbstractWordConverter.java
    poi/trunk/poi-scratchpad/src/main/java/org/apache/poi/hwpf/converter/WordToFoConverter.java
    poi/trunk/poi/src/main/java/org/apache/poi/poifs/macros/VBAMacroReader.java
    poi/trunk/poi/src/main/java/org/apache/poi/sl/draw/DrawTextParagraph.java
    poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/DataValidationEvaluator.java
    poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/EvaluationConditionalFormatRule.java
    poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/FormulaParser.java
    poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/atp/TextJoinFunction.java
    poi/trunk/poi/src/main/java/org/apache/poi/ss/usermodel/DataFormatter.java
    poi/trunk/poi/src/main/java/org/apache/poi/util/StringUtil.java

Modified: poi/trunk/poi-examples/src/main/java/org/apache/poi/examples/xssf/eventusermodel/FromHowTo.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi-examples/src/main/java/org/apache/poi/examples/xssf/eventusermodel/FromHowTo.java?rev=1902789&r1=1902788&r2=1902789&view=diff
==============================================================================
--- poi/trunk/poi-examples/src/main/java/org/apache/poi/examples/xssf/eventusermodel/FromHowTo.java (original)
+++ poi/trunk/poi-examples/src/main/java/org/apache/poi/examples/xssf/eventusermodel/FromHowTo.java Sun Jul 17 01:53:18 2022
@@ -25,6 +25,7 @@ import javax.xml.parsers.ParserConfigura
 
 import org.apache.poi.openxml4j.opc.OPCPackage;
 import org.apache.poi.openxml4j.opc.PackageAccess;
+import org.apache.poi.util.StringUtil;
 import org.apache.poi.util.XMLHelper;
 import org.apache.poi.xssf.eventusermodel.XSSFReader;
 import org.apache.poi.xssf.model.SharedStrings;
@@ -132,7 +133,7 @@ public class FromHowTo {
                 throws SAXException {
             // Process the last contents as required.
             // Do now, as characters() may be called more than once
-            if(nextIsString && !lastContents.trim().isEmpty()) {
+            if(nextIsString && StringUtil.isNotBlank(lastContents)) {
                 Integer idx = Integer.valueOf(lastContents);
                 lastContents = lruCache.get(idx);
                 if (lastContents == null && !lruCache.containsKey(idx)) {

Modified: poi/trunk/poi-ooxml/src/main/java/org/apache/poi/openxml4j/opc/OPCPackage.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/main/java/org/apache/poi/openxml4j/opc/OPCPackage.java?rev=1902789&r1=1902788&r2=1902789&view=diff
==============================================================================
--- poi/trunk/poi-ooxml/src/main/java/org/apache/poi/openxml4j/opc/OPCPackage.java (original)
+++ poi/trunk/poi-ooxml/src/main/java/org/apache/poi/openxml4j/opc/OPCPackage.java Sun Jul 17 01:53:18 2022
@@ -61,6 +61,7 @@ import org.apache.poi.openxml4j.opc.inte
 import org.apache.poi.openxml4j.util.ZipEntrySource;
 import org.apache.poi.util.IOUtils;
 import org.apache.poi.util.NotImplemented;
+import org.apache.poi.util.StringUtil;
 
 /**
  * Represents a container that can store multiple data objects.
@@ -234,7 +235,7 @@ public abstract class OPCPackage impleme
      */
     public static OPCPackage open(String path, PackageAccess access)
             throws InvalidFormatException, InvalidOperationException {
-        if (path == null || path.trim().isEmpty()) {
+        if (StringUtil.isBlank(path)) {
             throw new IllegalArgumentException("'path' must be given");
         }
 
@@ -458,8 +459,7 @@ public abstract class OPCPackage impleme
             return;
         }
 
-        if (this.originalPackagePath != null
-                && !this.originalPackagePath.trim().isEmpty()) {
+        if (StringUtil.isNotBlank(this.originalPackagePath)) {
             File targetFile = new File(this.originalPackagePath);
             if (!targetFile.exists()
                     || !(this.originalPackagePath

Modified: poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/binary/XSSFBSheetHandler.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/binary/XSSFBSheetHandler.java?rev=1902789&r1=1902788&r2=1902789&view=diff
==============================================================================
--- poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/binary/XSSFBSheetHandler.java (original)
+++ poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/binary/XSSFBSheetHandler.java Sun Jul 17 01:53:18 2022
@@ -27,6 +27,7 @@ import org.apache.poi.ss.usermodel.RichT
 import org.apache.poi.ss.util.CellAddress;
 import org.apache.poi.util.Internal;
 import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.StringUtil;
 import org.apache.poi.xssf.eventusermodel.XSSFSheetXMLHandler;
 import org.apache.poi.xssf.model.SharedStrings;
 import org.apache.poi.xssf.usermodel.XSSFComment;
@@ -226,7 +227,7 @@ public class XSSFBSheetHandler extends X
 
     private void outputHeaderFooter(XSSFBHeaderFooter headerFooter) {
         String text = headerFooter.getString();
-        if (text != null && !text.trim().isEmpty()) {
+        if (StringUtil.isNotBlank(text)) {
             handler.headerFooter(text, headerFooter.isHeader(), headerFooter.getHeaderFooterTypeLabel());
         }
     }

Modified: poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/eventusermodel/XSSFBReader.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/eventusermodel/XSSFBReader.java?rev=1902789&r1=1902788&r2=1902789&view=diff
==============================================================================
--- poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/eventusermodel/XSSFBReader.java (original)
+++ poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/eventusermodel/XSSFBReader.java Sun Jul 17 01:53:18 2022
@@ -40,6 +40,7 @@ import org.apache.poi.openxml4j.opc.Pack
 import org.apache.poi.openxml4j.opc.PackagingURIHelper;
 import org.apache.poi.util.LittleEndian;
 import org.apache.poi.util.LittleEndianConsts;
+import org.apache.poi.util.StringUtil;
 import org.apache.poi.xssf.binary.XSSFBCommentsTable;
 import org.apache.poi.xssf.binary.XSSFBParseException;
 import org.apache.poi.xssf.binary.XSSFBParser;
@@ -254,7 +255,7 @@ public class XSSFBReader extends XSSFRea
             String relId = sb.toString(); sb.setLength(0);
             /*offset +=*/ XSSFBUtils.readXLWideString(data, offset, sb);
             String name = sb.toString();
-            if (relId.trim().length() > 0) {
+            if (StringUtil.isNotBlank(relId)) {
                 sheets.add(new XSSFSheetRef(relId, name));
             }
         }
@@ -273,7 +274,7 @@ public class XSSFBReader extends XSSFRea
             sb.setLength(0);
             offset += XSSFBUtils.readXLWideString(data, offset, sb);
             String name = sb.toString();
-            if (relId.trim().length() > 0) {
+            if (StringUtil.isNotBlank(relId)) {
                 sheets.add(new XSSFSheetRef(relId, name));
             }
             if (offset == data.length) {

Modified: poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFDataValidationConstraint.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFDataValidationConstraint.java?rev=1902789&r1=1902788&r2=1902789&view=diff
==============================================================================
--- poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFDataValidationConstraint.java (original)
+++ poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFDataValidationConstraint.java Sun Jul 17 01:53:18 2022
@@ -20,6 +20,7 @@ import java.util.Arrays;
 import java.util.regex.Pattern;
 
 import org.apache.poi.ss.usermodel.DataValidationConstraint;
+import org.apache.poi.util.StringUtil;
 import org.openxmlformats.schemas.spreadsheetml.x2006.main.STDataValidationType;
 import org.openxmlformats.schemas.spreadsheetml.x2006.main.STDataValidationOperator.Enum;
 
@@ -180,7 +181,7 @@ public class XSSFDataValidationConstrain
         return s;
     }
     protected static boolean isFormulaEmpty(String formula1) {
-        return formula1 == null || formula1.trim().length()==0;
+        return StringUtil.isBlank(formula1);
     }
 
     /* (non-Javadoc)

Modified: poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFPivotTable.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFPivotTable.java?rev=1902789&r1=1902788&r2=1902789&view=diff
==============================================================================
--- poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFPivotTable.java (original)
+++ poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFPivotTable.java Sun Jul 17 01:53:18 2022
@@ -27,6 +27,7 @@ import org.apache.poi.ss.util.AreaRefere
 import org.apache.poi.ss.util.CellReference;
 import org.apache.poi.util.Beta;
 import org.apache.poi.util.Internal;
+import org.apache.poi.util.StringUtil;
 import org.apache.xmlbeans.XmlException;
 import org.apache.xmlbeans.XmlOptions;
 import org.openxmlformats.schemas.spreadsheetml.x2006.main.*;
@@ -293,7 +294,7 @@ public class XSSFPivotTable extends POIX
 
         pivotField.setAxis(STAxis.AXIS_COL);
         pivotField.setShowAll(false);
-        if (valueFormat != null && !valueFormat.trim().isEmpty()) {
+        if (StringUtil.isNotBlank(valueFormat)) {
             DataFormat df = parentSheet.getWorkbook().createDataFormat();
             pivotField.setNumFmtId(df.getFormat(valueFormat));
         }
@@ -416,7 +417,7 @@ public class XSSFPivotTable extends POIX
         dataField.setSubtotal(STDataConsolidateFunction.Enum.forInt(function.getValue()));
         dataField.setName(valueFieldName);
         dataField.setFld(columnIndex);
-        if (valueFormat != null && !valueFormat.trim().isEmpty()) {
+        if (StringUtil.isNotBlank(valueFormat)) {
             DataFormat df = parentSheet.getWorkbook().createDataFormat();
             dataField.setNumFmtId(df.getFormat(valueFormat));
         }

Modified: poi/trunk/poi-ooxml/src/test/java/org/apache/poi/poifs/crypt/dsig/TestSignatureInfo.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/test/java/org/apache/poi/poifs/crypt/dsig/TestSignatureInfo.java?rev=1902789&r1=1902788&r2=1902789&view=diff
==============================================================================
--- poi/trunk/poi-ooxml/src/test/java/org/apache/poi/poifs/crypt/dsig/TestSignatureInfo.java (original)
+++ poi/trunk/poi-ooxml/src/test/java/org/apache/poi/poifs/crypt/dsig/TestSignatureInfo.java Sun Jul 17 01:53:18 2022
@@ -90,6 +90,7 @@ import org.apache.poi.ss.usermodel.Workb
 import org.apache.poi.util.ConditionalExecution.DisabledOnJreEx;
 import org.apache.poi.util.IOUtils;
 import org.apache.poi.util.LocaleUtil;
+import org.apache.poi.util.StringUtil;
 import org.apache.poi.util.TempFile;
 import org.apache.poi.xssf.streaming.SXSSFWorkbook;
 import org.apache.poi.xssf.usermodel.XSSFClientAnchor;
@@ -146,7 +147,7 @@ class TestSignatureInfo {
         // in the xmlsec jar file
         String additionalJar = System.getProperty("additionaljar");
         //System.out.println("Having: " + additionalJar);
-        assumeTrue(additionalJar == null || additionalJar.trim().length() == 0,
+        assumeTrue(StringUtil.isBlank(additionalJar),
             "Not running TestSignatureInfo because we are testing with additionaljar set to " + additionalJar);
 
         System.setProperty("org.apache.xml.security.ignoreLineBreaks", "true");
@@ -475,7 +476,7 @@ class TestSignatureInfo {
 
             //set proxy info if any
             String proxy = System.getProperty("http_proxy");
-            if (proxy != null && proxy.trim().length() > 0) {
+            if (StringUtil.isNotBlank(proxy)) {
                 signatureConfig.setProxyUrl(proxy);
             }
 

Modified: poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xwpf/usermodel/TestXWPFParagraph.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xwpf/usermodel/TestXWPFParagraph.java?rev=1902789&r1=1902788&r2=1902789&view=diff
==============================================================================
--- poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xwpf/usermodel/TestXWPFParagraph.java (original)
+++ poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xwpf/usermodel/TestXWPFParagraph.java Sun Jul 17 01:53:18 2022
@@ -779,7 +779,7 @@ public final class TestXWPFParagraph {
                 str.append(par.getText()).append("\n");
             }
             String s = str.toString();
-            assertTrue(s.trim().length() > 0, "Having text: \n" + s + "\nTrimmed length: " + s.trim().length());
+            assertTrue(StringUtil.isNotBlank(s), "Having text: \n" + s + "\nTrimmed length: " + s.trim().length());
         }
     }
 

Modified: poi/trunk/poi-scratchpad/src/main/java/org/apache/poi/hsmf/MAPIMessage.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi-scratchpad/src/main/java/org/apache/poi/hsmf/MAPIMessage.java?rev=1902789&r1=1902788&r2=1902789&view=diff
==============================================================================
--- poi/trunk/poi-scratchpad/src/main/java/org/apache/poi/hsmf/MAPIMessage.java (original)
+++ poi/trunk/poi-scratchpad/src/main/java/org/apache/poi/hsmf/MAPIMessage.java Sun Jul 17 01:53:18 2022
@@ -53,6 +53,7 @@ import org.apache.poi.poifs.filesystem.D
 import org.apache.poi.poifs.filesystem.POIFSFileSystem;
 import org.apache.poi.util.CodePageUtil;
 import org.apache.poi.util.LocaleUtil;
+import org.apache.poi.util.StringUtil;
 
 import static org.apache.logging.log4j.util.Unbox.box;
 
@@ -630,7 +631,7 @@ public class MAPIMessage extends POIRead
      */
     public MESSAGE_CLASS getMessageClassEnum() throws ChunkNotFoundException {
         String mc = getStringFromChunk(mainChunks.getMessageClass());
-        if (mc == null || mc.trim().length() == 0) {
+        if (StringUtil.isBlank(mc)) {
             return MESSAGE_CLASS.UNSPECIFIED;
         } else if (mc.equalsIgnoreCase("IPM.Note")) {
             return MESSAGE_CLASS.NOTE;

Modified: poi/trunk/poi-scratchpad/src/main/java/org/apache/poi/hwpf/converter/AbstractWordConverter.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi-scratchpad/src/main/java/org/apache/poi/hwpf/converter/AbstractWordConverter.java?rev=1902789&r1=1902788&r2=1902789&view=diff
==============================================================================
--- poi/trunk/poi-scratchpad/src/main/java/org/apache/poi/hwpf/converter/AbstractWordConverter.java (original)
+++ poi/trunk/poi-scratchpad/src/main/java/org/apache/poi/hwpf/converter/AbstractWordConverter.java Sun Jul 17 01:53:18 2022
@@ -52,6 +52,7 @@ import org.apache.poi.hwpf.usermodel.Tab
 import org.apache.poi.poifs.filesystem.Entry;
 import org.apache.poi.util.Beta;
 import org.apache.poi.util.Internal;
+import org.apache.poi.util.StringUtil;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 
@@ -553,7 +554,7 @@ public abstract class AbstractWordConver
                 }
             }
 
-            haveAnyText |= text.trim().length() != 0;
+            haveAnyText |= StringUtil.isNotBlank(text);
         }
 
         return haveAnyText;

Modified: poi/trunk/poi-scratchpad/src/main/java/org/apache/poi/hwpf/converter/WordToFoConverter.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi-scratchpad/src/main/java/org/apache/poi/hwpf/converter/WordToFoConverter.java?rev=1902789&r1=1902788&r2=1902789&view=diff
==============================================================================
--- poi/trunk/poi-scratchpad/src/main/java/org/apache/poi/hwpf/converter/WordToFoConverter.java (original)
+++ poi/trunk/poi-scratchpad/src/main/java/org/apache/poi/hwpf/converter/WordToFoConverter.java Sun Jul 17 01:53:18 2022
@@ -48,6 +48,7 @@ import org.apache.poi.hwpf.usermodel.Tab
 import org.apache.poi.hwpf.usermodel.TableCell;
 import org.apache.poi.hwpf.usermodel.TableRow;
 import org.apache.poi.util.Beta;
+import org.apache.poi.util.StringUtil;
 import org.apache.poi.util.XMLHelper;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
@@ -438,7 +439,7 @@ public class WordToFoConverter extends A
             Text textNode = foDocumentFacade.createText( bulletText );
             inline.appendChild( textNode );
 
-            haveAnyText |= bulletText.trim().length() != 0;
+            haveAnyText |= StringUtil.isNotBlank(bulletText);
         }
 
         haveAnyText = processCharacters( hwpfDocument, currentTableLevel,

Modified: poi/trunk/poi/src/main/java/org/apache/poi/poifs/macros/VBAMacroReader.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/poifs/macros/VBAMacroReader.java?rev=1902789&r1=1902788&r2=1902789&view=diff
==============================================================================
--- poi/trunk/poi/src/main/java/org/apache/poi/poifs/macros/VBAMacroReader.java (original)
+++ poi/trunk/poi/src/main/java/org/apache/poi/poifs/macros/VBAMacroReader.java Sun Jul 17 01:53:18 2022
@@ -658,7 +658,7 @@ public class VBAMacroReader implements C
             } catch (EOFException e) {
                 return;
             }
-            if (mbcs.trim().length() > 0 && unicode.trim().length() > 0) {
+            if (StringUtil.isNotBlank(mbcs) && StringUtil.isNotBlank(unicode)) {
                 moduleNames.put(mbcs, unicode);
             }
 

Modified: poi/trunk/poi/src/main/java/org/apache/poi/sl/draw/DrawTextParagraph.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/sl/draw/DrawTextParagraph.java?rev=1902789&r1=1902788&r2=1902789&view=diff
==============================================================================
--- poi/trunk/poi/src/main/java/org/apache/poi/sl/draw/DrawTextParagraph.java (original)
+++ poi/trunk/poi/src/main/java/org/apache/poi/sl/draw/DrawTextParagraph.java Sun Jul 17 01:53:18 2022
@@ -63,6 +63,7 @@ import org.apache.poi.sl.usermodel.TextS
 import org.apache.poi.sl.usermodel.TextShape.TextDirection;
 import org.apache.poi.util.Internal;
 import org.apache.poi.util.LocaleUtil;
+import org.apache.poi.util.StringUtil;
 import org.apache.poi.util.Units;
 
 public class DrawTextParagraph implements Drawable {
@@ -242,7 +243,7 @@ public class DrawTextParagraph implement
     }
 
     public boolean isEmptyParagraph() {
-        return (lines.isEmpty() || rawText.trim().isEmpty());
+        return (lines.isEmpty() || StringUtil.isBlank(rawText));
     }
 
     @Override

Modified: poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/DataValidationEvaluator.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/DataValidationEvaluator.java?rev=1902789&r1=1902788&r2=1902789&view=diff
==============================================================================
--- poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/DataValidationEvaluator.java (original)
+++ poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/DataValidationEvaluator.java Sun Jul 17 01:53:18 2022
@@ -42,6 +42,7 @@ import org.apache.poi.ss.util.CellRangeA
 import org.apache.poi.ss.util.CellRangeAddressList;
 import org.apache.poi.ss.util.CellReference;
 import org.apache.poi.ss.util.SheetUtil;
+import org.apache.poi.util.StringUtil;
 
 /**
  * Evaluates Data Validation constraints.<p>
@@ -418,7 +419,7 @@ public class DataValidationEvaluator {
          * @throws NumberFormatException if the formula is non-numeric when it should be
          */
         private Double evalOrConstant(String formula, DataValidationContext context) throws NumberFormatException {
-            if (formula == null || formula.trim().isEmpty()) return null; // shouldn't happen, but just in case
+            if (StringUtil.isBlank(formula)) return null; // shouldn't happen, but just in case
             try {
                 return Double.valueOf(formula);
             } catch (NumberFormatException e) {
@@ -433,7 +434,7 @@ public class DataValidationEvaluator {
             if (eval instanceof NumberEval) return Double.valueOf(((NumberEval) eval).getNumberValue());
             if (eval instanceof StringEval) {
                 final String value = ((StringEval) eval).getStringValue();
-                if (value == null || value.trim().isEmpty()) return null; 
+                if (StringUtil.isBlank(value)) return null;
                 // try to parse the cell value as a double and return it 
                 return Double.valueOf(value);
             }

Modified: poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/EvaluationConditionalFormatRule.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/EvaluationConditionalFormatRule.java?rev=1902789&r1=1902788&r2=1902789&view=diff
==============================================================================
--- poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/EvaluationConditionalFormatRule.java (original)
+++ poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/EvaluationConditionalFormatRule.java Sun Jul 17 01:53:18 2022
@@ -52,6 +52,7 @@ import org.apache.poi.ss.usermodel.Sheet
 import org.apache.poi.ss.util.CellRangeAddress;
 import org.apache.poi.ss.util.CellReference;
 import org.apache.poi.util.LocaleUtil;
+import org.apache.poi.util.StringUtil;
 
 /**
  * Abstracted and cached version of a Conditional Format rule for use with a
@@ -506,7 +507,7 @@ public class EvaluationConditionalFormat
             try {
                 String v = cv.getString();
                 // see TextFunction.TRIM for implementation
-                return v == null || v.trim().length() == 0;
+                return StringUtil.isBlank(v);
             } catch (Exception e) {
                 // not a valid string value, and not a blank cell (that's checked earlier)
                 return false;
@@ -515,7 +516,7 @@ public class EvaluationConditionalFormat
             try {
                 String v = cv.getString();
                 // see TextFunction.TRIM for implementation
-                return v != null && v.trim().length() > 0;
+                return StringUtil.isNotBlank(v);
             } catch (Exception e) {
                 // not a valid string value, but not blank
                 return true;

Modified: poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/FormulaParser.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/FormulaParser.java?rev=1902789&r1=1902788&r2=1902789&view=diff
==============================================================================
--- poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/FormulaParser.java (original)
+++ poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/FormulaParser.java Sun Jul 17 01:53:18 2022
@@ -80,6 +80,7 @@ import org.apache.poi.ss.util.AreaRefere
 import org.apache.poi.ss.util.CellReference;
 import org.apache.poi.ss.util.CellReference.NameType;
 import org.apache.poi.util.Internal;
+import org.apache.poi.util.StringUtil;
 
 /**
  * This class parses a formula string into a List of tokens in RPN order.
@@ -255,7 +256,7 @@ public final class FormulaParser {
     private RuntimeException expected(String s) {
         String msg;
 
-        if (look == '=' && _formulaString.substring(0, _pointer-1).trim().length() < 1) {
+        if (look == '=' && StringUtil.isBlank(_formulaString.substring(0, _pointer-1))) {
             msg = "The specified formula '" + _formulaString
                 + "' starts with an equals sign which is not allowed.";
         } else {

Modified: poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/atp/TextJoinFunction.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/atp/TextJoinFunction.java?rev=1902789&r1=1902788&r2=1902789&view=diff
==============================================================================
--- poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/atp/TextJoinFunction.java (original)
+++ poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/atp/TextJoinFunction.java Sun Jul 17 01:53:18 2022
@@ -29,7 +29,7 @@ import java.util.List;
  * Implementation of Excel function TEXTJOIN()
  *
  * <b>Syntax</b><br>
- * <b>TEXTJOIN</b>(<b>delimiter</b>, <b>ignore_empty</b>, <b>text1</b>, <b>[text2]<b>, …)<p>
+ * <b>TEXTJOIN</b>(<b>delimiter</b>, <b>ignore_empty</b>, <b>text1</b>, <b>[text2]<b>, ...)<p>
  *
  * <b>delimiter</b> A text string, either empty, or one or more characters enclosed by double quotes, or a reference to a valid text string.
  * If a number is supplied, it will be treated as text.<br>

Modified: poi/trunk/poi/src/main/java/org/apache/poi/ss/usermodel/DataFormatter.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/ss/usermodel/DataFormatter.java?rev=1902789&r1=1902788&r2=1902789&view=diff
==============================================================================
--- poi/trunk/poi/src/main/java/org/apache/poi/ss/usermodel/DataFormatter.java (original)
+++ poi/trunk/poi/src/main/java/org/apache/poi/ss/usermodel/DataFormatter.java Sun Jul 17 01:53:18 2022
@@ -48,6 +48,7 @@ import org.apache.poi.ss.formula.Conditi
 import org.apache.poi.ss.util.DateFormatConverter;
 import org.apache.poi.ss.util.NumberToTextConverter;
 import org.apache.poi.util.LocaleUtil;
+import org.apache.poi.util.StringUtil;
 
 
 /**
@@ -355,7 +356,7 @@ public class DataFormatter {
 
         int formatIndex = numFmt.getIdx();
         String formatStr = numFmt.getFormat();
-        if(formatStr == null || formatStr.trim().length() == 0) {
+        if(StringUtil.isBlank(formatStr)) {
             return null;
         }
         return getFormat(cell.getNumericCellValue(), formatIndex, formatStr, isDate1904(cell));
@@ -483,7 +484,7 @@ public class DataFormatter {
         }
 
         // Check for special cases
-        if(formatStr == null || formatStr.trim().isEmpty()) {
+        if(StringUtil.isBlank(formatStr)) {
             return getDefaultFormat(cellValue);
         }
 
@@ -1361,10 +1362,10 @@ public class DataFormatter {
             seg2 = result.substring(Math.max(0, len - 7), len - 4);
             seg1 = result.substring(Math.max(0, len - 10), Math.max(0, len - 7));
 
-            if(seg1.trim().length() > 0) {
+            if(StringUtil.isNotBlank(seg1)) {
                 sb.append('(').append(seg1).append(") ");
             }
-            if(seg2.trim().length() > 0) {
+            if(StringUtil.isNotBlank(seg2)) {
                 sb.append(seg2).append('-');
             }
             sb.append(seg3);

Modified: poi/trunk/poi/src/main/java/org/apache/poi/util/StringUtil.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/util/StringUtil.java?rev=1902789&r1=1902788&r2=1902789&view=diff
==============================================================================
--- poi/trunk/poi/src/main/java/org/apache/poi/util/StringUtil.java (original)
+++ poi/trunk/poi/src/main/java/org/apache/poi/util/StringUtil.java Sun Jul 17 01:53:18 2022
@@ -689,4 +689,74 @@ public final class StringUtil {
         return prefix + ((newLen == 0) ? "" : new String(string, newOffset, newLen * 2, UTF16LE));
     }
 
+
+    /**
+     * Gets a CharSequence length or {@code 0} if the CharSequence is
+     * {@code null}.
+     *
+     * copied from commons-lang3
+     *
+     * @param cs
+     *            a CharSequence or {@code null}
+     * @return CharSequence length or {@code 0} if the CharSequence is
+     *         {@code null}.
+     */
+    public static int length(final CharSequence cs) {
+        return cs == null ? 0 : cs.length();
+    }
+
+    /**
+     * <p>Checks if a CharSequence is empty (""), null or whitespace only.</p>
+     *
+     * <p>Whitespace is defined by {@link Character#isWhitespace(char)}.</p>
+     *
+     * <pre>
+     * StringUtil.isBlank(null)      = true
+     * StringUtil.isBlank("")        = true
+     * StringUtil.isBlank(" ")       = true
+     * StringUtil.isBlank("bob")     = false
+     * StringUtil.isBlank("  bob  ") = false
+     * </pre>
+     *
+     * copied from commons-lang3
+     *
+     * @param cs  the CharSequence to check, may be null
+     * @return {@code true} if the CharSequence is null, empty or whitespace only
+     */
+    public static boolean isBlank(final CharSequence cs) {
+        final int strLen = length(cs);
+        if (strLen == 0) {
+            return true;
+        }
+        for (int i = 0; i < strLen; i++) {
+            if (!Character.isWhitespace(cs.charAt(i))) {
+                return false;
+            }
+        }
+        return true;
+    }
+
+    /**
+     * <p>Checks if a CharSequence is not empty (""), not null and not whitespace only.</p>
+     *
+     * <p>Whitespace is defined by {@link Character#isWhitespace(char)}.</p>
+     *
+     * <pre>
+     * StringUtil.isNotBlank(null)      = false
+     * StringUtil.isNotBlank("")        = false
+     * StringUtil.isNotBlank(" ")       = false
+     * StringUtil.isNotBlank("bob")     = true
+     * StringUtil.isNotBlank("  bob  ") = true
+     * </pre>
+     *
+     * copied from commons-lang3
+     *
+     * @param cs  the CharSequence to check, may be null
+     * @return {@code true} if the CharSequence is
+     *  not empty and not null and not whitespace only
+     */
+    public static boolean isNotBlank(final CharSequence cs) {
+        return !isBlank(cs);
+    }
+
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org