Search in sources :

Example 1 with BroadleafEnumerationType

use of org.broadleafcommerce.common.BroadleafEnumerationType in project BroadleafCommerce by BroadleafCommerce.

the class BroadleafEnumerationUtility method getEnumerationValues.

@SuppressWarnings("rawtypes")
public List<Tuple<String, String>> getEnumerationValues(String broadleafEnumerationClass, DynamicEntityDao dynamicEntityDao) {
    try {
        Map<String, String> enumVals;
        Class<?> broadleafEnumeration = Class.forName(broadleafEnumerationClass);
        Method typeMethod = broadleafEnumeration.getMethod("getType");
        Method friendlyTypeMethod = broadleafEnumeration.getMethod("getFriendlyType");
        Field types = dynamicEntityDao.getFieldManager().getField(broadleafEnumeration, "TYPES");
        if (Comparable.class.isAssignableFrom(broadleafEnumeration)) {
            enumVals = new LinkedHashMap<String, String>();
            Set<BroadleafEnumerationType> blcEnumSet = new TreeSet<BroadleafEnumerationType>();
            if (types != null) {
                Map typesMap = (Map) types.get(null);
                for (Object value : typesMap.values()) {
                    blcEnumSet.add((BroadleafEnumerationType) value);
                }
                for (Object value : typesMap.values()) {
                    enumVals.put((String) friendlyTypeMethod.invoke(value), (String) typeMethod.invoke(value));
                }
            }
        } else {
            enumVals = new TreeMap<String, String>();
            if (types != null) {
                Map typesMap = (Map) types.get(null);
                for (Object value : typesMap.values()) {
                    enumVals.put((String) friendlyTypeMethod.invoke(value), (String) typeMethod.invoke(value));
                }
            } else {
                Field[] fields = dynamicEntityDao.getAllFields(broadleafEnumeration);
                for (Field field : fields) {
                    boolean isStatic = Modifier.isStatic(field.getModifiers());
                    if (isStatic && field.getType().isAssignableFrom(broadleafEnumeration)) {
                        enumVals.put((String) friendlyTypeMethod.invoke(field.get(null)), (String) typeMethod.invoke(field.get(null)));
                    }
                }
            }
        }
        List<Tuple<String, String>> enumerationValues = new ArrayList<Tuple<String, String>>();
        for (String key : enumVals.keySet()) {
            Tuple<String, String> t = new Tuple<String, String>(enumVals.get(key), key);
            enumerationValues.add(t);
        }
        return enumerationValues;
    } catch (Exception e) {
        throw new RuntimeException(e);
    }
}
Also used : ArrayList(java.util.ArrayList) Method(java.lang.reflect.Method) Field(java.lang.reflect.Field) TreeSet(java.util.TreeSet) BroadleafEnumerationType(org.broadleafcommerce.common.BroadleafEnumerationType) LinkedHashMap(java.util.LinkedHashMap) TreeMap(java.util.TreeMap) Map(java.util.Map) Tuple(org.broadleafcommerce.common.util.Tuple)

Aggregations

Field (java.lang.reflect.Field)1 Method (java.lang.reflect.Method)1 ArrayList (java.util.ArrayList)1 LinkedHashMap (java.util.LinkedHashMap)1 Map (java.util.Map)1 TreeMap (java.util.TreeMap)1 TreeSet (java.util.TreeSet)1 BroadleafEnumerationType (org.broadleafcommerce.common.BroadleafEnumerationType)1 Tuple (org.broadleafcommerce.common.util.Tuple)1