All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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