/*
*
* Copyright (c) 2013 - 2014 INT - National Institute of Technology & COPPE - Alberto Luiz Coimbra Institute
- Graduate School and Research in Engineering.
* See the file license.txt for copyright permission.
*
*/
package carga;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import modelo.TipoUsuario;
import modelo.Usuario;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import service.TipoUsuarioAppService;
import service.UsuarioAppService;
import service.controleTransacao.FabricaDeAppService;
import service.exception.AplicacaoException;
import util.Constantes;
import util.JsonConfigLoader;
import com.google.gson.Gson;
/**
* Sobre a Carga:
* � uma Carga do sistema, portanto deve herdar de CargaBase e
* implementar o m�todo executar().
* Nesse m�todo executar � que � chamado os outros m�todos que s�o
* as et�pas dessa carga.
* Portanto se � necessario rodar um m�todo depois do outro, eles devem ser chamados
* na ordem correta. Ex:
* incluiHP() vem antes de inicializaHP(), portanto no m�todo executar() eles devem ser chamados nessa ordem.
*
* Terminado de executar todas as etapas � preciso retornar true.
* Se houver algum problema(exce��o) na execu��o de um das etapas, essa exce��o deve ser lancada
*
* Essa Carga:
* Classe respons�vel pela inclus�o de Tipos de Usu�rio e de Usu�rio.
* � usada na carga do sistema e deve ser a primeira a ser executada.
* Est� criando um usu�rio para cada tipo. (dma)
*
* @author felipe.arruda
*
*/
public class CargaUsuario extends CargaBase{
// Services
public TipoUsuarioAppService tipoUsuarioService;
public UsuarioAppService usuarioService;
public CargaUsuario(){
try {
tipoUsuarioService = FabricaDeAppService.getAppService(TipoUsuarioAppService.class);
usuarioService = FabricaDeAppService.getAppService(UsuarioAppService.class);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* Executa a inclusao dos tipos de usuario
*/
@Override
public boolean executar() throws AplicacaoException {
this.incluirTiposDeUsuario();
return true;
}
public List<Usuario> recuperaUsuariosDeArquivoConfigJson(){
System.out.println(
JsonConfigLoader.getJson(Constantes.CAMINHO_ABSOLUTO_ARQUIVO_USUARIOS_CARGA)
);
String json = JsonConfigLoader.getJson(Constantes.CAMINHO_ABSOLUTO_ARQUIVO_USUARIOS_CARGA);
Gson gson = new Gson();
Usuario[] arrayUsuarios = gson.fromJson(json, Usuario[].class);
ArrayList<Usuario> usuarios = new ArrayList<Usuario>(Arrays.asList(arrayUsuarios));
return usuarios;
}
public void incluirTiposDeUsuario() throws AplicacaoException {
TipoUsuario tipoUsuarioAdmin = new TipoUsuario();
TipoUsuario tipoUsuarioAluno = new TipoUsuario();
TipoUsuario tipoUsuarioGestor = new TipoUsuario();
TipoUsuario tipoUsuarioEngenheiro = new TipoUsuario();
tipoUsuarioAdmin.setTipoUsuario(TipoUsuario.ADMINISTRADOR);
tipoUsuarioAdmin.setDescricao("O usu�rio ADMINISTRADOR pode realizar qualquer opera��o no Sistema.");
tipoUsuarioAluno.setTipoUsuario(TipoUsuario.ALUNO);
tipoUsuarioAluno.setDescricao("O usu�rio ALUNO pode realizar apenas consultas e impress�o de relat�rios nas telas " +
"relativas ao Horizonte de Planejamento (HP,Periodo PMP, Periodo PAP) e n�o acessa " +
"Administra��o e Eng. Conhecimento");
tipoUsuarioGestor.setTipoUsuario(TipoUsuario.GESTOR);
tipoUsuarioGestor.setDescricao("O usu�rio GESTOR pode realizar qualquer opera��o no Sistema, por�m n�o possui acesso" +
"as �reas de Administra��o e Engenharia de Conhecimento.");
tipoUsuarioEngenheiro.setTipoUsuario(TipoUsuario.ENGENHEIRO_DE_CONHECIMENTO);
tipoUsuarioEngenheiro.setDescricao("O usu�rio ENGENHEIRO pode realizar a parte de Logica Fuzzy (Engenharia de Conhecimento)" +
"no Sistema. Por�m, n�o possui acesso a �rea Administrativa.");
tipoUsuarioService.inclui(tipoUsuarioAdmin);
tipoUsuarioService.inclui(tipoUsuarioAluno);
tipoUsuarioService.inclui(tipoUsuarioGestor);
tipoUsuarioService.inclui(tipoUsuarioEngenheiro);
List<Usuario> usuarios = recuperaUsuariosDeArquivoConfigJson();
Usuario usuarioAdmin = usuarios.get(0);
usuarioAdmin.setTipoUsuario(tipoUsuarioAdmin);
Usuario usuarioAluno = usuarios.get(1);
usuarioAluno.setTipoUsuario(tipoUsuarioAluno);
Usuario usuarioGestor = usuarios.get(2);
usuarioGestor.setTipoUsuario(tipoUsuarioGestor);
Usuario usuarioEngenheiro = usuarios.get(3);
usuarioEngenheiro.setTipoUsuario(tipoUsuarioEngenheiro);
usuarioService.inclui(usuarioAdmin, usuarioAdmin.getSenha());
usuarioService.inclui(usuarioEngenheiro, usuarioEngenheiro.getSenha());
usuarioService.inclui(usuarioGestor, usuarioGestor.getSenha());
usuarioService.inclui(usuarioAluno, usuarioAluno.getSenha());
}
}