package com.rjconsultores.ventaboletos.web.gui.controladores.relatorios.vendabilheteidoso;

import java.lang.reflect.InvocationTargetException;
import java.sql.Connection;
import java.util.Map;

import com.rjconsultores.ventaboletos.relatorios.utilitarios.Relatorio;

public enum ETipoRelatorioVendaBilheteIdoso {

	TRECHO(0, "relatorioPosicaoVendaBilheteIdosoController.window.porTrecho.title", "com.rjconsultores.ventaboletos.relatorios.impl.RelatorioPosicaoVendaBilheteIdosoPorTrecho"), 
	PASSAGEIRO(1, "relatorioPosicaoVendaBilheteIdosoController.window.porPassageiro.title", "com.rjconsultores.ventaboletos.relatorios.impl.RelatorioPosicaoVendaBilheteIdosoPorPassageiro");
	
	private Integer id;
	private String tituloRelatorio;
	private String classeRelatorio;
	
	private ETipoRelatorioVendaBilheteIdoso(Integer id, String tituloRelatorio, String classeRelatorio) {
		this.id = id;
		this.tituloRelatorio = tituloRelatorio;
		this.classeRelatorio = classeRelatorio;
	}

	public Integer getId() {
		return id;
	}
	
	public String getTituloRelatorio() {
		return tituloRelatorio;
	}

	public Class<?> getClasseRelatorio() throws ClassNotFoundException {
		return Class.forName(classeRelatorio);
	}
	
	public Relatorio getInstance(Map<String, Object> parametros, Connection conexao) {
		try {
			return (Relatorio) getClasseRelatorio().getConstructor(Map.class, Connection.class).newInstance(parametros, conexao);
		} catch (IllegalArgumentException e) {
			e.printStackTrace();
		} catch (SecurityException e) {
			e.printStackTrace();
		} catch (InstantiationException e) {
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			e.printStackTrace();
		} catch (InvocationTargetException e) {
			e.printStackTrace();
		} catch (NoSuchMethodException e) {
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
		return null;	
	}
	
	public static ETipoRelatorioVendaBilheteIdoso getEnumById(Integer id) {
		for (ETipoRelatorioVendaBilheteIdoso itemEnum : ETipoRelatorioVendaBilheteIdoso.values()) {
			if (itemEnum.getId() == id) {
				return itemEnum;
			}
		}
		throw new IllegalArgumentException("Id não encontrado.");
	}
}
