package com.keao.edu.common.config;

import org.springframework.core.convert.converter.Converter;

import com.keao.edu.common.enums.BaseEnum;

public class EnumConverter<T extends BaseEnum<?, ?>> implements Converter<String, T> {

	private Class<T> enumType;

	public EnumConverter(Class<T> enumType) {
		this.enumType = enumType;
	}

	@Override
	public T convert(String source) {
		return getEnum(enumType, source);
	}

	private T getEnum(Class<T> targerType, String source) {
		for (T en : targerType.getEnumConstants()) {
			if (en.getCode() instanceof Integer) {
				if ((Integer) en.getCode() == Integer.parseInt(source)) {
					return en;
				}
			} else {
				if (source.equals(String.valueOf(en.getCode()))) {
					return en;
				}
			}
		}
		return null;
	}
}
