package org.webpieces.plugins.hibernate.app.dbo;
import java.util.HashMap;
import java.util.Map;
import javax.persistence.AttributeConverter;
import javax.persistence.Converter;
import org.webpieces.router.api.ObjectStringConverter;
public enum LevelEducation {
//NOT_CHOSEN('n', ""),
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, LevelEducation> enums = new HashMap<>();
static {
for(LevelEducation level : LevelEducation.values()) {
enums.put(level.getDbCode(), level);
}
}
//could use an int....
private Character dbCode;
private String guiLabel;
private LevelEducation(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 LevelEducation lookup(Character code) {
return enums.get(code);
}
public String getGuiLabel() {
return guiLabel;
}
@Converter
public static class DatabaseConverter implements AttributeConverter<LevelEducation, Character> {
public Character convertToDatabaseColumn( LevelEducation value ) {
if ( value == null ) {
return null;
}
return value.getDbCode();
}
public LevelEducation convertToEntityAttribute( Character value ) {
if ( value == null ) {
return null;
}
return LevelEducation.lookup( value );
}
}
public static class WebConverter implements ObjectStringConverter<LevelEducation> {
@Override
public String objectToString(LevelEducation value) {
if ( value == null ) {
return null;
}
return value.getDbCode()+"";
}
public LevelEducation stringToObject(String value) {
if ( value == null ) {
return null;
}
if(value.length() != 1)
throw new IllegalArgumentException("cannot convert="+value);
Character c = value.charAt(0);
return LevelEducation.lookup( c );
}
public Class<LevelEducation> getConverterType() {
return LevelEducation.class;
}
}
}