2022-07-20 13:18:57 +02:00
|
|
|
package fr.pandacube.lib.util;
|
2016-02-16 20:07:51 +01:00
|
|
|
|
2022-07-10 00:55:56 +02:00
|
|
|
import java.util.Arrays;
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
2016-02-16 20:07:51 +01:00
|
|
|
public class EnumUtil {
|
|
|
|
|
|
|
|
/**
|
|
|
|
* List all enum constants which are in the specified enum class.
|
2016-07-14 14:22:23 +02:00
|
|
|
*
|
2016-02-16 20:07:51 +01:00
|
|
|
* @param enumType the enum class.
|
|
|
|
* @param separator a string which will be used as a separator
|
|
|
|
* @return a string representation of the enum class.
|
|
|
|
*/
|
|
|
|
public static <T extends Enum<T>> String enumList(Class<T> enumType, String separator) {
|
2022-07-10 00:55:56 +02:00
|
|
|
return Arrays.stream(enumType.getEnumConstants())
|
|
|
|
.map(Enum::name)
|
|
|
|
.collect(Collectors.joining(separator));
|
2016-02-16 20:07:51 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
2016-07-14 14:22:23 +02:00
|
|
|
* List all enum constants which are in the specified enum class. It is
|
|
|
|
* equivalent to call
|
|
|
|
* {@link #enumList(Class, String)} with the second parameter
|
|
|
|
* <code>", "</code>
|
|
|
|
*
|
2016-02-16 20:07:51 +01:00
|
|
|
* @param enumType the enum class.
|
|
|
|
* @return a string representation of the enum class.
|
|
|
|
*/
|
|
|
|
public static <T extends Enum<T>> String enumList(Class<T> enumType) {
|
|
|
|
return enumList(enumType, ", ");
|
|
|
|
}
|
2016-07-14 14:22:23 +02:00
|
|
|
|
2016-02-16 20:07:51 +01:00
|
|
|
/**
|
2016-07-14 14:22:23 +02:00
|
|
|
* Permet de rechercher l'existance d'un élément dans un enum, de façon
|
|
|
|
* insensible à la casse
|
|
|
|
*
|
2016-02-16 20:07:51 +01:00
|
|
|
* @param enumType la classe correpondant à l'enum à lister
|
|
|
|
* @param search l'élément à rechercher, insensible à la casse
|
|
|
|
* @return l'élément de l'énumarétion, si elle a été trouvée, null sinon
|
|
|
|
*/
|
|
|
|
public static <T extends Enum<T>> T searchEnum(Class<T> enumType, String search) {
|
|
|
|
T[] elements = enumType.getEnumConstants();
|
2016-07-14 14:22:23 +02:00
|
|
|
|
|
|
|
for (T el : elements)
|
|
|
|
if (el.name().equalsIgnoreCase(search)) return el;
|
|
|
|
return null;
|
2016-02-16 20:07:51 +01:00
|
|
|
}
|
2016-07-14 14:22:23 +02:00
|
|
|
|
2016-07-14 01:46:44 +02:00
|
|
|
/**
|
2016-07-14 14:22:23 +02:00
|
|
|
* Permet de rechercher l'existance d'un élément dans un enum, de façon
|
|
|
|
* insensible à la casse
|
|
|
|
* La validité de la classe passé en premier paramètre est vérifiée
|
|
|
|
* dynamiquement et non
|
|
|
|
* statiquement. Préférez l'utilisation de
|
|
|
|
* {@link #searchEnum(Class, String)} quand c'est possible.
|
|
|
|
*
|
2016-07-14 01:46:44 +02:00
|
|
|
* @param enumType la classe correpondant à l'enum à lister
|
|
|
|
* @param search l'élément à rechercher, insensible à la casse
|
2016-07-14 14:22:23 +02:00
|
|
|
* @return l'élément de l'énumération, si elle a été trouvée et si la classe
|
|
|
|
* passée en paramètre est un enum, null dans les autres cas
|
2016-07-14 01:46:44 +02:00
|
|
|
*/
|
|
|
|
public static Enum<?> searchUncheckedEnum(Class<?> enumType, String search) {
|
2016-07-14 14:22:23 +02:00
|
|
|
if (!enumType.isEnum()) return null;
|
2016-07-14 01:46:44 +02:00
|
|
|
Enum<?>[] elements = (Enum<?>[]) enumType.getEnumConstants();
|
2016-07-14 14:22:23 +02:00
|
|
|
|
|
|
|
for (Enum<?> el : elements)
|
|
|
|
if (el.name().equalsIgnoreCase(search)) return el;
|
|
|
|
return null;
|
2016-07-14 01:46:44 +02:00
|
|
|
}
|
2016-07-14 14:22:23 +02:00
|
|
|
|
2016-02-16 20:07:51 +01:00
|
|
|
/**
|
2016-07-14 14:22:23 +02:00
|
|
|
* Retourne une valeur aléatoire parmis les élément de l'Enum spécifié en
|
|
|
|
* paramètre.
|
|
|
|
*
|
2016-02-16 20:07:51 +01:00
|
|
|
* @param enumType l'enum dans lequel piocher la valeur
|
|
|
|
* @return une des valeurs de l'enum
|
|
|
|
*/
|
|
|
|
public static <T extends Enum<T>> T randomValue(Class<T> enumType) {
|
|
|
|
T[] elements = enumType.getEnumConstants();
|
2016-07-14 14:22:23 +02:00
|
|
|
|
2016-02-16 20:07:51 +01:00
|
|
|
return elements[RandomUtil.rand.nextInt(elements.length)];
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|