This is an automated email from the ASF dual-hosted git repository.
doebele pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/empire-db.git
The following commit(s) were added to refs/heads/master by this push:
new 96a590b EMPIREDB-315 Improve Options
96a590b is described below
commit 96a590b3a0c1a76155a7a792cf2de521e4db020a
Author: Rainer Döbele <[email protected]>
AuthorDate: Tue Dec 24 11:10:48 2019 +0100
EMPIREDB-315
Improve Options
---
.../java/org/apache/empire/commons/Options.java | 40 ++++++++++++++++------
.../java/org/apache/empire/db/DBTableColumn.java | 13 ++-----
2 files changed, 31 insertions(+), 22 deletions(-)
diff --git a/empire-db/src/main/java/org/apache/empire/commons/Options.java
b/empire-db/src/main/java/org/apache/empire/commons/Options.java
index 895c824..96037f7 100644
--- a/empire-db/src/main/java/org/apache/empire/commons/Options.java
+++ b/empire-db/src/main/java/org/apache/empire/commons/Options.java
@@ -26,6 +26,7 @@ import java.util.Iterator;
import java.util.Map.Entry;
import java.util.Set;
+import org.apache.empire.exceptions.InvalidArgumentException;
import org.apache.empire.xml.XMLUtil;
import org.w3c.dom.Element;
@@ -41,38 +42,55 @@ public class Options extends AbstractSet<OptionEntry>
implements Cloneable, Seri
{
private static final long serialVersionUID = 1L;
+ private static final String EMPTY_STRING = "";
+
public enum InsertPos
{
Top, Bottom, Sort
}
- private static final String EMPTY_STRING = "";
-
- private ArrayList<OptionEntry> list = new ArrayList<OptionEntry>();
+ private final ArrayList<OptionEntry> list;
public Options()
- {
- // Default constructor
+ { // Default constructor
+ this.list = new ArrayList<OptionEntry>();
}
public Options(Options other)
{
+ this.list = new ArrayList<OptionEntry>(other.size());
this.addAll(other);
}
-
- @Override
- public Options clone()
- {
- return new Options(this);
- }
public Options(OptionEntry [] entries)
{
+ this.list = new ArrayList<OptionEntry>(entries.length);
for (int i=0; i<entries.length; i++)
{
this.add(entries[i]);
}
}
+
+ public Options(Class<?> enumType)
+ { // must be an enum
+ if (enumType==null || !enumType.isEnum())
+ throw new InvalidArgumentException("enumType", enumType);
+ // create options from enum
+ @SuppressWarnings("unchecked")
+ Enum<?>[] items = ((Class<Enum<?>>)enumType).getEnumConstants();
+ this.list = new ArrayList<OptionEntry>(items.length);
+ for (int i=0; i<items.length; i++)
+ {
+ Enum<?> item = items[i];
+ add(item, item.toString(), true);
+ }
+ }
+
+ @Override
+ public Options clone()
+ {
+ return new Options(this);
+ }
protected int getIndex(Object value)
{
diff --git a/empire-db/src/main/java/org/apache/empire/db/DBTableColumn.java
b/empire-db/src/main/java/org/apache/empire/db/DBTableColumn.java
index af494e0..7400e49 100644
--- a/empire-db/src/main/java/org/apache/empire/db/DBTableColumn.java
+++ b/empire-db/src/main/java/org/apache/empire/db/DBTableColumn.java
@@ -334,18 +334,9 @@ public class DBTableColumn extends DBColumn
*/
public void setEnumOptions(Class<?> enumType)
{
- if (enumType==null || !enumType.isEnum())
- throw new InvalidArgumentException("enumType", enumType);
// Enum special treatment
- log.debug("Creating options for enum type {}.", enumType.getName());
- @SuppressWarnings({ "rawtypes", "unchecked" })
- Enum<?>[] items = ((Class<Enum>)enumType).getEnumConstants();
- this.options = new Options();
- for (int i=0; i<items.length; i++)
- {
- Enum<?> item = items[i];
- options.add(item, item.toString(), true);
- }
+ log.debug("Adding enum options of type {} for column {}.",
enumType.getName(), getName());
+ this.options = new Options(enumType);
// set enumType
setAttribute(Column.COLATTR_ENUMTYPE, enumType);
}