From: Javen O'Neal Date: Sun, 17 Apr 2016 03:39:21 +0000 (+0000) Subject: bug 59340: lookup IndexedColors by index X-Git-Tag: REL_3_15_BETA2~301 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=2b43c580d63c856a61740b79f2a02e78574ac323;p=poi.git bug 59340: lookup IndexedColors by index git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1739539 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/src/java/org/apache/poi/ss/usermodel/IndexedColors.java b/src/java/org/apache/poi/ss/usermodel/IndexedColors.java index 61d7f6818c..92ebc08a1f 100644 --- a/src/java/org/apache/poi/ss/usermodel/IndexedColors.java +++ b/src/java/org/apache/poi/ss/usermodel/IndexedColors.java @@ -31,6 +31,7 @@ package org.apache.poi.ss.usermodel; */ public enum IndexedColors { + // 0-7? BLACK(8), WHITE(9), RED(10), @@ -50,6 +51,7 @@ public enum IndexedColors { CORNFLOWER_BLUE(24), MAROON(25), LEMON_CHIFFON(26), + // 27? ORCHID(28), CORAL(29), ROYAL_BLUE(30), @@ -80,6 +82,13 @@ public enum IndexedColors { GREY_80_PERCENT(63), AUTOMATIC(64); + private final static IndexedColors[] _values = new IndexedColors[65]; + static { + for (IndexedColors color : values()) { + _values[color.index] = color; + } + } + public final short index; IndexedColors(int idx){ @@ -94,4 +103,23 @@ public enum IndexedColors { public short getIndex(){ return index; } + + /** + * + * + * @param index the index of the color + * @return the corresponding IndexedColors enum + * @throws IllegalArgumentException if index is not a valid IndexedColors + * @since 3.15-beta2 + */ + public static IndexedColors fromInt(int index) { + if (index < 0 || index >= _values.length) { + throw new IllegalArgumentException("Illegal IndexedColor index: " + index); + } + IndexedColors color = _values[index]; + if (color == null) { + throw new IllegalArgumentException("Illegal IndexedColor index: " + index); + } + return color; + } } diff --git a/src/testcases/org/apache/poi/ss/usermodel/TestIndexedColors.java b/src/testcases/org/apache/poi/ss/usermodel/TestIndexedColors.java new file mode 100644 index 0000000000..5ca6621e73 --- /dev/null +++ b/src/testcases/org/apache/poi/ss/usermodel/TestIndexedColors.java @@ -0,0 +1,56 @@ +/* ==================================================================== + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +==================================================================== */ + +package org.apache.poi.ss.usermodel; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.fail; + +import org.junit.Test; + +/** + * @author Yegor Kozlov + */ +public final class TestIndexedColors { + + @Test + public void fromInt() { + int[] illegalIndices = { -1, 0, 27, 65 }; + for (int index : illegalIndices) { + try { + IndexedColors.fromInt(index); + fail("Expected IllegalArgumentException: " + index); + } + catch (final IllegalArgumentException e) { + // expected + } + } + assertEquals(IndexedColors.BLACK, IndexedColors.fromInt(8)); + assertEquals(IndexedColors.GOLD, IndexedColors.fromInt(51)); + assertEquals(IndexedColors.AUTOMATIC, IndexedColors.fromInt(64)); + } + + @Test + public void getIndex() { + assertEquals(51, IndexedColors.GOLD.getIndex()); + } + + @Test + public void index() { + assertEquals(51, IndexedColors.GOLD.index); + } +} \ No newline at end of file