Prepare FormulaError for both long and short codes

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1658187 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Nick Burch 2015-02-08 15:22:01 +00:00
parent b1a6afc36a
commit d566e3948d

View File

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