NamedEnum.java
/*
*
* Copyright 2015-Present Entando Inc. (http://www.entando.com) All rights reserved.
*
* This library is free software; you can redistribute it and/or modify it under
* the terms of the GNU Lesser General Public License as published by the Free
* Software Foundation; either version 2.1 of the License, or (at your option)
* any later version.
*
* This library is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
* details.
*
*/
package org.entando.kubernetes.model.common;
import com.google.common.base.CaseFormat;
import java.util.Locale;
public interface NamedEnum {
String name();
default String getCamelCaseName() {
return CaseFormat.UPPER_UNDERSCORE.to(CaseFormat.UPPER_CAMEL, name());
}
default String getHyphenatedName() {
return CaseFormat.UPPER_UNDERSCORE.to(CaseFormat.LOWER_HYPHEN, name());
}
static <T extends NamedEnum> T resolve(T[] values, String name) {
if (name == null) {
return null;
}
String nameToMatch = name.toLowerCase(Locale.ROOT).replaceAll("[^a-z\\d]", "");
for (T value : values) {
if (nameToMatch.equals(value.name().toLowerCase(Locale.ROOT).replaceAll("[^a-z\\d]", ""))) {
return value;
}
}
return null;
}
}