package gcom.gui.atendimentopublico.ordemservico;
import gcom.atendimentopublico.ordemservico.Atividade;
import gcom.atendimentopublico.ordemservico.FiltroAtividade;
import gcom.atendimentopublico.ordemservico.bean.ManterDadosAtividadesOrdemServicoHelper;
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.Collection;
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 do dados das atividades de uma OS
*
* @author Raphael Rossiter
* @date 15/09/2006
*/
public class ExibirManterDadosAtividadesOrdemServicoAction extends GcomAction{
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
ActionForward retorno = actionMapping
.findForward("manterDadosAtividadesOrdemServico");
ManterDadosAtividadesOrdemServicoActionForm form = (ManterDadosAtividadesOrdemServicoActionForm) actionForm;
HttpSession sessao = httpServletRequest.getSession(false);
Fachada fachada = Fachada.getInstancia();
/*
* O caso de uso recebe o n�mero sa OS, data de roteiro e a data de encerramento (dever� vir informado
* um ou outro e ambos)
*/
String numeroOSParametro = httpServletRequest.getParameter("numeroOS");
if (numeroOSParametro != null && !numeroOSParametro.equals("")){
String dataRoteiroParametro = httpServletRequest.getParameter("dataRoteiro");
String dataEncerramentoParametro = httpServletRequest.getParameter("dataEncerramento");
String caminhoRetorno = httpServletRequest.getParameter("caminhoRetorno");
if (caminhoRetorno != null && !caminhoRetorno.equalsIgnoreCase("")){
form.setCaminhoRetorno(caminhoRetorno);
}
//Conversa��o dos objetos
Integer numeroOS = Util.converterStringParaInteger(numeroOSParametro);
form.setNumeroOSForm(numeroOSParametro);
//Date dataRoteiro = null;
if (dataRoteiroParametro != null && !dataRoteiroParametro.equals("")){
//dataRoteiro = Util.converteStringParaDate(dataRoteiroParametro);
form.setDataRoteiroForm(dataRoteiroParametro);
}
//Date dataEncerramento = null;
if (dataEncerramentoParametro != null && !dataEncerramentoParametro.equals("")){
//dataEncerramento = Util.converteStringParaDate(dataEncerramentoParametro);
form.setDataEncerramentoForm(dataEncerramentoParametro);
}
/*
* O sistema apresenta uma lista de atividades associadas ao servi�o tipo que pertencem � ordem de servi�o
*/
Collection<Atividade> colecaoAtividadeOS = fachada.obterAtividadesOrdemServico(numeroOS);
sessao.setAttribute("colecaoAtividade", colecaoAtividadeOS);
}
//Pesquisar Atividade
if ((form.getIdAtividade() != null && !form.getIdAtividade().equals("")) &&
(form.getDescricaoAtividade() == null || form.getDescricaoAtividade().equals(""))){
this.pesquisarAtividade(form, fachada, httpServletRequest);
}
//Remover Atividade
String removerAtividade = httpServletRequest.getParameter("removerAtividade");
if (removerAtividade != null && !removerAtividade.equals("")){
Atividade remover = new Atividade();
remover.setId(new Integer(removerAtividade));
Collection<Atividade> colecaoAtividade = (Collection) sessao.getAttribute("colecaoAtividade");
colecaoAtividade.remove(remover);
if (sessao.getAttribute("colecaoManterDadosAtividadesOrdemServicoHelper") != null){
Collection colecaoManterDadosAtividadesOrdemServicoHelper = (Collection)
sessao.getAttribute("colecaoManterDadosAtividadesOrdemServicoHelper");
Iterator iteratorColecaoManterDadosAtividadesOrdemServicoHelper =
colecaoManterDadosAtividadesOrdemServicoHelper.iterator();
ManterDadosAtividadesOrdemServicoHelper helper = null;
while (iteratorColecaoManterDadosAtividadesOrdemServicoHelper.hasNext()){
helper = (ManterDadosAtividadesOrdemServicoHelper)
iteratorColecaoManterDadosAtividadesOrdemServicoHelper.next();
if (helper.getOrdemServicoAtividade().getAtividade().getId()
.equals(remover.getId())){
colecaoManterDadosAtividadesOrdemServicoHelper.remove(helper);
break;
}
}
}
}
//Adicionar Atividade
String adicionarAtividade = httpServletRequest.getParameter("adicionarAtividade");
if (adicionarAtividade != null && !adicionarAtividade.equals("")){
Atividade adicionar = this.pesquisarAtividade(form, fachada, httpServletRequest);
Collection<Atividade> colecaoAtividade = (Collection) sessao.getAttribute("colecaoAtividade");
//[FS0003 - Verificar exist�ncia da atividade]
if (colecaoAtividade.contains(adicionar)){
throw new ActionServletException("atencao.atividade_ja_existente");
}
colecaoAtividade.add(adicionar);
form.setIdAtividade("");
form.setDescricaoAtividade("");
httpServletRequest.setAttribute("nomeCampo", "idAtividade");
}
//Pesquisar Atividade POPUP
String pesquisarAtividade = httpServletRequest.getParameter("pesquisarAtividade");
if (pesquisarAtividade != null && !pesquisarAtividade.equalsIgnoreCase("")){
retorno = actionMapping.findForward("pesquisarAtividade");
}
//Recebendo dados Atividade POPUP
if (httpServletRequest.getParameter("idCampoEnviarDados") != null){
form.setIdAtividade(httpServletRequest.getParameter("idCampoEnviarDados"));
form.setDescricaoAtividade(httpServletRequest.getParameter("descricaoCampoEnviarDados"));
httpServletRequest.setAttribute("nomeCampo", "botaoAdicionar");
}
//Concluir Manuten��o
String concluirManutencao = httpServletRequest.getParameter("inserir");
if (concluirManutencao != null && !concluirManutencao.equalsIgnoreCase("")){
if (sessao.getAttribute("colecaoManterDadosAtividadesOrdemServicoHelper") != null){
Collection colecaoManterDadosAtividadesOrdemServicoHelper = (Collection)
sessao.getAttribute("colecaoManterDadosAtividadesOrdemServicoHelper");
if (colecaoManterDadosAtividadesOrdemServicoHelper != null &&
!colecaoManterDadosAtividadesOrdemServicoHelper.isEmpty()){
if (form.getCaminhoRetorno() != null && !form.getCaminhoRetorno().equalsIgnoreCase("")){
fachada.manterDadosAtividadesOrdemServico(colecaoManterDadosAtividadesOrdemServicoHelper);
sessao.removeAttribute("colecaoManterDadosAtividadesOrdemServicoHelper");
httpServletRequest.setAttribute("caminhoRetorno", form.getCaminhoRetorno());
}
else{
sessao.setAttribute("colecaoManutencao", colecaoManterDadosAtividadesOrdemServicoHelper);
}
}
httpServletRequest.setAttribute("fecharPopup", "OK");
}
}
if(httpServletRequest.getParameter("caminhoRetornoDadosAtividadesOS")!= null &&
!httpServletRequest.getParameter("caminhoRetornoDadosAtividadesOS").equals("")){
sessao.setAttribute("caminhoRetornoDadosAtividadesOS", httpServletRequest.getParameter("caminhoRetornoDadosAtividadesOS"));
}
return retorno;
}
private Atividade pesquisarAtividade(ManterDadosAtividadesOrdemServicoActionForm form,
Fachada fachada, HttpServletRequest httpServletRequest){
Atividade retorno = null;
FiltroAtividade filtroAtividade = new FiltroAtividade();
filtroAtividade.adicionarParametro(new ParametroSimples(FiltroAtividade.ID,
form.getIdAtividade()));
filtroAtividade.adicionarParametro(new ParametroSimples(FiltroAtividade.INDICADORUSO,
ConstantesSistema.INDICADOR_USO_ATIVO));
Collection colecaoAtividade = fachada.pesquisar(filtroAtividade,
Atividade.class.getName());
if (colecaoAtividade == null || colecaoAtividade.isEmpty()) {
form.setIdAtividade("");
form.setDescricaoAtividade("Atividade inexistente");
httpServletRequest.setAttribute("corAtividade", "exception");
httpServletRequest.setAttribute("nomeCampo", "idAtividade");
} else {
Atividade atividade = (Atividade) Util
.retonarObjetoDeColecao(colecaoAtividade);
form.setIdAtividade(atividade.getId().toString());
form.setDescricaoAtividade(atividade.getDescricao());
httpServletRequest.setAttribute("nomeCampo", "idAtividade");
retorno = atividade;
}
return retorno;
}
}