package servlets;

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import spring.Context;

import commands.AbstractCommand;
import commands.AdicionarAlocacao;
import commands.CursoAlterar;
import commands.CursoAssociarAluno;
import commands.CursoAssociarAluno2;
import commands.CursoInserir;
import commands.CursoListar;
import commands.CursoListarAlteracao;
import commands.CursoPreenche;
import commands.CursoPreencheLista;
import commands.CursoRemover;
import commands.DisciplinaAlteraDados;
import commands.DisciplinaCria;
import commands.DisciplinaExtingue;
import commands.DisciplinaListaDados;
import commands.MensalidadeAlterar;
import commands.MensalidadeConsultar;
import commands.MensalidadeInserir;
import commands.MensalidadePreenche;
import commands.MensalidadeRemover;
import commands.PreencheListaCursosPorNomeRemoverCurso;
import commands.PreencheListaMensalidadesAlunos;
import commands.PreencheListaProfessoresPorNomeRemoverProfessor;
import commands.PreencheListaProfsAlunos;
import commands.ProfessorAlterar;
import commands.ProfessorAssociar;
import commands.ProfessorInserir;
import commands.ProfessorListar;
import commands.ProfessorListarAlteracao;
import commands.ProfessorPreenche;
import commands.ProfessorPreencheLista;
import commands.ProfessorPrepararAssociar;
import commands.ProfessorRemover;
import commands.SalaAlterar;
import commands.SalaInserir;
import commands.SalaListar;
import commands.SalaListarAlteracao;
import commands.SalaPreenche;
import commands.SalaPreencheLista;
import commands.SalaRemover;
import commands.TurmaAlocarProfessor;
import commands.TurmaAlterar;
import commands.TurmaDesalocarProfessor;
import commands.TurmaInserir;
import commands.TurmaListar;
import commands.TurmaPrepararFormAlteracao;
import commands.TurmaPrepararListaAlocacaoProfessor;
import commands.TurmaPrepararListaAlteracao;
import commands.TurmaPrepararRemocao;
import commands.TurmaPrepararRemocaoPorNome;
import commands.TurmaRemover;
import commands.UsuarioInserir;
import commands.UsuarioListar;
import commands.UsuarioPrepararRemover;
import commands.UsuarioRemover;

/**
 * Servlet implementation class for Servlet: Command
 * 
 */
public class Command extends javax.servlet.http.HttpServlet implements
		javax.servlet.Servlet {
	private static final long serialVersionUID = 1L;

	private Map<String, Object> comandos = new HashMap<String, Object>();

	private Context context;

	public Command() {
		super();
	}

	protected void doGet(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		String comando = request.getParameter("comando");
		AbstractCommand command = (AbstractCommand) comandos.get(comando);
		System.out.println("Vou chamar:" + command.getClass());
		command.processarComando(request, response, context);

	}

	/*
	 * (non-Java-doc)
	 * 
	 * @see javax.servlet.http.HttpServlet#doPost(HttpServletRequest request,
	 * HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see javax.servlet.GenericServlet#init()
	 */
	public void init() throws ServletException {
		// TODO Auto-generated method stub
		super.init();
		
		context = new Context(this);

		ProfessorInserir comandoProfessorInserir = new ProfessorInserir();
		comandos.put("ProfessorInserir", comandoProfessorInserir);

		ProfessorListar comandoProfessorListar = new ProfessorListar();
		comandos.put("ProfessorListar", comandoProfessorListar);

		ProfessorPreencheLista comandoProfessorPreencheLista = new ProfessorPreencheLista();
		comandos.put("ProfessorPreencheLista", comandoProfessorPreencheLista);

		ProfessorRemover comandoProfessorRemover = new ProfessorRemover();
		comandos.put("ProfessorRemover", comandoProfessorRemover);

		ProfessorAlterar comandoProfessorAlterar = new ProfessorAlterar();
		comandos.put("ProfessorAlterar", comandoProfessorAlterar);

		ProfessorListarAlteracao comandoProfessorListarAlteracao = new ProfessorListarAlteracao();
		comandos.put("ProfessorListarAlteracao",
				comandoProfessorListarAlteracao);

		ProfessorPreenche comandoProfessorPreenche = new ProfessorPreenche();
		comandos.put("ProfessorPreenche", comandoProfessorPreenche);

		ProfessorPrepararAssociar comandoProfessorPrepararAssociar = new ProfessorPrepararAssociar();
		comandos.put("ProfessorPrepararAssociar",
				comandoProfessorPrepararAssociar);

		ProfessorAssociar comandoProfessorAssociar = new ProfessorAssociar();
		comandos.put("ProfessorAssociar", comandoProfessorAssociar);

		PreencheListaProfsAlunos comandoPreencheListaProfsAlunos = new PreencheListaProfsAlunos();
		comandos.put("PreencheListaProfsAlunos",
				comandoPreencheListaProfsAlunos);

		AdicionarAlocacao comandoAdicionarAlocacao = new AdicionarAlocacao();
		comandos.put("AdicionarAlocacao", comandoAdicionarAlocacao);

		PreencheListaProfessoresPorNomeRemoverProfessor comandoPreencheListaProfessoresPorNomeRemoverProfessor = new PreencheListaProfessoresPorNomeRemoverProfessor();
		comandos.put("PreencheListaProfessoresPorNomeRemoverProfessor",
				comandoPreencheListaProfessoresPorNomeRemoverProfessor);

		TurmaInserir comandoTurmaInserir = new TurmaInserir();
		comandos.put("TurmaInserir", comandoTurmaInserir);

		TurmaListar comandoTurmaListar = new TurmaListar();
		comandos.put("TurmaListar", comandoTurmaListar);

		TurmaPrepararRemocao comandoTurmaPrepararRemocao = new TurmaPrepararRemocao();
		comandos.put("TurmaPrepararRemocao", comandoTurmaPrepararRemocao);

		TurmaPrepararRemocaoPorNome comandoTurmaPrepararRemocaoPorNome = new TurmaPrepararRemocaoPorNome();
		comandos.put("TurmaPrepararRemocaoPorNome",
				comandoTurmaPrepararRemocaoPorNome);

		TurmaRemover comandoTurmaRemover = new TurmaRemover();
		comandos.put("TurmaRemover", comandoTurmaRemover);

		TurmaPrepararListaAlteracao comandoTurmaPrepararListaAlteracao = new TurmaPrepararListaAlteracao();
		comandos.put("TurmaPrepararListaAlteracao",
				comandoTurmaPrepararListaAlteracao);

		TurmaPrepararFormAlteracao comandoTurmaPrepararFormAlteracao = new TurmaPrepararFormAlteracao();
		comandos.put("TurmaPrepararFormAlteracao",
				comandoTurmaPrepararFormAlteracao);

		TurmaAlterar comandoTurmaAlterar = new TurmaAlterar();
		comandos.put("TurmaAlterar", comandoTurmaAlterar);

		TurmaPrepararListaAlocacaoProfessor comandoTurmaPrepararListaAlocacaoProfessor = new TurmaPrepararListaAlocacaoProfessor();
		comandos.put("TurmaPrepararListaAlocacaoProfessor",
				comandoTurmaPrepararListaAlocacaoProfessor);

		TurmaAlocarProfessor comandoTurmaAlocarProfessor = new TurmaAlocarProfessor();
		comandos.put("TurmaAlocarProfessor", comandoTurmaAlocarProfessor);

		TurmaDesalocarProfessor comandoTurmaDesalocarProfessor = new TurmaDesalocarProfessor();
		comandos.put("TurmaDesalocarProfessor", comandoTurmaDesalocarProfessor);

		UsuarioInserir comandoUsuarioInserir = new UsuarioInserir();
		comandos.put("UsuarioInserir", comandoUsuarioInserir);

		UsuarioListar comandoUsuarioListar = new UsuarioListar();
		comandos.put("UsuarioListar", comandoUsuarioListar);

		UsuarioPrepararRemover comandoUsuarioPrepararRemover = new UsuarioPrepararRemover();
		comandos.put("UsuarioPrepararRemover", comandoUsuarioPrepararRemover);

		UsuarioRemover comandoUsuarioRemover = new UsuarioRemover();
		comandos.put("UsuarioRemover", comandoUsuarioRemover);

		// Comandos referentes � mensalidades
		PreencheListaMensalidadesAlunos comandoPreencheListaMensalidadesAlunos = new PreencheListaMensalidadesAlunos();
		comandos.put("PreencheListaMensalidadesAlunos",
				comandoPreencheListaMensalidadesAlunos);

		MensalidadeInserir comandoMensalidadeInserir = new MensalidadeInserir();
		comandos.put("MensalidadeInserir", comandoMensalidadeInserir);

		MensalidadeConsultar comandoMensalidadeConsultar = new MensalidadeConsultar();
		comandos.put("MensalidadeConsultar", comandoMensalidadeConsultar);

		MensalidadePreenche comandoMensalidadePreenche = new MensalidadePreenche();
		comandos.put("MensalidadePreenche", comandoMensalidadePreenche);

		MensalidadeAlterar comandoMensalidadeAlterar = new MensalidadeAlterar();
		comandos.put("MensalidadeAlterar", comandoMensalidadeAlterar);

		MensalidadeRemover comandoMensalidadeRemover = new MensalidadeRemover();
		comandos.put("MensalidadeRemover", comandoMensalidadeRemover);

		// Disciplina
		DisciplinaCria comandoDisciplinaCria = new DisciplinaCria();
		comandos.put("DisciplinaCria", comandoDisciplinaCria);

		DisciplinaExtingue comandoDisciplinaExtingue = new DisciplinaExtingue();
		comandos.put("DisciplinaExtingue", comandoDisciplinaExtingue);

		DisciplinaAlteraDados comandoDisciplinaAlteraDados = new DisciplinaAlteraDados();
		comandos.put("DisciplinaAlteraDados", comandoDisciplinaAlteraDados);

		DisciplinaListaDados comandoDisciplinaListaDados = new DisciplinaListaDados();
		comandos.put("DisciplinaListaDados", comandoDisciplinaListaDados);

		// Curso
		CursoInserir comandoCursoInserir = new CursoInserir();
		comandos.put("CursoInserir", comandoCursoInserir);

		CursoListar comandoCursoListar = new CursoListar();
		comandos.put("CursoListar", comandoCursoListar);

		CursoPreencheLista comandoCursoPreencheLista = new CursoPreencheLista();
		comandos.put("CursoPreencheLista", comandoCursoPreencheLista);

		CursoRemover comandoCursoRemover = new CursoRemover();
		comandos.put("CursoRemover", comandoCursoRemover);

		CursoAlterar comandoCursoAlterar = new CursoAlterar();
		comandos.put("CursoAlterar", comandoCursoAlterar);

		CursoListarAlteracao comandoCursoListarAlteracao = new CursoListarAlteracao();
		comandos.put("CursoListarAlteracao", comandoCursoListarAlteracao);

		CursoPreenche comandoCursoPreenche = new CursoPreenche();
		comandos.put("CursoPreenche", comandoCursoPreenche);

		PreencheListaCursosPorNomeRemoverCurso comandoPreencheListaCursosPorNomeRemoverCurso = new PreencheListaCursosPorNomeRemoverCurso();
		comandos.put("PreencheListaCursosPorNomeRemoverCurso",
				comandoPreencheListaCursosPorNomeRemoverCurso);

		CursoAssociarAluno comandoCursoAssociarAluno = new CursoAssociarAluno();
		comandos.put("CursoAssociarAluno", comandoCursoAssociarAluno);

		CursoAssociarAluno2 comandoCursoAssociarAluno2 = new CursoAssociarAluno2();
		comandos.put("CursoAssociarAluno2", comandoCursoAssociarAluno2);

		SalaInserir comandoSalaInserir = new SalaInserir();
		comandos.put("SalaInserir", comandoSalaInserir);

		SalaListar comandoSalaListar = new SalaListar();
		comandos.put("SalaListar", comandoSalaListar);

		SalaPreenche comandoSalaPreenche = new SalaPreenche();
		comandos.put("SalaPreenche", comandoSalaPreenche);

		SalaPreencheLista comandoSalaPreencheLista = new SalaPreencheLista();
		comandos.put("SalaPreencheLista", comandoSalaPreencheLista);

		SalaRemover comandoSalaRemover = new SalaRemover();
		comandos.put("SalaRemover", comandoSalaRemover);

		SalaAlterar comandoSalaAlterar = new SalaAlterar();
		comandos.put("SalaAlterar", comandoSalaAlterar);

		SalaListarAlteracao comandoSalaListarAlteracao = new SalaListarAlteracao();
		comandos.put("SalaListarAlteracao", comandoSalaListarAlteracao);

	}
}