Ir para o conteúdo

 Voltar a Jaguar - Des...
Tela cheia

Atualizar combo dinâmica

12 de Março de 2011, 11:54 , por Desconhecido - | 1 Pessoa seguindo este artigo.
Visualizado 11 vezes
Olá a todos!

Observando o arquivo de configuração package-info.java em meuprojeto_comuns, percebi que o Jaguar carrega as depedencias baseada na propriedade classeLookup de @PlcConfigGrupoAgregacao:

@PlcConfigGrupoAgregacao(
        entidade = br.com.meusistema.entidade.MinhaClasseEntity.class,
        classesLookup = {br.com.meusistema.entidade.MinhaClasseAgregadaEntity.class},
        padrao = @PlcConfigPadrao(logica = PlcConfigPadrao.Logica.CRUD,
                                    complexidade = PlcConfigPadrao.Complexidade.SIMPLES,
                                    exclusaoModo = PlcConfigPadrao.ExclusaoModo.FISICA)

 

Assim se o campo da classe agregada for uma combo dinâmica, esse carregamento será feito no início da aplicação e gerenciado pelo Jaguar em cache, . Minha dúvida é a seguinte:


É possível alterar a carga dos dados da combo em tempo de execução? Gostaria de fazer algo no momento da carga das configurações personalizadas do usuário. Exemplo: o usuário A só tera acesso a uma combo dinâmica contento os perfis AreaTecnica e Usuarios, enquanto o usuário B poder ver a combo com todos os perfis disponíveis. Obrigado
 

Autor: Wagner Petronio de Sousa Abreu


1Um comentário

  • 591f98d33b38bf56ff639b6e6732c23d?only path=false&size=50&d=404Wagner Petronio de Sousa Abreu(usuário não autenticado)
    12 de Março de 2011, 16:06

     

    Resolvido!

     

    Encontrei uma classe utilitária para campos lookup, PlcClasseLookupUtil. Achava que se a injetasse daria certo, mas algum ponto da documentação disse que ela só servia para cruds tabulares; logo, o método getClasseLookupUtil() sempre me retornaria nulo. Foi ai que estendi essa classe, AppClasseLookupUtil e sobrescrevi o método defineClasseLookupNoCache como segue:

        public void defineClasseLookupNoCache(Class classeLookup, List listaVOs) {
            // Garante que nunca é nula (primeira vez), para não cancelar
            // hashmap do cache
            if (listaVOs == null) {
                listaVOs = new ArrayList();
            }

            try {
                //Só sobrescrevi por causa disso
                if (entityComunsUtil == null) {
                    entityComunsUtil = new PlcEntityComunsUtil();
                }
                // POJOs devem sempre ter package e não serem homonimos, então usa o
                // padrão listaSel<nome-sem-package> para o cache
                String nomeSemPackage = entityComunsUtil
                        .obtemNomeClasseSemPacote(classeLookup.getName());

                if (log.isDebugEnabled()) {
                    log.debug("Vai adicionar para chave="
                            + PlcConstantes.LOOKUP.PREFIXO_LOOKUP + nomeSemPackage
                            + " total de " + listaVOs.size() + " registros");
                }

                PlcCacheUtil cacheUtil = (PlcCacheUtil) PlcCDIUtil.getInstance()
                        .getInstanceByType(PlcCacheUtil.class,
                                QPlcDefaultLiteral.INSTANCE);

                cacheUtil.adicionaObjeto(PlcConstantes.LOOKUP.PREFIXO_LOOKUP
                        + nomeSemPackage, listaVOs);

                if (listaVOs != null) {
                    log.debug("###### Carregou para lookup: " + classeLookup
                            + " com total de " + listaVOs.size() + " registros");
                }

            } catch (PlcException e) {
                e.printStackTrace();
            }

        }
     

    Ai fiz um pequeno teste no construtor do meu Action como segue:

    List<MeuEntity> listaMeuEntity = new ArrayList<MeuEntity>();

    listaMeuEntity.add(algumacoisa1);

    listaMeuEntity.add(algumacoisa2);

    AppClasseLookupUtil util = new AppClasseLookupUtil();

                util.defineClasseLookupNoCache(MeuEntity.class,
                        listaMeuEntity);

     

    Feito! A combo dinâmica atualiza na hora da chamada do Action.

     Se faltou um pouco de elegância nesse código, estou aberto a sugestões.

Lançamento do Jaguar 6.1 eminente...

6 de Maio de 2012, 8:13, por Desconhecido

O Jaguar 6.1 traz um grande leque de inovações dentre eles os exclusivos Jaguar Extensions, que possibilitam que plugins de arquitetura sejam criados com elegância através de técnicas de OCP (Open/Closed Principle). Este mecanimo possibilita que as implementações hiper-produtivas para Padrões de Caso de Uso de alto nível do Jaguar sejam expandidas através de componentes que encapsulam novos padrões, tanto para a parte OO (framework) quanto de geração de código complementar!



Evento Jaguar em Brasília, no dia19/10

3 de Outubro de 2011, 9:34, por Desconhecido

Quem estiver em Brasília no dia 19/10 não deixe de investir uma manhã neste evento, que é bem prático (mão na massa para desenvolver uma aplicação "do zero" com Java EE 6 / Jaguar) e traz insights importantes sobre tendências para a próxima década (BPMN 2.0, CMIS, Web Mobile com HTML5, etc.), implementados via Jaguar Extensions.



Ibrowse lança ferramenta de migração dos aplicativos desenvolvidos em Oracle Forms/Reports para o ambiente Jaguar

19 de Agosto de 2011, 16:37, por Desconhecido

A ferramenta lançada é o Telescope for Jaguar na modalidade SaaS, que visa a automação no processo de migração dos aplicativos desenvolvidos em Oracle Forms/Reports para o ambiente Java EE 6 na arquitetura Jaguar, que é uma das soluções do Portal do Software Publico.



Treinamento Jaguar em Brasília

27 de Julho de 2011, 14:47, por Desconhecido

Autor: Anna Carolina Duarte



A Ibrowse em parceria com a Universidade Luterana do Brasil (ULBRA) realiza o 1º curso de extensão em Jaguar

11 de Julho de 2011, 15:35, por Desconhecido

Autor: Justino Paulo