diff --git a/src/java/org/apache/poi/ss/usermodel/FormulaError.java b/src/java/org/apache/poi/ss/usermodel/FormulaError.java index f313ab6d0..739362436 100644 --- a/src/java/org/apache/poi/ss/usermodel/FormulaError.java +++ b/src/java/org/apache/poi/ss/usermodel/FormulaError.java @@ -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 smap = new HashMap(); - private static Map imap = new HashMap(); + private static Map bmap = new HashMap(); + private static Map imap = new HashMap(); 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;