]> source.dussan.org Git - poi.git/commitdiff
Fix some Forbidden APIs errors
authorNick Burch <nick@apache.org>
Tue, 1 Sep 2015 19:36:22 +0000 (19:36 +0000)
committerNick Burch <nick@apache.org>
Tue, 1 Sep 2015 19:36:22 +0000 (19:36 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1700652 13f79535-47bb-0310-9956-ffa450edef68

src/java/org/apache/poi/hpsf/Property.java
src/java/org/apache/poi/hssf/usermodel/DVConstraint.java
src/java/org/apache/poi/ss/formula/atp/DateParser.java

index d141349bd16d477ea1c6ffc6f26fd2564861f589..14dbee0276d5f364eae2bd73bd58dc699b5d3ef9 100644 (file)
@@ -18,6 +18,7 @@
 package org.apache.poi.hpsf;
 
 import java.io.UnsupportedEncodingException;
+import java.nio.charset.Charset;
 import java.util.LinkedHashMap;
 import java.util.Map;
 
@@ -52,9 +53,6 @@ import org.apache.poi.util.POILogger;
  * href="http://msdn.microsoft.com/library/en-us/stg/stg/property_set_display_name_dictionary.asp?frame=true">
  * Property Set Display Name Dictionary</a>.
  *
- * @author Rainer Klute <a
- * href="mailto:klute@rainer-klute.de">&lt;klute@rainer-klute.de&gt;</a>
- * @author Drew Varner (Drew.Varner InAndAround sc.edu)
  * @see Section
  * @see Variant
  */
@@ -238,7 +236,7 @@ public class Property
                     {
                         /* Without a codepage the length is equal to the number of
                          * bytes. */
-                        b.append(new String(src, o, (int) sLength));
+                        b.append(new String(src, o, (int) sLength, Charset.forName("ASCII")));
                         break;
                     }
                     case CodePageUtil.CP_UNICODE:
index 8e322ce8032303899ffa8e0bf850a2de3ea8bfe3..4548486a41159997d86eaf454e5b95677507b972 100644 (file)
@@ -21,6 +21,7 @@ import java.text.MessageFormat;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.Date;
+import java.util.Locale;
 import java.util.regex.Pattern;
 
 import org.apache.poi.hssf.model.HSSFFormulaParser;
@@ -55,10 +56,6 @@ public class DVConstraint implements DataValidationConstraint {
                
        }
        
-       // convenient access to ValidationType namespace
-       private static final ValidationType VT = null;
-
-       
        private final int _validationType;
        private int _operator;
        private String[] _explicitListValues;
@@ -184,7 +181,7 @@ public class DVConstraint implements DataValidationConstraint {
                        throw new IllegalArgumentException("expr1 must be supplied");
                }
                OperatorType.validateSecondArg(comparisonOperator, expr2);
-               SimpleDateFormat df = dateFormat == null ? null : new SimpleDateFormat(dateFormat);
+               SimpleDateFormat df = dateFormat == null ? null : new SimpleDateFormat(dateFormat, Locale.ROOT);
                
                // formula1 and value1 are mutually exclusive
                String formula1 = getFormulaFromTextExpression(expr1);
index 325fbbb23250f20c91e8931b7dccc7fb8204762a..73b51a5fb2bd2d780a7104a3fadc0684ca30bfd3 100644 (file)
@@ -19,6 +19,8 @@ package org.apache.poi.ss.formula.atp;
 
 import java.util.Calendar;
 import java.util.GregorianCalendar;
+import java.util.Locale;
+import java.util.TimeZone;
 import java.util.regex.Pattern;
 
 import org.apache.poi.ss.formula.eval.ErrorEval;
@@ -26,10 +28,13 @@ import org.apache.poi.ss.formula.eval.EvaluationException;
 
 /**
  * Parser for java dates.
- * 
- * @author jfaenomoto@gmail.com
  */
 public class DateParser {
+    /**
+     * Excel doesn't store TimeZone information in the file, so if in doubt,
+     *  use UTC to perform calculations
+     */
+    private static final TimeZone DEFAULT_TIMEZONE = TimeZone.getTimeZone("UTC");
 
     public DateParser instance = new DateParser();
 
@@ -90,7 +95,8 @@ public class DateParser {
         if (month < 1 || month > 12) {
             throw new EvaluationException(ErrorEval.VALUE_INVALID);
         }
-        Calendar cal = new GregorianCalendar(year, month - 1, 1, 0, 0, 0);
+        Calendar cal = new GregorianCalendar(DEFAULT_TIMEZONE, Locale.ROOT);
+        cal.set(year, month - 1, 1, 0, 0, 0);
         cal.set(Calendar.MILLISECOND, 0);
         if (day < 1 || day > cal.getActualMaximum(Calendar.DAY_OF_MONTH)) {
             throw new EvaluationException(ErrorEval.VALUE_INVALID);