Roy Golan has uploaded a new change for review. Change subject: core: cleanup and delete EnumCompat ......................................................................
core: cleanup and delete EnumCompat Use the native enum methods and generify uses of enums with IDs Change-Id: I0383ea74495f74ff1727561644017d8b3bae7e6f Signed-off-by: Roy Golan <[email protected]> --- M backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/DateEnumForSearch.java D backend/manager/modules/compat/src/main/java/org/ovirt/engine/core/compat/EnumCompat.java M backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/DateEnumValueAutoCompleter.java M backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/EnumNameAutoCompleter.java M backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/EnumValueAutoCompleter.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/DataProvider.java 6 files changed, 26 insertions(+), 96 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/16/9516/1 diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/DateEnumForSearch.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/DateEnumForSearch.java index c0c95bc..b44cb44 100644 --- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/DateEnumForSearch.java +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/DateEnumForSearch.java @@ -2,7 +2,7 @@ import java.util.HashMap; -public enum DateEnumForSearch { +public enum DateEnumForSearch implements IdentifiedEnum { Today(1), Yesterday(2); @@ -23,7 +23,13 @@ return intValue; } + public static DateEnumForSearch forValue(int value) { return mappings.get(value); } + + @Override + public int getId() { + return intValue; + } } diff --git a/backend/manager/modules/compat/src/main/java/org/ovirt/engine/core/compat/EnumCompat.java b/backend/manager/modules/compat/src/main/java/org/ovirt/engine/core/compat/EnumCompat.java deleted file mode 100644 index f29a383..0000000 --- a/backend/manager/modules/compat/src/main/java/org/ovirt/engine/core/compat/EnumCompat.java +++ /dev/null @@ -1,69 +0,0 @@ -package org.ovirt.engine.core.compat; - -import java.lang.reflect.Method; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -public class EnumCompat { - - /** - * Returns the Enum instances as an Arraylist - */ - public static <T extends Enum> ArrayList<T> GetValues(Class<T> clazz) { - ArrayList<String> returnValues = new ArrayList<String>(); - if (!clazz.isEnum()) { - throw new CompatException("Class is not an Enum: " + clazz.getName()); - } - return new ArrayList(Arrays.asList(clazz.getEnumConstants())); - } - - /** - * Returns the Enum names as an Arraylist - */ - public static <T extends Enum> String[] GetNames(Class<T> clazz) { - ArrayList<String> returnValues = new ArrayList<String>(); - if (!clazz.isEnum()) { - throw new CompatException("Class is not an Enum: " + clazz.getName()); - } - for (Enum e : clazz.getEnumConstants()) { - returnValues.add(e.name()); - } - return returnValues.toArray(new String[0]); - } - - /** - * Returns the name of an enum based on its ordinal value - */ - public static String GetName(Class enumerationType, int val) { - Enum enumObject; - try { - Method forValue = enumerationType.getMethod("forValue", int.class); - enumObject = (Enum) forValue.invoke(null, val); - } catch (Exception ex) { - throw new RuntimeException(ex); - } - return enumObject.name(); - // return ((Enum)enumerationType)..getEnumConstants()[val].toString(); - } - - /** - * Returns the ordinal values of the enum - */ - public static <T extends Enum> int[] GetIntValues(Class<T> enumerationType) { - List<T> enums = GetValues(enumerationType); - int size = enums.size(); - int[] returnValue = new int[size]; - try { - Method getValue = enumerationType.getMethod("getValue"); - for (int x = 0; x < size; x++) { - // returnValue[x] = enums.get(x).ordinal(); - int enumValue = (Integer) getValue.invoke(enums.get(x)); - returnValue[x] = enumValue; - } - } catch (Exception ex) { - throw new RuntimeException(ex); - } - return returnValue; - } -} diff --git a/backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/DateEnumValueAutoCompleter.java b/backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/DateEnumValueAutoCompleter.java index 604b046..5e21411 100644 --- a/backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/DateEnumValueAutoCompleter.java +++ b/backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/DateEnumValueAutoCompleter.java @@ -1,18 +1,18 @@ package org.ovirt.engine.core.searchbackend; +import org.ovirt.engine.core.common.businessentities.IdentifiedEnum; import org.ovirt.engine.core.compat.DateTime; import org.ovirt.engine.core.compat.DayOfWeek; -import org.ovirt.engine.core.compat.EnumCompat; import org.ovirt.engine.core.compat.StringHelper; public class DateEnumValueAutoCompleter extends BaseAutoCompleter implements IConditionValueAutoCompleter { private java.util.HashMap<String, Integer> mEnumValues = new java.util.HashMap<String, Integer>(); - public DateEnumValueAutoCompleter(Class enumerationType) { + public <I extends IdentifiedEnum,E extends Enum<? extends I>> DateEnumValueAutoCompleter(Class<E> enumerationType) { super(); - for (int val : EnumCompat.GetIntValues(enumerationType)) { - String ValName = EnumCompat.GetName(enumerationType, val).toUpperCase(); - mEnumValues.put(ValName, val); + for (E val : enumerationType.getEnumConstants()) { + String ValName = val.name().toUpperCase(); + mEnumValues.put(ValName, ((I) val).getId()); mVerbs.put(ValName, ValName); } AddDaysOfWeek(); diff --git a/backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/EnumNameAutoCompleter.java b/backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/EnumNameAutoCompleter.java index fb52f55..30f54a7 100644 --- a/backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/EnumNameAutoCompleter.java +++ b/backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/EnumNameAutoCompleter.java @@ -1,7 +1,5 @@ package org.ovirt.engine.core.searchbackend; -import org.ovirt.engine.core.compat.EnumCompat; - /** * Auto completer that presents enum names as completions, and returns the same as actual value. This is useful for * enums that are stored as varchars in DB, with value same as the name. @@ -13,8 +11,8 @@ * @param enumerationType */ public <T extends Enum<T>> EnumNameAutoCompleter(Class<T> enumerationType) { - for (String name : EnumCompat.GetNames(enumerationType)) { - mVerbs.put(name, name); + for (T enumMember : enumerationType.getEnumConstants()) { + mVerbs.put(enumMember.name(), enumMember.name()); } buildCompletions(); } diff --git a/backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/EnumValueAutoCompleter.java b/backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/EnumValueAutoCompleter.java index 674fbe3..0760f9a 100644 --- a/backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/EnumValueAutoCompleter.java +++ b/backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/EnumValueAutoCompleter.java @@ -4,17 +4,17 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.ovirt.engine.core.compat.EnumCompat; +import org.ovirt.engine.core.common.businessentities.IdentifiedEnum; public class EnumValueAutoCompleter extends BaseAutoCompleter implements IConditionValueAutoCompleter { private final HashMap<String, Integer> mEnumValues = new HashMap<String, Integer>(); - public EnumValueAutoCompleter(Class enumerationType) { + public <I extends IdentifiedEnum, E extends Enum<? extends I>> EnumValueAutoCompleter(Class<E> enumerationType) { - for (int val : EnumCompat.GetIntValues(enumerationType)) { - String ValName = EnumCompat.GetName(enumerationType, val).toUpperCase(); + for (E val : enumerationType.getEnumConstants()) { + String ValName = val.name().toUpperCase(); try { - mEnumValues.put(ValName, val); + mEnumValues.put(ValName, ((I) val).getId()); mVerbs.put(ValName, ValName); } catch (RuntimeException e) { log.error("EnumValueAutoCompleter. Failed to add " + ValName + " .Exception : " + e.getMessage(), e); diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/DataProvider.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/DataProvider.java index 645b9a3..32fd0d7 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/DataProvider.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/DataProvider.java @@ -676,18 +676,18 @@ { // TODO: We can translate it here too ArrayList<String> ret = new ArrayList<String>(); - for (String s : EnumCompat.GetNames(VDSType.class)) + for (VDSType vdsType : VDSType.values()) { - if (StringHelper.stringsEqual(s, VDSType.PowerClient.toString())) + if (VDSType.PowerClient == vdsType) { if (showPowerclient) { - ret.add(s); + ret.add(vdsType.name()); } } else { - ret.add(s); + ret.add(vdsType.name()); } } return ret; @@ -696,8 +696,7 @@ public static ArrayList<EventNotificationEntity> GetEventNotificationTypeList() { ArrayList<EventNotificationEntity> ret = new ArrayList<EventNotificationEntity>(); - // TODO: We can translate it here too - for (EventNotificationEntity entity : EnumCompat.GetValues(EventNotificationEntity.class)) + for (EventNotificationEntity entity : EventNotificationEntity.values()) { if (entity != EventNotificationEntity.UNKNOWN) { @@ -726,11 +725,7 @@ public static ArrayList<VmInterfaceType> GetNicTypeList(VmOsType osType, boolean hasDualmode) { - ArrayList<VmInterfaceType> list = new ArrayList<VmInterfaceType>(); - for (VmInterfaceType item : EnumCompat.GetValues(VmInterfaceType.class)) - { - list.add(item); - } + ArrayList<VmInterfaceType> list = new ArrayList<VmInterfaceType>(Arrays.asList(VmInterfaceType.values())); list.remove(VmInterfaceType.rtl8139_pv); // Dual mode NIC should be available only for existing NICs that have // that type already @@ -1054,7 +1049,7 @@ public static Iterable GetUsbPolicyList() { - return EnumCompat.GetValues(UsbPolicy.class); + return Arrays.asList(UsbPolicy.values()); } public static ArrayList<VDS> GetUpHostList() -- To view, visit http://gerrit.ovirt.org/9516 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I0383ea74495f74ff1727561644017d8b3bae7e6f Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Roy Golan <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
