mirror of
https://github.com/mvvasilev/personal-finances.git
synced 2025-04-19 14:19:52 +03:00
31 lines
805 B
Java
31 lines
805 B
Java
|
package dev.mvvasilev.common.data;
|
||
|
|
||
|
import jakarta.persistence.AttributeConverter;
|
||
|
import jakarta.persistence.Converter;
|
||
|
|
||
|
@Converter
|
||
|
public abstract class AbstractEnumConverter<T extends Enum<T> & PersistableEnum<E>, E> implements AttributeConverter<T, E> {
|
||
|
private final Class<T> clazz;
|
||
|
|
||
|
public AbstractEnumConverter(Class<T> clazz) {
|
||
|
this.clazz = clazz;
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public E convertToDatabaseColumn(T attribute) {
|
||
|
return attribute != null ? attribute.value() : null;
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public T convertToEntityAttribute(E dbData) {
|
||
|
T[] enums = clazz.getEnumConstants();
|
||
|
|
||
|
for (T e : enums) {
|
||
|
if (e.value().equals(dbData)) {
|
||
|
return e;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
throw new UnsupportedOperationException();
|
||
|
}
|
||
|
}
|