package gcom.gui.cobranca; import gcom.cadastro.unidade.FiltroUnidadeOrganizacional; import gcom.cadastro.unidade.UnidadeOrganizacional; import gcom.cobranca.FiltroUnidadeOrganizacionalTestemunha; import gcom.cobranca.UnidadeOrganizacionalTestemunha; import gcom.fachada.Fachada; import gcom.gui.ActionServletException; import gcom.gui.GcomAction; import gcom.seguranca.acesso.usuario.FiltroUsuario; import gcom.seguranca.acesso.usuario.Usuario; import gcom.util.Util; import gcom.util.filtro.ParametroSimples; import java.util.ArrayList; import java.util.Collection; import java.util.Date; 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; /** * Action que faz a exibi��o da tela para o usu�rio setar os campos e permitir * que ele insera uma resolu��o de diretoria [UC0217] Inserir Resolu��o de * Diretoria * * @author Rafael Corr�a * @since 30/03/2006 */ public class ExibirInformarUnidadeOrganizacionalTestemunhaAction extends GcomAction { /** * * @param actionMapping * @param actionForm * @param httpServletRequest * @param httpServletResponse * @return */ @SuppressWarnings("unchecked") public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) { // Seta o mapeamento de retorno ActionForward retorno = actionMapping .findForward("exibirInformarUnidadeOrganizacionalTestemunha"); InformarUnidadeOrganizacionalTestemunhaActionForm informarUnidadeOrganizacionalTestemunhaActionForm = (InformarUnidadeOrganizacionalTestemunhaActionForm) actionForm; Fachada fachada = Fachada.getInstancia(); HttpSession sessao = httpServletRequest.getSession(false); String idUnidadeOrganizacional = informarUnidadeOrganizacionalTestemunhaActionForm.getIdUnidadeOrganizacional(); String idTestemunha = informarUnidadeOrganizacionalTestemunhaActionForm.getIdTestemunha(); String loginTestemunha = informarUnidadeOrganizacionalTestemunhaActionForm.getLoginTestemunha(); // Pesquisa a unidade organizacional if (idUnidadeOrganizacional != null && !idUnidadeOrganizacional.trim().equals("")) { // Verifica se deve desabilitar o bot�o adicionar e a testemunha if (httpServletRequest.getParameter("desabilitaCampos") != null && !httpServletRequest.getParameter("desabilitaCampos") .trim().equals("")) { httpServletRequest.setAttribute("desabilitaCampos", "sim"); } FiltroUnidadeOrganizacional filtroUnidadeOrganizacional = new FiltroUnidadeOrganizacional(); filtroUnidadeOrganizacional.adicionarParametro(new ParametroSimples(FiltroUnidadeOrganizacional.ID, idUnidadeOrganizacional)); Collection colecaoUnidadeOrganizacional = fachada.pesquisar(filtroUnidadeOrganizacional, UnidadeOrganizacional.class.getName()); if (colecaoUnidadeOrganizacional != null && !colecaoUnidadeOrganizacional.isEmpty()) { UnidadeOrganizacional unidadeOrganizacional = (UnidadeOrganizacional) Util.retonarObjetoDeColecao(colecaoUnidadeOrganizacional); informarUnidadeOrganizacionalTestemunhaActionForm.setIdUnidadeOrganizacional(unidadeOrganizacional.getId().toString()); informarUnidadeOrganizacionalTestemunhaActionForm.setNomeUnidadeOrganizacional(unidadeOrganizacional.getDescricao()); } else { informarUnidadeOrganizacionalTestemunhaActionForm.setIdUnidadeOrganizacional(""); informarUnidadeOrganizacionalTestemunhaActionForm.setNomeUnidadeOrganizacional("UNIDADE INEXISTENTE"); httpServletRequest.setAttribute("unidadeOrganizacionalInexistente", true); httpServletRequest.setAttribute("nomeCampo", "idUnidadeOrganizacional"); } } else { informarUnidadeOrganizacionalTestemunhaActionForm.setNomeUnidadeOrganizacional(""); } // Pesquisa a testemunha if ((loginTestemunha != null && !loginTestemunha.trim().equals("")) || (idTestemunha != null && !idTestemunha.trim().equals(""))) { // Verifica se deve desabilitar o bot�o adicionar e a testemunha, // caso o usu�rio // tenha alterado a unidade de neg�cio deixa o bot�o desabilitado if (httpServletRequest.getParameter("desabilitaCampos") != null && !httpServletRequest.getParameter("desabilitaCampos") .trim().equals("")) { httpServletRequest.setAttribute("desabilitaCampos", "sim"); } FiltroUsuario filtroUsuario = new FiltroUsuario(); filtroUsuario.adicionarParametro(new ParametroSimples(FiltroUsuario.UNIDADE_ORGANIZACIONAL_ID, idUnidadeOrganizacional)); // Verifica se a pesquisa foi pelo enter if ((loginTestemunha != null && !loginTestemunha.trim().equals(""))) { filtroUsuario.adicionarParametro(new ParametroSimples(FiltroUsuario.LOGIN, loginTestemunha)); } // Verifica se a pesquisa foi feita pela lupa else { filtroUsuario.adicionarParametro(new ParametroSimples(FiltroUsuario.ID, idTestemunha)); } Collection colecaoUsuario = fachada.pesquisar(filtroUsuario, Usuario.class.getName()); if (colecaoUsuario != null && !colecaoUsuario.isEmpty()) { Usuario usuario = (Usuario) Util.retonarObjetoDeColecao(colecaoUsuario); informarUnidadeOrganizacionalTestemunhaActionForm.setIdTestemunha(usuario.getId().toString()); informarUnidadeOrganizacionalTestemunhaActionForm.setLoginTestemunha(usuario.getLogin()); informarUnidadeOrganizacionalTestemunhaActionForm.setNomeTestemunha(usuario.getNomeUsuario()); } else { informarUnidadeOrganizacionalTestemunhaActionForm.setIdTestemunha(""); informarUnidadeOrganizacionalTestemunhaActionForm.setLoginTestemunha(""); informarUnidadeOrganizacionalTestemunhaActionForm.setNomeTestemunha("TESTEMUNHA INEXISTENTE"); httpServletRequest.setAttribute("testemunhaInexistente", true); httpServletRequest.setAttribute("nomeCampo", "loginUsuario"); } } else { informarUnidadeOrganizacionalTestemunhaActionForm.setNomeTestemunha(""); } // Cole��o retornada na consulta Collection<UnidadeOrganizacionalTestemunha> colecaoUnidadeOrganizacionalTestemunha = (Collection<UnidadeOrganizacionalTestemunha>) sessao.getAttribute("colecaoUnidadeOrganizacionalTestemunha"); // Cole��o com os objetos adicionados pelo usu�rio Collection<UnidadeOrganizacionalTestemunha> colecaoUnidadeOrganizacionalTestemunhaAdicionadas = (Collection<UnidadeOrganizacionalTestemunha>) sessao.getAttribute("colecaoUnidadeOrganizacionalTestemunhaAdicionadas"); // Cole��o com os objetos removidos pelo usu�rio Collection<UnidadeOrganizacionalTestemunha> colecaoUnidadeOrganizacionalTestemunhaRemovidas = (Collection<UnidadeOrganizacionalTestemunha>) sessao .getAttribute("colecaoUnidadeOrganizacionalTestemunhaRemovidas"); // Consulta as Unidades de Neg�cio Testemunha if (httpServletRequest.getParameter("consultar") != null && !httpServletRequest.getParameter("consultar").equals("")) { colecaoUnidadeOrganizacionalTestemunhaAdicionadas = new ArrayList<UnidadeOrganizacionalTestemunha>(); colecaoUnidadeOrganizacionalTestemunhaRemovidas = new ArrayList<UnidadeOrganizacionalTestemunha>(); sessao.setAttribute("colecaoUnidadeOrganizacionalTestemunhaAdicionadas", colecaoUnidadeOrganizacionalTestemunhaAdicionadas); sessao.setAttribute("colecaoUnidadeOrganizacionalTestemunhaRemovidas", colecaoUnidadeOrganizacionalTestemunhaRemovidas); colecaoUnidadeOrganizacionalTestemunha = consultarUnidadeOrganizacionalTestemunha(idUnidadeOrganizacional); if (colecaoUnidadeOrganizacionalTestemunha == null) { colecaoUnidadeOrganizacionalTestemunha = new ArrayList<UnidadeOrganizacionalTestemunha>(); } sessao.setAttribute("colecaoUnidadeOrganizacionalTestemunha", colecaoUnidadeOrganizacionalTestemunha); } // Adiciona a Unidade de Neg�cio Testemunha if (httpServletRequest.getParameter("adicionar") != null && !httpServletRequest.getParameter("adicionar").equals("")) { UnidadeOrganizacionalTestemunha unidadeNegocioTestemunha = criarUnidadeOrganizacionalTestemunha(idUnidadeOrganizacional, loginTestemunha); colecaoUnidadeOrganizacionalTestemunhaAdicionadas = adicionarUnidadeOrganizacionalTestemunha(colecaoUnidadeOrganizacionalTestemunha, colecaoUnidadeOrganizacionalTestemunhaAdicionadas, unidadeNegocioTestemunha); sessao.setAttribute("colecaoUnidadeOrganizacionalTestemunhaAdicionadas", colecaoUnidadeOrganizacionalTestemunhaAdicionadas); } // Remove a Unidade de Neg�cio Testemunha if (httpServletRequest.getParameter("removerUnidadeOrganizacionalTestemunha") != null && !httpServletRequest.getParameter("removerUnidadeOrganizacionalTestemunha").equals("")) { Integer posicaoRemocao = new Integer(httpServletRequest .getParameter("removerUnidadeOrganizacionalTestemunha")); removerUnidadeOrganizacionalTestemunha(colecaoUnidadeOrganizacionalTestemunha, posicaoRemocao, colecaoUnidadeOrganizacionalTestemunhaRemovidas, colecaoUnidadeOrganizacionalTestemunhaAdicionadas); sessao.setAttribute("colecaoUnidadeOrganizacionalTestemunhaRemovidas", colecaoUnidadeOrganizacionalTestemunhaRemovidas); } return retorno; } /** * Adiciona a Unidade de Neg�cio Testemunha selecionada pelo usu�rio * * @author Rafael Corr�a * @date 19/05/2008 * * @param colecaoUnidadeOrganizacionalTestemunha * @param colecaoUnidadeOrganizacionalTestemunhaAdicionadas * @param unidadeNegocioTestemunha * @return */ private Collection<UnidadeOrganizacionalTestemunha> adicionarUnidadeOrganizacionalTestemunha( Collection<UnidadeOrganizacionalTestemunha> colecaoUnidadeOrganizacionalTestemunha, Collection<UnidadeOrganizacionalTestemunha> colecaoUnidadeOrganizacionalTestemunhaAdicionadas, UnidadeOrganizacionalTestemunha unidadeOrganizacionalTestemunhaAdicionar) { if (colecaoUnidadeOrganizacionalTestemunhaAdicionadas == null) { colecaoUnidadeOrganizacionalTestemunhaAdicionadas = new ArrayList<UnidadeOrganizacionalTestemunha>(); } else { // [FS0001] - Validar data rela��o fim for (UnidadeOrganizacionalTestemunha unidadeNegocioTestemunha : colecaoUnidadeOrganizacionalTestemunha) { if (unidadeNegocioTestemunha.getDataFimRelacao() == null && unidadeNegocioTestemunha.getUsuario().getId() .equals( unidadeOrganizacionalTestemunhaAdicionar .getUsuario().getId())) { throw new ActionServletException( "atencao.testemunha.ja.existente", unidadeOrganizacionalTestemunhaAdicionar .getUnidadeOrganizacional().getDescricao(), unidadeOrganizacionalTestemunhaAdicionar.getUsuario() .getNomeUsuario()); } } } colecaoUnidadeOrganizacionalTestemunhaAdicionadas.add(unidadeOrganizacionalTestemunhaAdicionar); colecaoUnidadeOrganizacionalTestemunha.add(unidadeOrganizacionalTestemunhaAdicionar); return colecaoUnidadeOrganizacionalTestemunhaAdicionadas; } /** * Executa a consulta feita pelo usu�rio * * @author Rafa * @date 16/05/2008 * * @param idUnidadeOrganizacional * @param idTestemunha * @return */ @SuppressWarnings("unchecked") private Collection<UnidadeOrganizacionalTestemunha> consultarUnidadeOrganizacionalTestemunha(String idUnidadeOrganizacional) { Collection<UnidadeOrganizacionalTestemunha> colecaoUnidadeOrganizacionalTestemunha; FiltroUnidadeOrganizacionalTestemunha filtroUnidadeOrganizacionalTestemunha = new FiltroUnidadeOrganizacionalTestemunha(); filtroUnidadeOrganizacionalTestemunha.adicionarCaminhoParaCarregamentoEntidade(FiltroUnidadeOrganizacionalTestemunha.UNIDADE_ORGANIZACIONAL); filtroUnidadeOrganizacionalTestemunha.adicionarCaminhoParaCarregamentoEntidade(FiltroUnidadeOrganizacionalTestemunha.USUARIO); filtroUnidadeOrganizacionalTestemunha.adicionarParametro(new ParametroSimples(FiltroUnidadeOrganizacionalTestemunha.UNIDADE_ORGANIZACIONAL_ID, idUnidadeOrganizacional)); colecaoUnidadeOrganizacionalTestemunha = Fachada.getInstancia().pesquisar(filtroUnidadeOrganizacionalTestemunha, UnidadeOrganizacionalTestemunha.class.getName()); return colecaoUnidadeOrganizacionalTestemunha; } /** * Remove a Unidade de Neg�cio Testemunha * * @author Rafael Corr�a * @date 16/05/2008 * * @param colecaoUnidadeOrganizacionalTestemunha * @param posicao */ private void removerUnidadeOrganizacionalTestemunha(Collection<UnidadeOrganizacionalTestemunha> colecaoUnidadeOrganizacionalTestemunha, int posicaoRemocao, Collection<UnidadeOrganizacionalTestemunha> colecaoUnidadeOrganizacionalTestemunhaRemovidas, Collection<UnidadeOrganizacionalTestemunha> colecaoUnidadeOrganizacionalTestemunhaAdicionadas) { int i = 0; for (UnidadeOrganizacionalTestemunha unidadeOrganizacionalTestemunha : colecaoUnidadeOrganizacionalTestemunha) { i++; // Verifica se � este o objeto a ser removido if (i == posicaoRemocao) { if (unidadeOrganizacionalTestemunha.getId() == null) { colecaoUnidadeOrganizacionalTestemunha.remove(unidadeOrganizacionalTestemunha); colecaoUnidadeOrganizacionalTestemunhaAdicionadas.remove(unidadeOrganizacionalTestemunha); } else { unidadeOrganizacionalTestemunha.setDataFimRelacao(new Date()); if (colecaoUnidadeOrganizacionalTestemunhaRemovidas == null) { colecaoUnidadeOrganizacionalTestemunhaRemovidas = new ArrayList<UnidadeOrganizacionalTestemunha>(); } colecaoUnidadeOrganizacionalTestemunhaRemovidas.add(unidadeOrganizacionalTestemunha); } break; } } } /** * Cria a Unidade de Neg�cio Testemunha * * @author Rafael Corr�a * @date 16/05/2008 * * @param idUnidadeOrganizacional * @param idUsuario */ private UnidadeOrganizacionalTestemunha criarUnidadeOrganizacionalTestemunha(String idUnidadeOrganizacional, String loginUsuario) { Fachada fachada = Fachada.getInstancia(); UnidadeOrganizacionalTestemunha retorno = new UnidadeOrganizacionalTestemunha(); FiltroUnidadeOrganizacional filtroUnidadeOrganizacional = new FiltroUnidadeOrganizacional(); filtroUnidadeOrganizacional.adicionarParametro(new ParametroSimples(FiltroUnidadeOrganizacional.ID, idUnidadeOrganizacional)); Collection colecaoUnidadeOrganizacional = fachada.pesquisar(filtroUnidadeOrganizacional, UnidadeOrganizacional.class.getName()); UnidadeOrganizacional unidadeOrganizacional = (UnidadeOrganizacional) Util.retonarObjetoDeColecao(colecaoUnidadeOrganizacional); retorno.setUnidadeOrganizacional(unidadeOrganizacional); FiltroUsuario filtroUsuario = new FiltroUsuario(); filtroUsuario.adicionarParametro(new ParametroSimples(FiltroUsuario.LOGIN, loginUsuario)); Collection colecaoUsuario = fachada.pesquisar(filtroUsuario, Usuario.class.getName()); if (colecaoUsuario != null && !colecaoUsuario.isEmpty()) { Usuario usuario = (Usuario) Util.retonarObjetoDeColecao(colecaoUsuario); retorno.setUsuario(usuario); retorno.setDataInicioRelacao(new Date()); } else { throw new ActionServletException("atencao.pesquisa_inexistente", null, "Testemunha"); } return retorno; } }