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

src/java/org/apache/poi/hssf/record/RecordFactory.java
src/java/org/apache/poi/hssf/usermodel/HSSFPalette.java
src/java/org/apache/poi/ss/formula/atp/YearFracCalculator.java
src/java/org/apache/poi/ss/formula/functions/Days360.java
src/java/org/apache/poi/ss/formula/functions/EOMonth.java
src/java/org/apache/poi/ss/util/CellReference.java

index c1a0f5707e08444d5c0ad55c83da0a9e136db014..9bd3bdf66bf3df373c7041bf4357616831cac151 100644 (file)
@@ -28,6 +28,7 @@ import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Locale;
 import java.util.Map;
 import java.util.Set;
 
@@ -432,8 +433,10 @@ public final class RecordFactory {
             Integer key = Integer.valueOf(sid);
             if (result.containsKey(key)) {
                 Class<?> prevClass = result.get(key).getRecordClass();
-                throw new RuntimeException("duplicate record sid 0x" + Integer.toHexString(sid).toUpperCase()
-                        + " for classes (" + recClass.getName() + ") and (" + prevClass.getName() + ")");
+                throw new RuntimeException("duplicate record sid 0x" + 
+                        Integer.toHexString(sid).toUpperCase(Locale.ROOT)
+                        + " for classes (" + recClass.getName() + ") and ("
+                        + prevClass.getName() + ")");
             }
             result.put(key, getRecordCreator(recClass));
         }
index 6ac5368402873b6e1727c7d7785bbbe8898b8078..0d754da6717a4847b3654c40b9757e4130ad8408 100644 (file)
@@ -17,6 +17,8 @@
 
 package org.apache.poi.hssf.usermodel;
 
+import java.util.Locale;
+
 import org.apache.poi.hssf.record.PaletteRecord;
 import org.apache.poi.hssf.util.HSSFColor;
 
@@ -234,7 +236,7 @@ public final class HSSFPalette {
             {
                 int c = color & 0xff; //as unsigned
                 c = (c << 8) | c; //pad to 16-bit
-                s = Integer.toHexString(c).toUpperCase();
+                s = Integer.toHexString(c).toUpperCase(Locale.ROOT);
                 while (s.length() < 4)
                 {
                     s = "0" + s;
index 9fda8dcfb072397711ff4613a1bb6240a4ca081f..d9dc068d4acf2b666cbb9a42f4fc7a8c38cdc6ea 100644 (file)
@@ -19,6 +19,7 @@ package org.apache.poi.ss.formula.atp;
 
 import java.util.Calendar;
 import java.util.GregorianCalendar;
+import java.util.Locale;
 import java.util.TimeZone;
 
 import org.apache.poi.ss.formula.eval.ErrorEval;
@@ -316,7 +317,7 @@ final class YearFracCalculator {
        }
 
        private static SimpleDate createDate(int dayCount) {
-               GregorianCalendar calendar = new GregorianCalendar(UTC_TIME_ZONE);
+               GregorianCalendar calendar = new GregorianCalendar(UTC_TIME_ZONE, Locale.ROOT);
                DateUtil.setCalendar(calendar, dayCount, 0, false, false);
                return new SimpleDate(calendar);
        }
index fc03734ef4c90d1911b5cb271c6f1bc3d0f78ad1..65178a567be2aa7a88feaa45ac54e56331abbb49 100644 (file)
@@ -19,6 +19,7 @@ package org.apache.poi.ss.formula.functions;
 import java.util.Calendar;
 import java.util.GregorianCalendar;
 import java.util.Locale;
+import java.util.TimeZone;
 
 import org.apache.poi.ss.formula.eval.EvaluationException;
 import org.apache.poi.ss.formula.eval.NumberEval;
@@ -31,10 +32,13 @@ import org.apache.poi.ss.usermodel.DateUtil;
  * (twelve 30-day months), which is used in some accounting calculations. Use
  * this function to help compute payments if your accounting system is based on
  * twelve 30-day months.
- *
- * @author PUdalau
  */
 public class Days360 extends Var2or3ArgFunction {
+    /**
+     * 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 ValueEval evaluate(int srcRowIndex, int srcColumnIndex, ValueEval arg0, ValueEval arg1) {
         double result;
@@ -73,7 +77,7 @@ public class Days360 extends Var2or3ArgFunction {
     }
 
     private static Calendar getDate(double date) {
-        Calendar processedDate = new GregorianCalendar(Locale.ROOT);
+        Calendar processedDate = new GregorianCalendar(DEFAULT_TIMEZONE, Locale.ROOT);
         processedDate.setTime(DateUtil.getJavaDate(date, false));
         return processedDate;
     }
index 411257a09ffd12e44082bdb480d2bcefa4286b35..968b67eba18d6e9db5a1d16f46ab6f6723303523 100644 (file)
@@ -21,6 +21,7 @@ import java.util.Calendar;
 import java.util.Date;\r
 import java.util.GregorianCalendar;\r
 import java.util.Locale;\r
+import java.util.TimeZone;\r
 \r
 import org.apache.poi.ss.formula.OperationEvaluationContext;\r
 import org.apache.poi.ss.formula.eval.ErrorEval;\r
@@ -44,7 +45,12 @@ import org.apache.poi.ss.usermodel.DateUtil;
  * zero or negative (in the past).\r
  */\r
 public class EOMonth implements FreeRefFunction {\r
-\r
+    /**\r
+     * Excel doesn't store TimeZone information in the file, so if in doubt,\r
+     *  use UTC to perform calculations\r
+     */\r
+    private static final TimeZone DEFAULT_TIMEZONE = TimeZone.getTimeZone("UTC");\r
+    \r
     public static final FreeRefFunction instance = new EOMonth();\r
 \r
     @Override\r
@@ -64,7 +70,7 @@ public class EOMonth implements FreeRefFunction {
 \r
             Date startDate = DateUtil.getJavaDate(startDateAsNumber, false);\r
 \r
-            Calendar cal = new GregorianCalendar(Locale.ROOT);\r
+            Calendar cal = new GregorianCalendar(DEFAULT_TIMEZONE, Locale.ROOT);\r
             cal.setTime(startDate);\r
             cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal.get(Calendar.DAY_OF_MONTH), 0, 0, 0);\r
             cal.set(Calendar.MILLISECOND, 0);\r
@@ -78,5 +84,4 @@ public class EOMonth implements FreeRefFunction {
             return e.getErrorEval();\r
         }\r
     }\r
-\r
 }\r
index b4fa2b3ce1fa16a378d7efcdb7ec8c638da5e4ab..cc695e92f429b7fd7339eb7cd9f5ad0c88dd3fbd 100644 (file)
@@ -173,7 +173,7 @@ public class CellReference {
      */
     public static int convertColStringToIndex(String ref) {
         int retval=0;
-        char[] refs = ref.toUpperCase().toCharArray();
+        char[] refs = ref.toUpperCase(Locale.ROOT).toCharArray();
         for (int k=0; k<refs.length; k++) {
             char thechar = refs[k];
             if (thechar == ABSOLUTE_REFERENCE_MARKER) {
@@ -311,7 +311,7 @@ public class CellReference {
             return false; // that was easy
         }
         if(numberOfLetters == lastColLength) {
-            if(colStr.toUpperCase().compareTo(lastCol) > 0) {
+            if(colStr.toUpperCase(Locale.ROOT).compareTo(lastCol) > 0) {
                 return false;
             }
         } else {
@@ -379,7 +379,7 @@ public class CellReference {
             }
         }
 
-        col = reference.substring(start,loc).toUpperCase();
+        col = reference.substring(start,loc).toUpperCase(Locale.ROOT);
         row = reference.substring(loc);
         CellRefParts cellRefParts = new CellRefParts(sheetName, row, col);
         return cellRefParts;