com.jardoapps.persistence.utils.enums.PersistableEnumConverter Maven / Gradle / Ivy
package com.jardoapps.persistence.utils.enums;
import java.lang.reflect.ParameterizedType;
import javax.persistence.AttributeConverter;
/**
* An attribute converted used to persist enum values in database.
*/
public class PersistableEnumConverter & PersistableEnum> implements AttributeConverter {
private final Class enumClass;
private final E[] enumConstants;
@SuppressWarnings("unchecked")
public PersistableEnumConverter() {
this.enumClass = (Class) ((ParameterizedType) this.getClass().getGenericSuperclass()).getActualTypeArguments()[0];
this.enumConstants = enumClass.getEnumConstants();
}
@Override
public String convertToDatabaseColumn(E attribute) {
if (attribute == null) {
return null;
} else {
return attribute.getId();
}
}
@Override
public E convertToEntityAttribute(String dbData) {
if (dbData == null) {
return null;
}
for (E value : enumConstants) {
if (value.getId().equals(dbData)) {
return value;
}
}
throw new IllegalArgumentException("Unknown id '" + dbData + "' for enum '" + enumClass.getName() + "'.");
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy