package kcg.faics.tg;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/**
 * 항로 타입.
 * 
 * @author kimnomin
 *
 */
public enum FerryRouteType {
	/**
	 * 한-중.
	 */
	KR_CH("A", "한-중"),
	/**
	 * 한-러.
	 */
	KR_RU("B", "한-러"),
	/**
	 * 한-일.
	 */
	KR_JP("C", "한-일"),
	/**
	 * 북한.
	 */
	KP("D", "북한");
	
	/**
	 * code.
	 */
	private final String code;
	/**
	 * value.
	 */
	private final String value;
	/**
	 * @return the code
	 */
	public final String getCode() {
		return code;
	}
	/**
	 * @return the value
	 */
	public final String getValue() {
		return value;
	}
	/**
	 * code에 해당하는 value를 반환한다.
	 * 
	 * @param code code
	 * @return value
	 */
	public static final String getValue(final String code) {
		String value = "";
		
		for (FerryRouteType item: FerryRouteType.values()) {
			if (item.getCode().equalsIgnoreCase(code)) {
				value = item.getValue();
				break;
			}
		}
		
		return value;
	}
	
	/**
	 * exclude를 제외한 List를 반환한다.
	 * 
	 * @param exclude 제외할 타입
	 * @return List
	 */
	public static final List<FerryRouteType> values(final FerryRouteType... exclude) {
		List<FerryRouteType> list = new ArrayList<FerryRouteType>();
		for (FerryRouteType item : values()) {
			if (!Arrays.asList(exclude).contains(item)) {
				list.add(item);
			}
		}
		return list;
	}
	
	/**
	 * 생성자.
	 * 
	 * @param code 코드값
	 * @param value 표출값
	 */
	FerryRouteType(final String code, final String value) {
		this.code = code;
		this.value = value;
	}
}
