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 ff210628cc
commit c397f276a0
1 changed files with 21 additions and 5 deletions

View 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;