poi-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From n...@apache.org
Subject svn commit: r1445725 - in /poi/trunk/src: java/org/apache/poi/ss/usermodel/DateUtil.java testcases/org/apache/poi/hssf/usermodel/TestHSSFDateUtil.java
Date Wed, 13 Feb 2013 16:45:03 GMT
Author: nick
Date: Wed Feb 13 16:45:03 2013
New Revision: 1445725

URL: http://svn.apache.org/r1445725
Log:
Fix bug #54557 - Don't mis-detect format patterns like .000 as dates

Modified:
    poi/trunk/src/java/org/apache/poi/ss/usermodel/DateUtil.java
    poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFDateUtil.java

Modified: poi/trunk/src/java/org/apache/poi/ss/usermodel/DateUtil.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/ss/usermodel/DateUtil.java?rev=1445725&r1=1445724&r2=1445725&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/ss/usermodel/DateUtil.java (original)
+++ poi/trunk/src/java/org/apache/poi/ss/usermodel/DateUtil.java Wed Feb 13 16:45:03 2013
@@ -55,7 +55,8 @@ public class DateUtil {
      */
     private static final Pattern date_ptrn1 = Pattern.compile("^\\[\\$\\-.*?\\]");
     private static final Pattern date_ptrn2 = Pattern.compile("^\\[[a-zA-Z]+\\]");
-    private static final Pattern date_ptrn3 = Pattern.compile("^[\\[\\]yYmMdDhHsS\\-/,. :\"\\\\]+0*[ampAMP/]*$");
+    private static final Pattern date_ptrn3a = Pattern.compile("[yYmMdDhHsS]");
+    private static final Pattern date_ptrn3b = Pattern.compile("^[\\[\\]yYmMdDhHsS\\-/,.
:\"\\\\]+0*[ampAMP/]*$");
     //  elapsed time patterns: [h],[m] and [s]
     private static final Pattern date_ptrn4 = Pattern.compile("^\\[([hH]+|[mM]+|[sS]+)\\]");
 
@@ -364,10 +365,16 @@ public class DateUtil {
            fs = fs.substring(0, fs.indexOf(';'));
         }
 
-        // Otherwise, check it's only made up, in any case, of:
-        //  y m d h s - \ / , . :
+        // Ensure it has some date letters in it
+        // (Avoids false positives on the rest of pattern 3)
+        if (! date_ptrn3a.matcher(fs).find()) {
+           return false;
+        }
+        
+        // If we get here, check it's only made up, in any case, of:
+        //  y m d h s - \ / , . : [ ]
         // optionally followed by AM/PM
-        return date_ptrn3.matcher(fs).matches();
+        return date_ptrn3b.matcher(fs).matches();
     }
 
     /**

Modified: poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFDateUtil.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFDateUtil.java?rev=1445725&r1=1445724&r2=1445725&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFDateUtil.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFDateUtil.java Wed Feb 13
16:45:03 2013
@@ -499,5 +499,14 @@ public final class TestHSSFDateUtil exte
         assertEquals(valueToTest.getTime(), returnedValue.getTime());
     }
 
-
+    /**
+     * DateUtil.isCellFormatted(Cell) should not true for a numeric cell 
+     * that's formatted as ".0000"
+     */
+    public void testBug54557() throws Exception {
+       final String format = ".0000";
+       boolean isDateFormat = HSSFDateUtil.isADateFormat(165, format);
+       
+       assertEquals(false, isDateFormat);
+    }
 }



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


Mime
View raw message