package gcom.gui.atendimentopublico.ordemservico;
import gcom.atendimentopublico.ordemservico.Equipe;
import gcom.atendimentopublico.ordemservico.EquipeComponentes;
import gcom.atendimentopublico.ordemservico.FiltroEquipe;
import gcom.atendimentopublico.ordemservico.FiltroEquipeComponentes;
import gcom.atendimentopublico.ordemservico.OsExecucaoEquipe;
import gcom.atendimentopublico.ordemservico.OsExecucaoEquipeComponentes;
import gcom.atendimentopublico.ordemservico.bean.ManterDadosAtividadesOrdemServicoHelper;
import gcom.atendimentopublico.ordemservico.bean.OSAtividadePeriodoExecucaoHelper;
import gcom.atendimentopublico.ordemservico.bean.OSExecucaoEquipeHelper;
import gcom.cadastro.funcionario.FiltroFuncionario;
import gcom.cadastro.funcionario.Funcionario;
import gcom.fachada.Fachada;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.util.ConstantesSistema;
import gcom.util.Util;
import gcom.util.filtro.ParametroSimples;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.Iterator;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
/**
* Esta classe tem por finalidade exibir para o usu�rio a tela que receber� os
* par�metros para realiza��o da atualiza��o dos dados das atividades de uma OS
* (Componente)
*
* @author Raphael Rossiter
* @date 23/10/2006
*/
public class ExibirManterComponenteExecucaoOSAction extends GcomAction {
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
ActionForward retorno = actionMapping
.findForward("manterComponenteExecucaoOS");
ManterComponenteExecucaoOSActionForm form = (ManterComponenteExecucaoOSActionForm) actionForm;
HttpSession sessao = httpServletRequest.getSession(false);
Fachada fachada = Fachada.getInstancia();
//Carregamento inicial
String numeroOS = httpServletRequest.getParameter("numeroOS");
if (numeroOS != null && !numeroOS.equalsIgnoreCase("")){
String idAtividade = httpServletRequest.getParameter("idAtividade");
String descricaoAtividade = httpServletRequest.getParameter("descricaoAtividade");
String idEquipe = httpServletRequest.getParameter("idEquipe");
String dataExecucaoEquipeComponente = httpServletRequest.getParameter("dataExecucaoEquipeComponente");
dataExecucaoEquipeComponente = dataExecucaoEquipeComponente.replace("_","/");
String horaInicioExecucaoEquipeComponente = httpServletRequest.getParameter("horaInicioExecucaoEquipeComponente");
String horaFimExecucaoEquipeComponente = httpServletRequest.getParameter("horaFimExecucaoEquipeComponente");
//Equipe
FiltroEquipe filtroEquipe = new FiltroEquipe();
filtroEquipe.adicionarParametro(new ParametroSimples(FiltroEquipe.ID,
idEquipe));
Collection colecaoEquipe =
fachada.pesquisar(filtroEquipe, Equipe.class.getName());
Equipe equipe = (Equipe) Util.retonarObjetoDeColecao(colecaoEquipe);
form.setNumeroOSForm(numeroOS);
form.setIdAtividade(idAtividade);
form.setDescricaoAtividade(descricaoAtividade);
form.setNomeEquipe(equipe.getNome());
form.setDataExecucao(Util.converteStringParaDate(dataExecucaoEquipeComponente));
form.setHoraInicio(horaInicioExecucaoEquipeComponente);
form.setHoraFim(horaFimExecucaoEquipeComponente);
form.setIdEquipe(Util.converterStringParaInteger(idEquipe));
//Componentes j� cadastrados
FiltroEquipeComponentes filtroEquipeComponentes = new FiltroEquipeComponentes();
filtroEquipeComponentes.adicionarCaminhoParaCarregamentoEntidade("equipe");
filtroEquipeComponentes.adicionarCaminhoParaCarregamentoEntidade("funcionario");
filtroEquipeComponentes.adicionarParametro(new ParametroSimples(FiltroEquipeComponentes.ID_EQUIPE,
idEquipe));
Collection colecaoEquipeComponentes =
fachada.pesquisar(filtroEquipeComponentes, EquipeComponentes.class.getName());
if (colecaoEquipeComponentes == null || colecaoEquipeComponentes.isEmpty()){
/*throw new ActionServletException(
"atencao.equipe_componentes_inexistente");*/
}
else{
//Adicionar...
Iterator iteratorColecaoEquipeComponentes = colecaoEquipeComponentes.iterator();
EquipeComponentes equipeComponentes = new EquipeComponentes();
Collection colecaoSessao = (Collection)
sessao.getAttribute("colecaoManterDadosAtividadesOrdemServicoHelper");
while (iteratorColecaoEquipeComponentes.hasNext()){
equipeComponentes = (EquipeComponentes) iteratorColecaoEquipeComponentes.next();
if (equipeComponentes.getFuncionario() != null){
this.informarOsExecucaoEquipeComponentes(Util.converterStringParaInteger(form.getIdAtividade()),
form.getDataExecucao(), form.getHoraInicio(), form.getHoraFim(),
equipeComponentes.getEquipe().getId(), colecaoSessao,
equipeComponentes.getFuncionario().getId(), equipeComponentes.getIndicadorResponsavel(),
null, fachada, true);
}
else{
this.informarOsExecucaoEquipeComponentes(Util.converterStringParaInteger(form.getIdAtividade()),
form.getDataExecucao(), form.getHoraInicio(), form.getHoraFim(),
equipeComponentes.getEquipe().getId(), colecaoSessao,
null, equipeComponentes.getIndicadorResponsavel(),
equipeComponentes.getComponentes(), fachada, true);
}
}
}
//Inicializando o formul�rio
form.setIdFuncionario("");
form.setDescricaoFuncionario("");
form.setNomeComponente("");
form.setResponsavel(String.valueOf(EquipeComponentes.INDICADOR_RESPONSAVEL_NAO));
}
//Pesquisar Funcionario ENTER
if ((form.getIdFuncionario() != null && !form.getIdFuncionario().equals("")) &&
(form.getDescricaoFuncionario() == null || form.getDescricaoFuncionario().equals(""))){
FiltroFuncionario filtroFuncionario = new FiltroFuncionario();
filtroFuncionario.adicionarParametro(new ParametroSimples(FiltroFuncionario.ID,
form.getIdFuncionario()));
Collection colecaoFuncionario = fachada.pesquisar(filtroFuncionario,
Funcionario.class.getName());
if (colecaoFuncionario == null || colecaoFuncionario.isEmpty()) {
form.setIdFuncionario("");
form.setDescricaoFuncionario("FUNCION�RIO INEXISTENTE");
httpServletRequest.setAttribute("corFuncionario", "exception");
httpServletRequest.setAttribute("nomeCampo", "idFuncionario");
} else {
Funcionario funcionario = (Funcionario) Util
.retonarObjetoDeColecao(colecaoFuncionario);
form.setIdFuncionario(funcionario.getId().toString());
form.setDescricaoFuncionario(funcionario.getNome());
httpServletRequest.setAttribute("nomeCampo", "botaoAdicionar");
}
}
//Pesquisar Funcion�rio POPUP
String pesquisarFuncionario = httpServletRequest.getParameter("pesquisarFuncionario");
if (pesquisarFuncionario != null && !pesquisarFuncionario.equalsIgnoreCase("")){
retorno = actionMapping.findForward("pesquisarFuncionario");
}
//Recebendo dados Funcion�rio POPUP
if (httpServletRequest.getParameter("idCampoEnviarDados") != null){
form.setIdFuncionario(httpServletRequest.getParameter("idCampoEnviarDados"));
form.setDescricaoFuncionario(httpServletRequest.getParameter("descricaoCampoEnviarDados"));
httpServletRequest.setAttribute("nomeCampo", "botaoAdicionar");
}
//Adicionar
String adicionarComponente = httpServletRequest.getParameter("adicionarComponente");
if (adicionarComponente != null && !adicionarComponente.equalsIgnoreCase("")){
//Verificando as informa��es colhidas
//===================================================================================
Integer idFuncionario = null;
String nomeComponente = null;
if (form.getIdFuncionario() != null && !form.getIdFuncionario().equalsIgnoreCase("")){
idFuncionario = Util.converterStringParaInteger(form.getIdFuncionario());
}
else{
nomeComponente = form.getNomeComponente();
}
//===================================================================================
//Informando OS_EXECUCAO_EQUIPE_COMPONENTES
Collection colecaoManterDadosAtividadesOrdemServicoHelper = (Collection)
sessao.getAttribute("colecaoManterDadosAtividadesOrdemServicoHelper");
this.informarOsExecucaoEquipeComponentes(Util.converterStringParaInteger(form.getIdAtividade()),
form.getDataExecucao(), form.getHoraInicio(), form.getHoraFim(),
form.getIdEquipe(), colecaoManterDadosAtividadesOrdemServicoHelper,
idFuncionario, Short.parseShort(form.getResponsavel()),
nomeComponente, fachada, false);
//Inicializando o formul�rio
form.setIdFuncionario("");
form.setDescricaoFuncionario("");
form.setNomeComponente("");
form.setResponsavel(String.valueOf(EquipeComponentes.INDICADOR_RESPONSAVEL_NAO));
httpServletRequest.setAttribute("nomeCampo", "idFuncionario");
}
//Remover
String removerComponente = httpServletRequest.getParameter("removerComponente");
if (removerComponente != null && !removerComponente.equalsIgnoreCase("")){
Collection colecaoSessao = (Collection) sessao.getAttribute("colecaoManterDadosAtividadesOrdemServicoHelper");
this.removerOsExecucaoEquipeComponentes(Util.converterStringParaInteger(form.getIdAtividade()),
form.getDataExecucao(), form.getHoraInicio(), form.getHoraFim(), form.getIdEquipe(), colecaoSessao,
fachada, Long.parseLong(removerComponente));
//Inicializando o formul�rio
form.setIdFuncionario("");
form.setDescricaoFuncionario("");
form.setNomeComponente("");
form.setResponsavel(String.valueOf(EquipeComponentes.INDICADOR_RESPONSAVEL_NAO));
httpServletRequest.setAttribute("nomeCampo", "idFuncionario");
}
//Objetos utilizados apenas para facilitar a quebra na exibi��o
httpServletRequest.setAttribute("numeroOS", form.getNumeroOSForm());
httpServletRequest.setAttribute("idAtividade", form.getIdAtividade());
httpServletRequest.setAttribute("dataExecucaoEquipeComponente", form.getDataExecucao());
httpServletRequest.setAttribute("horaInicioExecucaoEquipeComponente", form.getHoraInicio());
httpServletRequest.setAttribute("horaFimExecucaoEquipeComponente", form.getHoraFim());
httpServletRequest.setAttribute("idEquipe", form.getIdEquipe());
return retorno;
}
private void informarOsExecucaoEquipeComponentes(Integer idAtividade, Date dataExecucao,
String horaInicio, String horaFim, Integer idEquipe, Collection colecaoSessao,
Integer idFuncionario, short responsavel, String nomeComponente, Fachada fachada,
boolean carregamentoInicial){
Iterator iteratorColecaoSessao = colecaoSessao.iterator();
ManterDadosAtividadesOrdemServicoHelper manterDadosAtividadesOrdemServicoHelper = null;
OSAtividadePeriodoExecucaoHelper osAtividadePeriodoExecucaoHelper = null;
OSExecucaoEquipeHelper osExecucaoEquipeHelper = null;
OsExecucaoEquipeComponentes osExecucaoEquipeComponentes = null;
boolean responsavelInformado = false;
boolean equipeLocalizada = false;
//Atividade
while (iteratorColecaoSessao.hasNext()){
manterDadosAtividadesOrdemServicoHelper = (ManterDadosAtividadesOrdemServicoHelper)
iteratorColecaoSessao.next();
if (manterDadosAtividadesOrdemServicoHelper.getOrdemServicoAtividade().getAtividade().getId()
.equals(idAtividade)){
//Per�odo
Collection colecaoOSAtividadePeriodoExecucaoHelper =
manterDadosAtividadesOrdemServicoHelper.getColecaoOSAtividadePeriodoExecucaoHelper();
Iterator iteratorColecaoOSAtividadePeriodoExecucaoHelper =
colecaoOSAtividadePeriodoExecucaoHelper.iterator();
while (iteratorColecaoOSAtividadePeriodoExecucaoHelper.hasNext()){
osAtividadePeriodoExecucaoHelper = (OSAtividadePeriodoExecucaoHelper)
iteratorColecaoOSAtividadePeriodoExecucaoHelper.next();
if (osAtividadePeriodoExecucaoHelper.getDataExecucaoParaQuebra().equals(dataExecucao) &&
osAtividadePeriodoExecucaoHelper.getHoraMinutoInicioParaQuebra().equalsIgnoreCase(horaInicio) &&
osAtividadePeriodoExecucaoHelper.getHoraMinutoFimParaQuebra().equalsIgnoreCase(horaFim)){
//Equipe
Collection colecaoOSExecucaoEquipeHelper = osAtividadePeriodoExecucaoHelper
.getColecaoOSExecucaoEquipeHelper();
Iterator iteratorColecaoOSExecucaoEquipeHelper = colecaoOSExecucaoEquipeHelper.iterator();
while (iteratorColecaoOSExecucaoEquipeHelper.hasNext()){
osExecucaoEquipeHelper = (OSExecucaoEquipeHelper) iteratorColecaoOSExecucaoEquipeHelper.next();
if (osExecucaoEquipeHelper.getOsExecucaoEquipe()
.getEquipe().getId().equals(idEquipe)){
equipeLocalizada = true;
//Componente
Collection colecaoOSExecucaoEquipeComponentes = osExecucaoEquipeHelper
.getColecaoOsExecucaoEquipeComponentes();
if (colecaoOSExecucaoEquipeComponentes != null &&
!colecaoOSExecucaoEquipeComponentes.isEmpty()){
if (!carregamentoInicial){
Iterator iteratorColecaoOSExecucaoEquipeComponentes =
colecaoOSExecucaoEquipeComponentes.iterator();
while (iteratorColecaoOSExecucaoEquipeComponentes.hasNext()){
osExecucaoEquipeComponentes = (OsExecucaoEquipeComponentes)
iteratorColecaoOSExecucaoEquipeComponentes.next();
if (idFuncionario != null){
if (osExecucaoEquipeComponentes.getFuncionario() != null &&
osExecucaoEquipeComponentes.getFuncionario().getId().equals(idFuncionario)){
throw new ActionServletException(
"atencao.equipe_componente_ja_informado");
}
}
else{
if (osExecucaoEquipeComponentes.getNomeComponente() != null &&
osExecucaoEquipeComponentes.getNomeComponente()
.equalsIgnoreCase(nomeComponente)){
throw new ActionServletException(
"atencao.equipe_componente_ja_informado");
}
}
if (osExecucaoEquipeComponentes.getIndicadorResponsavel() ==
ConstantesSistema.INDICADOR_USO_ATIVO.shortValue()){
responsavelInformado = true;
}
}
if (responsavelInformado &&
responsavel == ConstantesSistema.INDICADOR_USO_ATIVO.shortValue()){
throw new ActionServletException(
"atencao.responsavel_ja_informado");
}
//Gerando objeto
osExecucaoEquipeComponentes = this.gerarOsExecucaoEquipeComponentes(osExecucaoEquipeHelper
.getOsExecucaoEquipe(), idFuncionario, nomeComponente, responsavel, fachada);
osExecucaoEquipeHelper.getColecaoOsExecucaoEquipeComponentes().add(osExecucaoEquipeComponentes);
}
}
else{
Collection colecaoComponentes = new ArrayList();
//Gerando objeto
osExecucaoEquipeComponentes = this.gerarOsExecucaoEquipeComponentes(osExecucaoEquipeHelper
.getOsExecucaoEquipe(), idFuncionario, nomeComponente, responsavel, fachada);
colecaoComponentes.add(osExecucaoEquipeComponentes);
osExecucaoEquipeHelper.setColecaoOsExecucaoEquipeComponentes(colecaoComponentes);
}
}
if (equipeLocalizada){
break;
}
}
}
if (equipeLocalizada){
break;
}
}
}
if (equipeLocalizada){
break;
}
}
}
private OsExecucaoEquipeComponentes gerarOsExecucaoEquipeComponentes(OsExecucaoEquipe osExecucaoEquipe,
Integer idFuncionario, String nomeComponente, short responsavel, Fachada fachada){
OsExecucaoEquipeComponentes osExecucaoEquipeComponentes =
new OsExecucaoEquipeComponentes();
osExecucaoEquipeComponentes.setOsExecucaoEquipe(osExecucaoEquipe);
osExecucaoEquipeComponentes.setIndicadorResponsavel(responsavel);
if (idFuncionario != null){
FiltroFuncionario filtroFuncionario = new FiltroFuncionario();
filtroFuncionario.adicionarParametro(new ParametroSimples(FiltroFuncionario.ID,
idFuncionario));
Collection colecaoFuncionario = fachada.pesquisar(filtroFuncionario,
Funcionario.class.getName());
if (colecaoFuncionario == null || colecaoFuncionario.isEmpty()) {
throw new ActionServletException(
"atencao.label_inexistente", null, "Funcion�rio");
} else {
Funcionario funcionario = (Funcionario) Util
.retonarObjetoDeColecao(colecaoFuncionario);
osExecucaoEquipeComponentes.setFuncionario(funcionario);
}
}
else{
osExecucaoEquipeComponentes.setNomeComponente(nomeComponente);
}
osExecucaoEquipeComponentes.setUltimaAlteracao(new Date());
return osExecucaoEquipeComponentes;
}
private void removerOsExecucaoEquipeComponentes(Integer idAtividade, Date dataExecucao,
String horaInicio, String horaFim, Integer idEquipe, Collection colecaoSessao,
Fachada fachada, long identificadorComponente){
Iterator iteratorColecaoSessao = colecaoSessao.iterator();
ManterDadosAtividadesOrdemServicoHelper manterDadosAtividadesOrdemServicoHelper = null;
OSAtividadePeriodoExecucaoHelper osAtividadePeriodoExecucaoHelper = null;
OSExecucaoEquipeHelper osExecucaoEquipeHelper = null;
OsExecucaoEquipeComponentes osExecucaoEquipeComponentes = null;
boolean equipeLocalizada = false;
//Atividade
while (iteratorColecaoSessao.hasNext()){
manterDadosAtividadesOrdemServicoHelper = (ManterDadosAtividadesOrdemServicoHelper)
iteratorColecaoSessao.next();
if (manterDadosAtividadesOrdemServicoHelper.getOrdemServicoAtividade().getAtividade().getId()
.equals(idAtividade)){
//Per�odo
Collection colecaoOSAtividadePeriodoExecucaoHelper =
manterDadosAtividadesOrdemServicoHelper.getColecaoOSAtividadePeriodoExecucaoHelper();
Iterator iteratorColecaoOSAtividadePeriodoExecucaoHelper =
colecaoOSAtividadePeriodoExecucaoHelper.iterator();
while (iteratorColecaoOSAtividadePeriodoExecucaoHelper.hasNext()){
osAtividadePeriodoExecucaoHelper = (OSAtividadePeriodoExecucaoHelper)
iteratorColecaoOSAtividadePeriodoExecucaoHelper.next();
if (osAtividadePeriodoExecucaoHelper.getDataExecucaoParaQuebra().equals(dataExecucao) &&
osAtividadePeriodoExecucaoHelper.getHoraMinutoInicioParaQuebra().equalsIgnoreCase(horaInicio) &&
osAtividadePeriodoExecucaoHelper.getHoraMinutoFimParaQuebra().equalsIgnoreCase(horaFim)){
//Equipe
Collection colecaoOSExecucaoEquipeHelper = osAtividadePeriodoExecucaoHelper
.getColecaoOSExecucaoEquipeHelper();
Iterator iteratorColecaoOSExecucaoEquipeHelper = colecaoOSExecucaoEquipeHelper.iterator();
while (iteratorColecaoOSExecucaoEquipeHelper.hasNext()){
osExecucaoEquipeHelper = (OSExecucaoEquipeHelper) iteratorColecaoOSExecucaoEquipeHelper.next();
if (osExecucaoEquipeHelper.getOsExecucaoEquipe()
.getEquipe().getId().equals(idEquipe)){
equipeLocalizada = true;
//Componente
Collection colecaoOSExecucaoEquipeComponentes = osExecucaoEquipeHelper
.getColecaoOsExecucaoEquipeComponentes();
if (colecaoOSExecucaoEquipeComponentes != null &&
!colecaoOSExecucaoEquipeComponentes.isEmpty()){
Iterator iteratorColecaoOSExecucaoEquipeComponentes =
colecaoOSExecucaoEquipeComponentes.iterator();
while (iteratorColecaoOSExecucaoEquipeComponentes.hasNext()){
osExecucaoEquipeComponentes = (OsExecucaoEquipeComponentes)
iteratorColecaoOSExecucaoEquipeComponentes.next();
if (GcomAction.obterTimestampIdObjeto(osExecucaoEquipeComponentes)
== identificadorComponente){
colecaoOSExecucaoEquipeComponentes.remove(osExecucaoEquipeComponentes);
break;
}
}
}
}
if (equipeLocalizada){
break;
}
}
}
if (equipeLocalizada){
break;
}
}
}
if (equipeLocalizada){
break;
}
}
}
}