]> source.dussan.org Git - poi.git/commitdiff
Prepare FormulaError for both long and short codes
authorNick Burch <nick@apache.org>
Sun, 8 Feb 2015 15:22:01 +0000 (15:22 +0000)
committerNick Burch <nick@apache.org>
Sun, 8 Feb 2015 15:22:01 +0000 (15:22 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1658187 13f79535-47bb-0310-9956-ffa450edef68

src/java/org/apache/poi/ss/usermodel/FormulaError.java

index f313ab6d0afd10c777d8318e2d6755cfd6e6f07c..739362436a52d069a3a24ef0150d933d133d016b 100644 (file)
@@ -95,11 +95,13 @@ public enum FormulaError {
      */
     NA(0x2A, "#N/A");
 
-    private byte type;
-    private String repr;
+    private final byte type;
+    private final int longType;
+    private final String repr;
 
     private FormulaError(int type, String repr) {
-        this.type = (byte) type;
+        this.type = (byte)type;
+        this.longType = type;
         this.repr = repr;
     }
 
@@ -109,6 +111,12 @@ public enum FormulaError {
     public byte getCode() {
         return type;
     }
+    /**
+     * @return long (internal) numeric code of the error
+     */
+    public int getLongCode() {
+        return longType;
+    }
 
     /**
      * @return string representation of the error
@@ -118,10 +126,12 @@ public enum FormulaError {
     }
 
     private static Map<String, FormulaError> smap = new HashMap<String, FormulaError>();
-    private static Map<Byte, FormulaError> imap = new HashMap<Byte, FormulaError>();
+    private static Map<Byte, FormulaError> bmap = new HashMap<Byte, FormulaError>();
+    private static Map<Integer, FormulaError> imap = new HashMap<Integer, FormulaError>();
     static{
         for (FormulaError error : values()) {
-            imap.put(error.getCode(), error);
+            bmap.put(error.getCode(), error);
+            imap.put(error.getLongCode(), error);
             smap.put(error.getString(), error);
         }
     }
@@ -129,11 +139,17 @@ public enum FormulaError {
     public static final boolean isValidCode(int errorCode) {
         for (FormulaError error : values()) {
             if (error.getCode() == errorCode) return true;
+            if (error.getLongCode() == errorCode) return true;
         }
         return false;
     }
 
     public static FormulaError forInt(byte type){
+        FormulaError err = bmap.get(type);
+        if(err == null) throw new IllegalArgumentException("Unknown error type: " + type);
+        return err;
+    }
+    public static FormulaError forInt(int type){
         FormulaError err = imap.get(type);
         if(err == null) throw new IllegalArgumentException("Unknown error type: " + type);
         return err;