Coloquei o tópico para ver se algum guru me ajuda aqui.
Tenho uma classe que descreve um tipo no banco de dados. O que quero fazer é suportar um tipo Enum, ou seja:
:arrow: Quando lê do banco, converte a String para o Enum correspondente, ou seja, se leu "F", converte para o enum Category.Type.F.
:arrow: Quando vai inserir no banco, converte o Enum para a String correspondente, ou seja, se o enum é Category.Type.F converte para "F".
Abaixo está a minha classe para Strings. Como eu escreveria algo similar para Enums ?
A dificuldade é que eu tenho que passar a classe do meu Enum para dentro do meu EnumType para poder converter de String para Enum e vice versa. Não sei se passo via Generics (Ex: EnumType<Category.Type>) e não sei se passa via parametro do constructor (Ex: new EnumType(Category.Type.class)).
public class StringType implements DBType {
public String toString() {
return this.getClass().getSimpleName();
}
public Object getFromResultSet(ResultSet rset, int index) throws SQLException {
return rset.getString(index);
}
public Object getFromResultSet(ResultSet rset, String field) throws SQLException {
return rset.getString(field);
}
public Class<? extends Object> getTypeClass() {
return String.class;
}
public void bindToStmt(PreparedStatement stmt, int index, Object value) throws SQLException {
if (value == null) {
stmt.setString(index, null);
} else if (value instanceof String) {
String s = (String) value;
stmt.setString(index, s);
} else {
throw new IllegalArgumentException("value is not a string!");
}
}
}

