#58130 Improve enum lookup by name, and work around a docs ordering bug

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1691677 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Nick Burch 2015-07-18 04:52:45 +00:00
parent e4b5e189ae
commit 2641fc7a25
2 changed files with 27 additions and 10 deletions

View File

@ -54,6 +54,12 @@ public interface ConditionalFormattingThreshold {
public static RangeType byId(int id) { public static RangeType byId(int id) {
return values()[id-1]; // 1-based IDs return values()[id-1]; // 1-based IDs
} }
public static RangeType byName(String name) {
for (RangeType t : values()) {
if (t.name.equals(name)) return t;
}
return null;
}
private RangeType(int id, String name) { private RangeType(int id, String name) {
this.id = id; this.name = name; this.id = id; this.name = name;

View File

@ -31,12 +31,14 @@ public interface IconMultiStateFormatting {
GREY_3_ARROWS(1, 3, "3ArrowsGray"), GREY_3_ARROWS(1, 3, "3ArrowsGray"),
/** Green / Yellow / Red flags */ /** Green / Yellow / Red flags */
GYR_3_FLAGS(2, 3, "3Flags"), GYR_3_FLAGS(2, 3, "3Flags"),
/** Green / Yellow / Red traffic lights (no background) */ /** Green / Yellow / Red traffic lights (no background). Default */
GYR_3_TRAFFIC_LIGHTS(3, 3, null), GYR_3_TRAFFIC_LIGHTS(3, 3, "3TrafficLights1"),
/** Green Circle / Yellow Triangle / Red Diamond */ /** Green / Yellow / Red traffic lights on a black square background.
GYR_3_SHAPES(4, 3, "3Signs"), * Note, MS-XLS docs v20141018 say this is id=5 but seems to be id=4 */
/** Green / Yellow / Red traffic lights on a black square background */ GYR_3_TRAFFIC_LIGHTS_BOX(4, 3, "3TrafficLights2"),
GYR_3_TRAFFIC_LIGHTS_BOX(5, 3, "3TrafficLights2"), /** Green Circle / Yellow Triangle / Red Diamond.
* Note, MS-XLS docs v20141018 say this is id=4 but seems to be id=5 */
GYR_3_SHAPES(5, 3, "3Signs"),
/** Green Tick / Yellow ! / Red Cross on a circle background */ /** Green Tick / Yellow ! / Red Cross on a circle background */
GYR_3_SYMBOLS_CIRCLE(6, 3, "3Symbols"), GYR_3_SYMBOLS_CIRCLE(6, 3, "3Symbols"),
/** Green Tick / Yellow ! / Red Cross (no background) */ /** Green Tick / Yellow ! / Red Cross (no background) */
@ -55,6 +57,8 @@ public interface IconMultiStateFormatting {
RATINGS_5(0xF, 5, "5Rating"), RATINGS_5(0xF, 5, "5Rating"),
QUARTERS_5(0x10, 5, "5Quarters"); QUARTERS_5(0x10, 5, "5Quarters");
protected static final IconSet DEFAULT_ICONSET = IconSet.GYR_3_TRAFFIC_LIGHTS;
/** Numeric ID of the icon set */ /** Numeric ID of the icon set */
public int id; public int id;
/** How many icons in the set */ /** How many icons in the set */
@ -63,15 +67,18 @@ public interface IconMultiStateFormatting {
public final String name; public final String name;
public String toString() { public String toString() {
return id + " - " + getName(); return id + " - " + name;
}
private String getName() {
return (name==null?"default":name);
} }
public static IconSet byId(int id) { public static IconSet byId(int id) {
return values()[id]; return values()[id];
} }
public static IconSet byName(String name) {
for (IconSet set : values()) {
if (set.name.equals(name)) return set;
}
return null;
}
private IconSet(int id, int num, String name) { private IconSet(int id, int num, String name) {
this.id = id; this.num = num; this.name = name; this.id = id; this.num = num; this.name = name;
@ -113,4 +120,8 @@ public interface IconMultiStateFormatting {
* {@link IconSet#num} for the current {@link #getIconSet()} * {@link IconSet#num} for the current {@link #getIconSet()}
*/ */
void setThresholds(ConditionalFormattingThreshold[] thresholds); void setThresholds(ConditionalFormattingThreshold[] thresholds);
/**
* Creates a new, empty Threshold
*/
ConditionalFormattingThreshold createThreshold();
} }