package com.fp.hbm.bgenerator;

public enum MappingType {
	XML("XML","com.fp.hbm.bgenerator.xml.Mapper", "com.fp.hbm.bgenerator.xml.MapperColumn"), 
	ANN("ANN","com.fp.hbm.bgenerator.ann.Mapper", "com.fp.hbm.bgenerator.ann.MapperColumn");
	private String type;

	private String mapper;

	private String column;

	private MappingType(String pType, String pMapper, String pColumn) {
		this.type = pType;
		this.mapper = pMapper;
		this.column = pColumn;
	}

	public AbstractColumn getColumn() throws InstantiationException, IllegalAccessException, ClassNotFoundException {
		return (AbstractColumn) Class.forName(this.column).newInstance();
	}

	public AbstractMapper getMapper() throws InstantiationException, IllegalAccessException, ClassNotFoundException {
		return (AbstractMapper) Class.forName(mapper).newInstance();
	}

	public String getType() {
		return type;
	}

	public static MappingType find(String pType) {
		MappingType[] m = values();
		for (MappingType ty : m) {
			if (ty.type.compareTo(pType) == 0) {
				return ty;
			}
		}
		return null;
	}
}
