package gcom.cadastro.unidade; import gcom.atendimentopublico.registroatendimento.RegistroAtendimento; import gcom.cadastro.empresa.Empresa; import gcom.cadastro.sistemaparametro.SistemaParametro; import gcom.fachada.Fachada; import gcom.interceptor.RegistradorOperacao; import gcom.seguranca.acesso.Operacao; import gcom.seguranca.acesso.OperacaoEfetuada; import gcom.seguranca.acesso.usuario.Usuario; import gcom.seguranca.acesso.usuario.UsuarioAcao; import gcom.seguranca.acesso.usuario.UsuarioAcaoUsuarioHelper; import gcom.util.ConstantesJNDI; import gcom.util.ConstantesSistema; import gcom.util.ControladorException; import gcom.util.ControladorUtilLocal; import gcom.util.ControladorUtilLocalHome; import gcom.util.ErroRepositorioException; import gcom.util.ServiceLocator; import gcom.util.ServiceLocatorException; import gcom.util.SistemaException; import gcom.util.Util; import gcom.util.filtro.ParametroSimples; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; import java.util.List; import javax.ejb.CreateException; import javax.ejb.SessionBean; import javax.ejb.SessionContext; public class ControladorUnidadeSEJB implements SessionBean { private static final long serialVersionUID = 1L; private IRepositorioUnidade repositorioUnidade = null; SessionContext sessionContext; public void ejbCreate() throws CreateException { repositorioUnidade = RepositorioUnidadeHBM.getInstancia(); } /** * < <Descri��o do m�todo>> */ public void ejbRemove() { } /** * < <Descri��o do m�todo>> */ public void ejbActivate() { } /** * < <Descri��o do m�todo>> */ public void ejbPassivate() { } /** * Seta o valor de sessionContext * * @param sessionContext * O novo valor de sessionContext */ public void setSessionContext(SessionContext sessionContext) { this.sessionContext = sessionContext; } /** * Retorna o valor de controladorUtil * * @return O valor de controladorUtil */ private ControladorUtilLocal getControladorUtil() { ControladorUtilLocalHome localHome = null; ControladorUtilLocal local = null; // pega a inst�ncia do ServiceLocator. ServiceLocator locator = null; try { locator = ServiceLocator.getInstancia(); localHome = (ControladorUtilLocalHome) locator .getLocalHome(ConstantesJNDI.CONTROLADOR_UTIL_SEJB); // guarda a referencia de um objeto capaz de fazer chamadas � // objetos remotamente local = localHome.create(); return local; } catch (CreateException e) { throw new SistemaException(e); } catch (ServiceLocatorException e) { throw new SistemaException(e); } } /** * [UC0366] Inserir Registro de Atendimento * * Obt�m a unidade associada ao usu�rio que estiver efetuando o registro de * atendimento (UNID_ID e UNID_DSUNIDADE da tabela UNIDADE_ORGANIZACIONAL * com UNID_ID=(UNID_ID da tabela USUARIO com USUR_NMLOGIN= Login do usu�rio * que estiver efetuando o registro de atendimento) e UNID_ICABERTURARA=1) * * @author Raphael Rossiter * @date 25/07/2006 * * @param login * @return UnidadeOrganizacional * @throws ControladorException */ public UnidadeOrganizacional obterUnidadeOrganizacionalAberturaRAAtivoUsuario( String loginUsuario) throws ControladorException { UnidadeOrganizacional retorno = null; try { retorno = repositorioUnidade .obterUnidadeOrganizacionalAberturaRAAtivoUsuario(loginUsuario); } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } return retorno; } /** * [UC0366] Inserir Registro de Atendimento * * Caso a unidade de atendimento n�o tenha autoriza��o para efetuar a * abertura de registros de atendimento (UNID_ICABERTURARA com o valor * correspondente a dois na tabela UNIDADE_ORGANIZACIONAL com UNID_ID=Id da * Unidade de Atendimento), exibir a mensagem �A unidade <<UNID_NMUNIDADE * da tabela UNIDADE_ORGANIZACIONAL>> n�o tem autoriza��o para efetuar a * abertura de registro de atendimento� e retornar para o passo * correspondente no fluxo principal. * * [FS0004] - Verificar exist�ncia da unidade de atendimento * * [FS0033] - Verificar autoriza��o da unidade de atendimento para abertura * de registro de atendimento * * @author Raphael Rossiter * @date 25/07/2006 * * @param idUnidadeOrganizacional, * levantarExceptionUnidadeInexistente * @return UnidadeOrganizacional * @throws ControladorException */ public UnidadeOrganizacional verificarAutorizacaoUnidadeAberturaRA( Integer idUnidadeOrganizacional, boolean levantarExceptionUnidadeInexistente) throws ControladorException { UnidadeOrganizacional retorno = null; Collection colecaoUnidadeOrganizacional = null; FiltroUnidadeOrganizacional filtroUnidadeOrganizacional = new FiltroUnidadeOrganizacional(); filtroUnidadeOrganizacional .adicionarCaminhoParaCarregamentoEntidade("meioSolicitacao"); filtroUnidadeOrganizacional.adicionarParametro(new ParametroSimples( FiltroUnidadeOrganizacional.ID, idUnidadeOrganizacional)); filtroUnidadeOrganizacional.adicionarParametro(new ParametroSimples( FiltroUnidadeOrganizacional.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO)); colecaoUnidadeOrganizacional = this.getControladorUtil().pesquisar( filtroUnidadeOrganizacional, UnidadeOrganizacional.class.getName()); if (colecaoUnidadeOrganizacional != null && !colecaoUnidadeOrganizacional.isEmpty()) { retorno = (UnidadeOrganizacional) Util .retonarObjetoDeColecao(colecaoUnidadeOrganizacional); if (retorno.getIndicadorAberturaRa() == null || retorno.getIndicadorAberturaRa().equals( ConstantesSistema.INDICADOR_USO_DESATIVO)) { throw new ControladorException( "atencao.unidade_organizacional_nao_autorizada_registro_atendimento", null, retorno.getDescricao()); } } else if (levantarExceptionUnidadeInexistente) { throw new ControladorException("atencao.label_inexistente", null, "Unidade de Atendimento"); } return retorno; } /** * [UC0366] Inserir Registro de Atendimento * * Caso a unidade destino definida esteja vinculada a uma unidade * centralizadora (UNID_IDCENTRALIZADORA com o valor diferente de nulo na * tabela UNIDADE_ORGANIZACIONAL para UNID_ID=Id da unidade destino), * definir a unidade destino a partir da unidade centralizadora (UNID_ID e * UNID_DSUNIDADE da tabela UNIDADE_ORGANIZACIONAL com UNID_ICTRAMITE=1 e * UNID_ID=UNID_IDCENTRALIZADORA). * * [FS0018] - Verificar exist�ncia de unidade centralizadora * * @author Raphael Rossiter * @date 26/07/2006 * * @param unidadeOrganizacional * @return UnidadeOrganizacional * @throws ControladorException */ public UnidadeOrganizacional verificarExistenciaUnidadeCentralizadora( UnidadeOrganizacional unidadeOrganizacional) throws ControladorException { UnidadeOrganizacional retorno = null; FiltroUnidadeOrganizacional filtroUnidadeOrganizacional = new FiltroUnidadeOrganizacional(); filtroUnidadeOrganizacional .adicionarCaminhoParaCarregamentoEntidade("unidadeCentralizadora"); filtroUnidadeOrganizacional.adicionarParametro(new ParametroSimples( FiltroUnidadeOrganizacional.ID, unidadeOrganizacional.getId())); /* * filtroUnidadeOrganizacional.adicionarParametro(new ParametroNaoNulo( * FiltroUnidadeOrganizacional.ID_UNIDADE_CENTRALIZADORA)); */ Collection colecaoUnidadeOrganizacional = this.getControladorUtil() .pesquisar(filtroUnidadeOrganizacional, UnidadeOrganizacional.class.getName()); if (colecaoUnidadeOrganizacional != null && !colecaoUnidadeOrganizacional.isEmpty()) { retorno = (UnidadeOrganizacional) Util .retonarObjetoDeColecao(colecaoUnidadeOrganizacional); if (retorno.getUnidadeCentralizadora() != null) { if (retorno.getUnidadeCentralizadora().getIndicadorTramite() == ConstantesSistema.INDICADOR_USO_ATIVO .shortValue()) { retorno = retorno.getUnidadeCentralizadora(); } } } return retorno; } /** * [UC0373] Inserir Unidade Organizacional * * Metodo inser��o da unidade organizacional * * [FS0001] - Validar Localidade [FS0002] - Validar Gerencia Regional * [FS0003] - Verificar exit�ncia da descri��o [FS0004] - Verificar * exit�ncia da sigla [FS0005] - Validar Empresa [FS0006] - Validar Unidade * Superior * * @author Raphael Pinto * @date 31/07/2006 * * @param unidadeOrganizacional * @return Object * @throws ControladorException */ public Object inserirUnidadeOrganizacional( UnidadeOrganizacional unidadeOrganizacional, Usuario usuario) throws ControladorException { FiltroUnidadeOrganizacional filtroUnidadeOrganizacional = new FiltroUnidadeOrganizacional(); Collection colecaoUnidade = null; // Caso 2 - [FS0001] - Validar Localidade if (unidadeOrganizacional.getLocalidade() != null) { String idLocalidade = "" + unidadeOrganizacional.getLocalidade().getId(); filtroUnidadeOrganizacional .adicionarParametro(new ParametroSimples( FiltroUnidadeOrganizacional.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO)); filtroUnidadeOrganizacional .adicionarParametro(new ParametroSimples( FiltroUnidadeOrganizacional.ID_LOCALIDADE, idLocalidade)); // Pesquisa de acordo com os par�metros informados no filtro colecaoUnidade = this.getControladorUtil().pesquisar( filtroUnidadeOrganizacional, UnidadeOrganizacional.class.getName()); // Verifica se a pesquisa retornou algum objeto para a cole��o if (colecaoUnidade != null && !colecaoUnidade.isEmpty()) { throw new ControladorException( "atencao.inserir_unidade_organizacional_localidade_ja_cadastradado", null, idLocalidade); } } // Caso 2 - [FS0002] - Validar Gerencia Regional if (unidadeOrganizacional.getGerenciaRegional() != null) { String idGerenciaRegional = "" + unidadeOrganizacional.getGerenciaRegional().getId(); filtroUnidadeOrganizacional = new FiltroUnidadeOrganizacional(); filtroUnidadeOrganizacional .adicionarParametro(new ParametroSimples( FiltroUnidadeOrganizacional.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO)); filtroUnidadeOrganizacional .adicionarParametro(new ParametroSimples( FiltroUnidadeOrganizacional.GERENCIAL_REGIONAL, idGerenciaRegional)); // Pesquisa de acordo com os par�metros informados no filtro colecaoUnidade = this.getControladorUtil().pesquisar( filtroUnidadeOrganizacional, UnidadeOrganizacional.class.getName()); // Verifica se a pesquisa retornou algum objeto para a cole��o if (colecaoUnidade != null && !colecaoUnidade.isEmpty()) { throw new ControladorException( "atencao.inserir_unidade_organizacional_gerencia_ja_cadastradado", null, idGerenciaRegional); } } // Caso 2 - [FS0011] - Validar Unidade Negocio if (unidadeOrganizacional.getUnidadeNegocio() != null) { String idUnidadeNegocio = "" + unidadeOrganizacional.getUnidadeNegocio().getId(); filtroUnidadeOrganizacional = new FiltroUnidadeOrganizacional(); filtroUnidadeOrganizacional .adicionarParametro(new ParametroSimples( FiltroUnidadeOrganizacional.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO)); filtroUnidadeOrganizacional .adicionarParametro(new ParametroSimples( FiltroUnidadeOrganizacional.UNIDADE_NEGOCIO, idUnidadeNegocio)); // Pesquisa de acordo com os par�metros informados no filtro colecaoUnidade = this.getControladorUtil().pesquisar( filtroUnidadeOrganizacional, UnidadeOrganizacional.class.getName()); // Verifica se a pesquisa retornou algum objeto para a cole��o if (colecaoUnidade != null && !colecaoUnidade.isEmpty()) { throw new ControladorException( "atencao.inserir_unidade_organizacional_unidade_negocio_ja_cadastradado", null, idUnidadeNegocio); } } // Caso 2 - [FS0003] - Verificar exit�ncia da descri��o String descricao = unidadeOrganizacional.getDescricao(); filtroUnidadeOrganizacional = new FiltroUnidadeOrganizacional(); filtroUnidadeOrganizacional.adicionarParametro(new ParametroSimples( FiltroUnidadeOrganizacional.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO)); filtroUnidadeOrganizacional.adicionarParametro(new ParametroSimples( FiltroUnidadeOrganizacional.DESCRICAO, descricao)); // Pesquisa de acordo com os par�metros informados no filtro colecaoUnidade = this.getControladorUtil().pesquisar( filtroUnidadeOrganizacional, UnidadeOrganizacional.class.getName()); // Verifica se a pesquisa retornou algum objeto para a cole��o if (colecaoUnidade != null && !colecaoUnidade.isEmpty()) { throw new ControladorException( "atencao.inserir_unidade_organizacional_descricao_ja_existe", null); } // Caso 2 - [FS0004] - Verificar exit�ncia da sigla if (unidadeOrganizacional.getSigla() != null && !unidadeOrganizacional.getSigla().equals("")) { String sigla = unidadeOrganizacional.getSigla(); filtroUnidadeOrganizacional = new FiltroUnidadeOrganizacional(); filtroUnidadeOrganizacional .adicionarParametro(new ParametroSimples( FiltroUnidadeOrganizacional.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO)); filtroUnidadeOrganizacional .adicionarParametro(new ParametroSimples( FiltroUnidadeOrganizacional.SIGLA, sigla)); // Pesquisa de acordo com os par�metros informados no filtro colecaoUnidade = this.getControladorUtil().pesquisar( filtroUnidadeOrganizacional, UnidadeOrganizacional.class.getName()); // Verifica se a pesquisa retornou algum objeto para a cole��o if (colecaoUnidade != null && !colecaoUnidade.isEmpty()) { throw new ControladorException( "atencao.inserir_unidade_organizacional_sigla_ja_existe", null); } } // Caso 2 - [FS0005] - Validar Empresa String codigoUnidadeTipo = unidadeOrganizacional.getUnidadeTipo() .getCodigoTipo(); if (codigoUnidadeTipo != null && codigoUnidadeTipo .equals(UnidadeTipo.UNIDADE_TIPO_TERCERIZADO)) { Empresa empresa = unidadeOrganizacional.getEmpresa(); if (empresa.getIndicadorEmpresaPrincipal().equals( ConstantesSistema.SIM)) { throw new ControladorException( "atencao.inserir_unidade_organizacional_terceirizada_associada", null); } } // Caso 2,3 - [FS0006] - Validar Unidade Superior Short nivelOrganizacional = unidadeOrganizacional.getUnidadeTipo() .getNivel(); UnidadeOrganizacional unidadeSuperior = unidadeOrganizacional .getUnidadeSuperior(); if (nivelOrganizacional != null) { if (unidadeSuperior != null && unidadeSuperior.getUnidadeTipo().getNivel() != null) { Short nivelSuperior = unidadeSuperior.getUnidadeTipo() .getNivel(); SistemaParametro sistemaParametro = Fachada.getInstancia() .pesquisarParametrosDoSistema(); // Caso 2 if (nivelSuperior.intValue() > nivelOrganizacional.intValue()) { if (sistemaParametro.getIndicadorVariaHierarquiaUnidade() != null && sistemaParametro .getIndicadorVariaHierarquiaUnidade() .equals(ConstantesSistema.SIM)) { throw new ControladorException( "atencao.inserir_unidade_organizacional_nivel_hierarquico.deve_ser_menor", null, unidadeSuperior.getUnidadeTipo() .getDescricao()); } else if (sistemaParametro .getIndicadorVariaHierarquiaUnidade() == null || sistemaParametro .getIndicadorVariaHierarquiaUnidade() .equals(ConstantesSistema.NAO)) { throw new ControladorException( "atencao.inserir_unidade_organizacional_nivel_hierarquico.diferente_um", null, unidadeSuperior.getUnidadeTipo() .getDescricao()); } } // Caso 3 else if (nivelSuperior.intValue() < (nivelOrganizacional .intValue() -1) && sistemaParametro .getIndicadorVariaHierarquiaUnidade() != 1 && (nivelOrganizacional.intValue() - nivelSuperior .intValue()) != 1) { throw new ControladorException( "atencao.inserir_unidade_organizacional_nivel_hierarquico", null); } } } // ------------ REGISTRAR TRANSA��O UNIDADE // ORGANIZACIONAL---------------------------- RegistradorOperacao registradorOperacaoUnidade = new RegistradorOperacao( Operacao.OPERACAO_UNIDADE_ORGANIZACIONAL_INSERIR, new UsuarioAcaoUsuarioHelper(usuario, UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO)); Operacao operacaoUnidade = new Operacao(); operacaoUnidade.setId(Operacao.OPERACAO_UNIDADE_ORGANIZACIONAL_INSERIR); OperacaoEfetuada operacaoEfetuadaUnidade = new OperacaoEfetuada(); operacaoEfetuadaUnidade.setOperacao(operacaoUnidade); unidadeOrganizacional.setOperacaoEfetuada(operacaoEfetuadaUnidade); unidadeOrganizacional.adicionarUsuario(usuario, UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO); registradorOperacaoUnidade.registrarOperacao(unidadeOrganizacional); // ------------ REGISTRAR TRANSA��O UNIDADE // ORGANIZACIONAL---------------------------- return this.getControladorUtil().inserir(unidadeOrganizacional); } /** * [UC0406] Filtrar Registro de Atendimento * * @author Leonardo Regis * @date 05/08/2006 * * @param unidadeOrganizacional * @return Collection<UnidadeOrganizacional> unidades subordinadas * @throws ErroRepositorioException */ public Collection<UnidadeOrganizacional> recuperarUnidadesSubordinadasPorUnidadeSuperior( UnidadeOrganizacional unidadeOrganizacional) throws ControladorException { Collection<UnidadeOrganizacional> colecaoUnidadeSubordinadas = null; try { colecaoUnidadeSubordinadas = repositorioUnidade .recuperarUnidadesSubordinadasPorUnidadeSuperior(unidadeOrganizacional); } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } return colecaoUnidadeSubordinadas; } /** * [UC0406] Filtrar Registro de Atendimento * * Caso exista registro de atendimento que est�o na unidade atual informada * (existe ocorr�ncia na tabela REGISTRO_ATENDIMENTO com TRAMITE=Id da * Unidade Atual e maior TRAM_TMTRAMITE) * * @author Leonardo Regis * @date 07/08/2006 * * @param unidadeOrganizacional * @return RegistroAtendimento * @throws ControladorException */ public UnidadeOrganizacional recuperaUnidadeAtualPorRA( RegistroAtendimento registroAtendimento) throws ControladorException { UnidadeOrganizacional unidadeAtual = null; try { unidadeAtual = repositorioUnidade .recuperaUnidadeAtualPorRA(registroAtendimento); } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } return unidadeAtual; } /** * [UC0406] Filtrar Registro de Atendimento * * [FS007] Verificar exist�ncia de unidades subordinadas * * @author Leonardo Regis * @date 05/08/2006 * * @param unidadeOrganizacional * @throws ControladorException */ public void verificarExistenciaUnidadesSubordinadas( UnidadeOrganizacional unidadeOrganizacional) throws ControladorException { int qtdeUnidadesSubordinadas = 0; try { qtdeUnidadesSubordinadas = repositorioUnidade .consultarTotalUnidadesSubordinadasPorUnidadeSuperior(unidadeOrganizacional); } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } if (qtdeUnidadesSubordinadas == 0) { throw new ControladorException( "atencao.filtrar_ra_sem_unidades_subordinadas"); } } /** * [UC0426] Reativar Registro de Atendimento * * Caso a unidade destino informada n�o possa receber registros de * atendimento (UNID_ICTRAMITE=2 na tabela UNIDADE_ORGANIZACIONAL com * UNID_ID=Id da unidade destino informada). * * [FS0013] - Verificar possibilidade de encaminhamento para a unidade * destino * * @author Ana Maria * @date 03/09/2006 * * @param idUnidadeOrganizacional * @return void * @throws ControladorException */ public void verificaPossibilidadeEncaminhamentoUnidadeDestino( Integer idUnidadeDestino) throws ControladorException { try { Short idTramiteUnidade = repositorioUnidade .verificaTramiteUnidade(idUnidadeDestino); if (idTramiteUnidade != null && idTramiteUnidade == ConstantesSistema.INDICADOR_USO_DESATIVO .shortValue()) { throw new ControladorException( "atencao.unidade_destino_nao_possivel_encaminhamento"); } } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } } /** * [UC0456] Elaborar Roteiro de Programa��o de Ordens de Servi�o * * @author Rafael Pinto * @date 04/09/2006 */ public Collection<UnidadeOrganizacional> pesquisarUnidadeOrganizacionalPorRA( Collection<Integer> idsRa) throws ControladorException { try { return repositorioUnidade .pesquisarUnidadeOrganizacionalPorRA(idsRa); } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } } /** * [UC0456] Elaborar Roteiro de Programa��o de Ordens de Servi�o * * @author Rafael Pinto * @date 04/09/2006 */ public Collection<UnidadeOrganizacional> pesquisarUnidadeOrganizacionalPorUnidade( Integer unidadeLotacao) throws ControladorException { try { return repositorioUnidade .pesquisarUnidadeOrganizacionalPorUnidade(unidadeLotacao); } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } } /** * Pesquisa a Unidade Organizacional do Usu�rio Logado * * @author Rafael Corr�a * @date 25/09/2006 * * @param id * @return UnidadeOrganizacional * @throws ControladorException */ public UnidadeOrganizacional pesquisarUnidadeUsuario(Integer idUsuario) throws ControladorException { try { return repositorioUnidade.pesquisarUnidadeUsuario(idUsuario); } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } } /** * [UC0375] Manter Unidade Organizacional * * @author Ana Maria * @date 24/11/2006 * * @param unidadeOrganizacional * @throws ControladorException */ public void atualizarUnidadeOrganizacional( UnidadeOrganizacional unidadeOrganizacional, Usuario usuario) throws ControladorException { String idUnidade = "" + unidadeOrganizacional.getId(); validaAtualizacaoUnidadeOrganizacional(unidadeOrganizacional); FiltroUnidadeOrganizacional filtroUnidadeOrganizacional = new FiltroUnidadeOrganizacional(); // Seta o filtro para buscar a unidade organizacional na base filtroUnidadeOrganizacional.adicionarParametro(new ParametroSimples( FiltroUnidadeOrganizacional.ID, idUnidade)); // Procura unidade organizacional na base Collection unidadeAtualizadas = getControladorUtil().pesquisar( filtroUnidadeOrganizacional, UnidadeOrganizacional.class.getName()); UnidadeOrganizacional unidadeAtualizada = (UnidadeOrganizacional) Util .retonarObjetoDeColecao(unidadeAtualizadas); if (unidadeAtualizada == null) { sessionContext.setRollbackOnly(); throw new ControladorException( "atencao.registro_remocao_nao_existente"); } // Procura a rota na base UnidadeOrganizacional unidadeNaBase = null; unidadeNaBase = (UnidadeOrganizacional) ((List) (this .getControladorUtil().pesquisar(filtroUnidadeOrganizacional, UnidadeOrganizacional.class.getName()))).get(0); // Verificar se a rota j� foi atualizado por outro usu�rio // durante esta atualiza��o if (unidadeNaBase.getUltimaAlteracao().after( unidadeOrganizacional.getUltimaAlteracao())) { sessionContext.setRollbackOnly(); throw new ControladorException("atencao.atualizacao.timestamp"); } // ------------ REGISTRAR TRANSA��O UNIDADE // ORGANIZACIONAL---------------------------- RegistradorOperacao registradorOperacaoUnidade = new RegistradorOperacao( Operacao.OPERACAO_UNIDADE_ORGANIZACIONAL_ATUALIZAR, new UsuarioAcaoUsuarioHelper(usuario, UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO)); Operacao operacaoUnidade = new Operacao(); operacaoUnidade .setId(Operacao.OPERACAO_UNIDADE_ORGANIZACIONAL_ATUALIZAR); OperacaoEfetuada operacaoEfetuadaUnidade = new OperacaoEfetuada(); operacaoEfetuadaUnidade.setOperacao(operacaoUnidade); unidadeOrganizacional.setOperacaoEfetuada(operacaoEfetuadaUnidade); unidadeOrganizacional.adicionarUsuario(usuario, UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO); registradorOperacaoUnidade.registrarOperacao(unidadeOrganizacional); // ------------ REGISTRAR TRANSA��O UNIDADE // ORGANIZACIONAL---------------------------- // Atualiza a unidadeOrganizacional try { repositorioUnidade .atualizarUnidadeOrganizacional(unidadeOrganizacional); } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } } private void validaAtualizacaoUnidadeOrganizacional( UnidadeOrganizacional unidadeOrganizacional) throws ControladorException { Collection colecaoUnidade = null; // [FS0001] - Verificar exit�ncia da descri��o FiltroUnidadeOrganizacional filtroUnidadeOrganizacional = new FiltroUnidadeOrganizacional(); filtroUnidadeOrganizacional.adicionarParametro(new ParametroSimples( FiltroUnidadeOrganizacional.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO)); filtroUnidadeOrganizacional.adicionarParametro(new ParametroSimples( FiltroUnidadeOrganizacional.DESCRICAO, unidadeOrganizacional .getDescricao())); // Pesquisa de acordo com os par�metros informados no filtro colecaoUnidade = this.getControladorUtil().pesquisar( filtroUnidadeOrganizacional, UnidadeOrganizacional.class.getName()); // Verifica se a pesquisa retornou algum objeto para a cole��o if (colecaoUnidade != null && !colecaoUnidade.isEmpty()) { UnidadeOrganizacional unidadePesquisada = (UnidadeOrganizacional) ((List) colecaoUnidade) .get(0); if (!unidadeOrganizacional.getId() .equals(unidadePesquisada.getId())) { sessionContext.setRollbackOnly(); throw new ControladorException( "atencao.inserir_unidade_organizacional_descricao_ja_existe", null); } } // [FS0002] - Verificar exit�ncia da sigla if (unidadeOrganizacional.getSigla() != null && !unidadeOrganizacional.getSigla().equals("")) { String sigla = unidadeOrganizacional.getSigla(); filtroUnidadeOrganizacional = new FiltroUnidadeOrganizacional(); filtroUnidadeOrganizacional .adicionarParametro(new ParametroSimples( FiltroUnidadeOrganizacional.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO)); filtroUnidadeOrganizacional .adicionarParametro(new ParametroSimples( FiltroUnidadeOrganizacional.SIGLA, sigla)); // Pesquisa de acordo com os par�metros informados no filtro colecaoUnidade = this.getControladorUtil().pesquisar( filtroUnidadeOrganizacional, UnidadeOrganizacional.class.getName()); // Verifica se a pesquisa retornou algum objeto para a cole��o if (colecaoUnidade != null && !colecaoUnidade.isEmpty()) { UnidadeOrganizacional unidadePesquisada = (UnidadeOrganizacional) ((List) colecaoUnidade) .get(0); if (!unidadeOrganizacional.getId().equals( unidadePesquisada.getId())) { sessionContext.setRollbackOnly(); throw new ControladorException( "atencao.inserir_unidade_organizacional_sigla_ja_existe", null); } } } // [FS0003] - Validar Empresa String codigoUnidadeTipo = unidadeOrganizacional.getUnidadeTipo() .getCodigoTipo(); if (codigoUnidadeTipo != null && codigoUnidadeTipo .equals(UnidadeTipo.UNIDADE_TIPO_TERCERIZADO)) { Empresa empresa = unidadeOrganizacional.getEmpresa(); if (empresa.getIndicadorEmpresaPrincipal().equals( ConstantesSistema.SIM)) { throw new ControladorException( "atencao.inserir_unidade_organizacional_terceirizada_associada", null); } } // [FS0006] - Validar Unidade de Esgoto try { String descricaoDivisao = repositorioUnidade .verificarUnidadeEsgoto(unidadeOrganizacional.getId()); if (descricaoDivisao != null && unidadeOrganizacional.getIndicadorEsgoto() == ConstantesSistema.NAO) { throw new ControladorException("atencao.unidade.esgoto", null, descricaoDivisao); } } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } // [FS0007] - Validar Unidade Aceita Tramita��o try { String descricaoSolicitacaoTipoEspecificacao = repositorioUnidade .verificarUnidadeTramitacao(unidadeOrganizacional.getId()); if (descricaoSolicitacaoTipoEspecificacao != null && unidadeOrganizacional.getIndicadorTramite() == ConstantesSistema.NAO) { throw new ControladorException("atencao.unidade.tramitacao", null); } } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } if (unidadeOrganizacional.getUnidadeSuperior() != null && !unidadeOrganizacional.getUnidadeSuperior().equals("")) { // [FS0004] - Validar Unidade Superior Short nivelOrganizacional = unidadeOrganizacional.getUnidadeTipo() .getNivel(); UnidadeOrganizacional unidadeSuperior = unidadeOrganizacional .getUnidadeSuperior(); if (unidadeSuperior == null || unidadeSuperior.equals("")) { throw new ControladorException( "atencao.unidade.organizacional.inexistente", null); } if (nivelOrganizacional != null) { if (unidadeSuperior != null && unidadeSuperior.getUnidadeTipo().getNivel() != null) { Short nivelSuperior = unidadeSuperior.getUnidadeTipo() .getNivel(); SistemaParametro sistemaParametro = Fachada.getInstancia() .pesquisarParametrosDoSistema(); // Caso 3 if (nivelSuperior.intValue() > nivelOrganizacional .intValue()) { if (sistemaParametro .getIndicadorVariaHierarquiaUnidade() != null && sistemaParametro .getIndicadorVariaHierarquiaUnidade() .equals(ConstantesSistema.SIM)) { throw new ControladorException( "atencao.inserir_unidade_organizacional_nivel_hierarquico.deve_ser_menor", null, unidadeSuperior.getUnidadeTipo() .getDescricao()); } else if (sistemaParametro .getIndicadorVariaHierarquiaUnidade() == null || sistemaParametro .getIndicadorVariaHierarquiaUnidade() .equals(ConstantesSistema.NAO)) { throw new ControladorException( "atencao.inserir_unidade_organizacional_nivel_hierarquico.diferente_um", null, unidadeSuperior.getUnidadeTipo() .getDescricao()); } // Caso 4 } else if (nivelSuperior.intValue() < (nivelOrganizacional .intValue() -1) && sistemaParametro .getIndicadorVariaHierarquiaUnidade() != 1 && (nivelOrganizacional.intValue() - nivelSuperior .intValue()) != 1) { throw new ControladorException( "atencao.inserir_unidade_organizacional_nivel_hierarquico", null); } } } } } /** * [UC0375] Manter Unidade Organizacional * * @author Ana Maria * @date 28/11/2006 * * @param unidadeOrganizacional * @throws ControladorException */ public UnidadeOrganizacional pesquisarUnidadeOrganizacional( Integer idUnidadeOrganizacional) throws ControladorException { UnidadeOrganizacional retorno = null; try { retorno = repositorioUnidade .pesquisarUnidadeOrganizacional(idUnidadeOrganizacional); } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } return retorno; } /** * [UC0374] Filtrar Unidade Organizacional * * Pesquisa as unidades organizacionais com os condicionais informados * filtroUnidadeOrganizacional * * @author Ana Maria * @date 30/11/2006 * * @param filtro * @return Collection */ public Collection pesquisarUnidadeOrganizacionalFiltro( FiltroUnidadeOrganizacional filtroUnidadeOrganizacional, Integer numeroPagina) throws ControladorException { Collection colecaoObject = new ArrayList(); Collection colecaoUnidadeOrganizacional = new ArrayList(); try { colecaoObject = repositorioUnidade .pesquisarUnidadeOrganizacionalFiltro( filtroUnidadeOrganizacional, numeroPagina); Iterator iteratorObject = colecaoObject.iterator(); while (iteratorObject.hasNext()) { Object[] arrayObject = (Object[]) iteratorObject.next(); if (arrayObject != null) { UnidadeOrganizacional unidade = new UnidadeOrganizacional(); // id unidade organizacional if (arrayObject[0] != null) { unidade.setId((Integer) arrayObject[0]); } // instancia tipo unidade UnidadeTipo unidadeTipo = new UnidadeTipo(); // id da tipo unidade if (arrayObject[1] != null) { unidadeTipo.setDescricao((String) arrayObject[1]); if (arrayObject[2] != null) { unidadeTipo.setNivel((Short) arrayObject[2]); } unidade.setUnidadeTipo(unidadeTipo); } unidade.setDescricao((String) arrayObject[3]); if (arrayObject[4] != null) { unidade.setIndicadorAberturaRa((Short) arrayObject[4]); } if (arrayObject[5] != null) { unidade.setIndicadorTramite((Short) arrayObject[5]); } colecaoUnidadeOrganizacional.add(unidade); } } } catch (ErroRepositorioException e) { e.printStackTrace(); throw new ControladorException("erro.sistema", e); } return colecaoUnidadeOrganizacional; } public Integer pesquisarUnidadeOrganizacionalFiltroCount( FiltroUnidadeOrganizacional filtroUnidadeOrganizacional) throws ControladorException { try { return repositorioUnidade .pesquisarUnidadeOrganizacionalFiltroCount(filtroUnidadeOrganizacional); } catch (ErroRepositorioException e) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", e); } } /** * Pesquisar unidade organizacional por localidade * * @author S�vio Luiz * @date 03/01/2007 * * @param idLocalidade * @return String * @throws ControladorException */ public UnidadeOrganizacional pesquisarUnidadeOrganizacionalLocalidade( Integer idLocalidade) throws ControladorException { try { return repositorioUnidade .pesquisarUnidadeOrganizacionalLocalidade(idLocalidade); } catch (ErroRepositorioException e) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", e); } } /** * [UC0869] Gerar Arquivo Texto das Contas em Cobran�a por Empresa * * @author Mariana Victor * @date 14/04/2011 */ public UnidadeOrganizacional pesquisarUnidadeOrganizacionalPorImovel( Integer idImovel) throws ControladorException { try { return repositorioUnidade .pesquisarUnidadeOrganizacionalPorImovel(idImovel); } catch (ErroRepositorioException e) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", e); } } }