package WEBPIECESxPACKAGE.base.libs; import java.util.HashMap; import java.util.Map; import javax.persistence.AttributeConverter; import javax.persistence.Converter; import org.webpieces.router.api.ObjectStringConverter; public enum RoleEnum { BADASS('b', "Badass"), JERK('j', "Jerk"), DELINQUINT('d', "Delinquint"), FOOL('f', "Fool"), MANAGER('m', "Manager"), FATHER('t', "Father"), MOTHER('o', "Mother"), ; private final static Map<Character, RoleEnum> enums = new HashMap<>(); static { for(RoleEnum level : RoleEnum.values()) { enums.put(level.getDbCode(), level); } } //could use an int.... private Character dbCode; private String guiLabel; private RoleEnum(Character dbCode, String guiLabel) { this.dbCode = dbCode; this.guiLabel = guiLabel; } public Character getDbCode() { return dbCode; } public void setDbCode(Character dbCode) { this.dbCode = dbCode; } public static RoleEnum lookup(Character code) { return enums.get(code); } public String getGuiLabel() { return guiLabel; } @Converter public static class RoleEnumConverter implements AttributeConverter<RoleEnum, Character> { public Character convertToDatabaseColumn( RoleEnum value ) { if ( value == null ) { return null; } return value.getDbCode(); } public RoleEnum convertToEntityAttribute( Character value ) { if ( value == null ) { return null; } return RoleEnum.lookup( value ); } } public static class WebConverter implements ObjectStringConverter<RoleEnum> { public String objectToString( RoleEnum value ) { if ( value == null ) { return null; } return value.getDbCode()+""; } public RoleEnum stringToObject( String value ) { if ( value == null ) { return null; } if(value.length() != 1) throw new IllegalArgumentException("cannot convert="+value); Character c = value.charAt(0); return RoleEnum.lookup( c ); } @Override public Class<RoleEnum> getConverterType() { return RoleEnum.class; } } }