All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.flybotix.hfr.util.lang.EnumUtils Maven / Gradle / Ivy

Go to download

A way for wifi robots and IoT devices to quickly send compressed data arrays across a network.

There is a newer version: 2019.1.11
Show newest version
package com.flybotix.hfr.util.lang;

import java.util.ArrayList;
import java.util.Collections;
import java.util.EnumSet;
import java.util.List;
import java.util.Set;

public class EnumUtils {
  
  public static > List getSortedEnums(Class pEnumeration) {
    return getEnums(pEnumeration, true);
  }
  
  public static > List getEnums(Class pEnumeration) {
    return getEnums(pEnumeration, false);
  }
  
  public static > List getEnums(Class pEnumeration, boolean pSorted) {
    Set set = EnumSet.allOf(pEnumeration);
    List result = new ArrayList();
    result.addAll(set);
    Collections.sort(result, (e1, e2) -> Integer.compare(e1.ordinal(), e2.ordinal()));
    return result;
  }
  
  public static > int getLength(Class pEnumeration) {
    return getEnums(pEnumeration, false).size();
  }
  
  @SuppressWarnings("unchecked")
  public static > Class getEnumClass(String pString) {
    try {
      return (Class)EnumUtils.class.getClassLoader().loadClass(pString);
    } catch (ClassNotFoundException e) {
      System.err.println(e.getMessage());
      e.printStackTrace();
    }
    return null;
  }
  
  public static > E getFirstEnumInstance(Class pEnum) {
    return getSortedEnums(pEnum).get(0);
  }
  
  public static > List classLoadEnums(String pClass) {
    Class clazz = getEnumClass(pClass);
    return getSortedEnums(clazz);
  }
  
  public static > int hashOf(Class pEnumeration) {
    Set set = EnumSet.allOf(pEnumeration);
    int p = 31;
    int result = 1;
    for(E e : set) {
      result = p * result + e.name().hashCode();
    }
    return result;
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy