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 EducationEnum {
KINDERGARTEN('k', "Kindergarten"),
ELEMENTARY('e', "Elementary School"),
MIDDLE_SCHOOL('m', "Middle School"),
HIGH_SCHOOL('h', "High School"),
COLLEGE('c', "College");
private final static Map<Character, EducationEnum> enums = new HashMap<>();
static {
for(EducationEnum level : EducationEnum.values()) {
enums.put(level.getDbCode(), level);
}
}
//could use an int....
private Character dbCode;
private String guiLabel;
private EducationEnum(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 EducationEnum lookup(Character code) {
return enums.get(code);
}
public String getGuiLabel() {
return guiLabel;
}
@Converter
public static class EducationConverter implements AttributeConverter<EducationEnum, Character> {
public Character convertToDatabaseColumn( EducationEnum value ) {
if ( value == null ) {
return null;
}
return value.getDbCode();
}
public EducationEnum convertToEntityAttribute( Character value ) {
if ( value == null ) {
return null;
}
return EducationEnum.lookup( value );
}
}
public static class WebConverter implements ObjectStringConverter<EducationEnum> {
public String objectToString( EducationEnum value ) {
if ( value == null ) {
return null;
}
return value.getDbCode()+"";
}
public EducationEnum stringToObject( String value ) {
if ( value == null ) {
return null;
}
if(value.length() != 1)
throw new IllegalArgumentException("cannot convert="+value);
Character c = value.charAt(0);
return EducationEnum.lookup( c );
}
@Override
public Class<EducationEnum> getConverterType() {
return EducationEnum.class;
}
}
}