Compartilhe esta idéia! O melhor Blog de JCompany do Brasil! Utilize os comentários também para tirar dúvidas e compartilhar com seus amigos!
quinta-feira, 10 de março de 2011
Repositório Maven - Questão de Prova!
O Apache Maven é a principal ferramenta de gerenciamento de configuração e também de automação dos processos de compilação, construção e liberação, utilizada pelo jCompany Configuration Management.
O Maven deve ser utilizado pela empresa para um controle refinado de versões, gerenciando bibliotecas de componentes específicos e reutilizáveis por cada aplicação. É também utilizado em maior extensão pelo jCompany QA Suite, que possui especializações em plugins Maven para a área de controle de qualidade. Veremos um pouco mais sobre Maven quando formos compreender a estrutura padrão dos pacotes (packages) que compõem as aplicações e rotinas de liberação – vamos, por enquanto, apenas entender a estrutura básica de seu repositório.
O repositório Maven contém todos os componentes homologados para utilização em projetos jCompany, em diferentes momentos: Componentes para uso em “tempo de compilação” apenas. Neste caso, os componentes não precisam ser montados no executável da aplicação (não compõem o executável da aplicação), mas apenas referenciados pelo Class Path dos projetos do Eclipse. Normalmente, é o caso das APIs Java EE (javaee-5.jar, mail.jar, servlet.jar, etc.) ou clientes JMS (jboss*.jar), que já existem ou devem ser montados diretamente no Application Server.
Hibernate Console - Questão de Prova!
Hibernate Console permite a configuração de uma fábrica Hibernate local, para testes e codificação assistida de HQL. Verifica também a sintaxe dos HQLs embutidos em códigos Java, dentre outros recursos.
Ajuda On-Line JCompany integrada no Eclipse
Pessoal, aprender a utilizar bem a Ajuda On-Line é como “aprender a pescar” conhecimentos. Uma das formas de configurar a Ajuda On-line para nos permitir uma busca textual restrita à metodologia e base de conhecimento do jCompany, e fazendo uma pesquisa-modelo:
É muito simples, e vai ajudar a tirar as dúvidas dentro do Eclipse!
1. Acionar o menu “Help -> Help Contents”
2. Na página principal do Help On-Line, clicar em “Search Scope”. No diálogo “New Search List”, digitar “Powerlogic” em “List name” e selecionar o tópico “Powerlogic jCompany” na lista.
Validações invariáveis Nativas do Hibernate
| Anotação | Objetivo | Exemplo |
| @NotNull | O campo deve ser informado. Obs: considera “” (String vazio) como informado! | @NotNull private String nome; |
| @Length(min=, max=) | O valor do campo String deve ter comprimento no intervalo | @Length(min=3,max=30) private String nome; |
| @Max(value=) | O valor do campo Numérico (ou String representando números) deve ser menor ou igual ao informado. | @Max(value=100) private Integer percent; |
| @Min(value=) | O valor do campo Numérico (ou String representando números) deve ser maior ou igual ao informado. | @Min(value=0) private Integer percent; |
| @Past | O valor do campo Data deve ser uma data no passado | @Past private Date dataNasc; |
| @Future | O valor do campo Data deve ser uma data no futuro | @Future private Date dataPrevista; |
| @Pattern(regex="regexp", flag=) | O valor do campo String deve seguir a expressão regular. | @Pattern(regex="^\\d{5}(-\\d{3})?$") private String cep; |
| @Range(min=, max=) | O valor do campo Numérico (ou String representando números) deve estar no intervalo informado. | @Range(min=0,Max=100) private Integer percent; |
| @Size(min=, max=) | O número de itens do campo Coleção deve estar no intervalo informado. | @Size(min=1,Max=5) private Set dependente; |
| @AssertFalse | Verifica se o método anotado retorna false. Para regras de entrada procedimentais que devem dar falso | @AssertFalse public boolean validaLimiteProibido() { (...) } |
| @AssertTrue | Verifica se o método anotado retorna true. Para regras de entrada procedimentais que devem dar verdadeiro. | @AssertTrue public boolean validaLimitePermitido() { (...) } |
| @Valid | Propaga a validação para Detalhes ou Componentes | @Valid private Set dependente; |
| @Email | Se o email segue formato válido | @Email private String email; |
Questão da prova de certificação
| Anotação | Objetivo | Exemplo |
| @PlcObrigatorio | O campo deve ser informado. Obs: Melhora o NotNull do Hibernate porque considera “” (String vazio) ou espaços como não informado, no caso de campo String! | @PlcObrigatorio private String nome; |
| @PlcCnpj | Valida o campo String com um CNPJ válido (*) | @PlcCnpj private String cnpj; |
| @PlcCpf | Valida o campo String com um CPF válido (*) | @PlcCpf private String cpf; |
| @PlcMascara( regex="regexp") | Igual ao Pattern, porém revisa a mensagem padrão, que no primeiro caso exibe a expressão regular para usuários finais, e permite um exemplo mais simples para este fim. | @PlcMascara(regex= "^\\d{5}(-\\d{3})?$", messageExemploFormatado= "99999-999") private String cep; |
| @PlcTamanhoExato(tam=) | Mais apropriada que o Range ou Min/Max, quando o tamanho do campo deve ser exatamente de um valor determinado, por dar mensagem mais apropriada. | @PlcTamanhoExato(tam=2) private String uf; |
| @PlcDominioCondicional | Permite validação entre campos, com diversas opções de operadores Declarada em nível da classe. (**) | @PlcDominioCondicional( valorPropA="numeroMinimo", operador=Operador.MENOR_OU_IGUAL, valorPropB="numeroMaximo", message="{rh.msg.min.maior}") public class FaixaValor { (…) } |
| @PlcObrigatorioCondicional | Permite validação de obrigatoriedade com dependência entre campos. Declarada em nível da classe. (**) | @PlcObrigatorioCondicional( se=Se.INFORMOU_QUALQUER, propA="rua", entao=Entao.INFORMAR_QUALQUER_EM, propB="numero") public class Funcionario { (…) } |
| @PlcMultiplicidade | Permite a validação de número mínimo e máximo de detalhes e sub-detalhes. O uso do Size da Hibernate é inviável, porque considera linhas em branco e não contabiliza linhas marcadas para exclusão (***) | @PlcMultiplicidade(min=1,max=3, message="{jcompany.aplicacao.mestredetalhe. multiplicidade.HistoricoProfissionalVO}") private Set |
sexta-feira, 4 de março de 2011
Inversão de Controle no jCompany - Após Autenticação (Lógicas de Profiling)
O jCompany traz a classe abstrata PlcBaseUsuarioPerfilService, que deve ser especializada para tratamentos de perfil de usuário, ‘após a autenticação’.
A classe PlcRequestProcessor (Struts) ou PlcPhaseListener (JSF), testam se a sessão está recém autenticada (usuário fez login mas seu perfil ainda não está na sessão) e, em caso positivo, chama uma implementação concreta da classe PlcBaseUsuarioPerfilService, que deve encapsular lógicas de “user profiling”, ou seja, de registro de perfil de usuários na sessão HTTP.
Nota: Uma sessão HTTP é iniciada antes que o usuário seja autenticado, e pode inclusive existir e se encerrar sem que haja autenticação (sessão para usuários anônimos). O evento “aoInicializarSessao”, portanto, não é adequado para a implementação de lógicas de perfil de usuários. Estas lógicas devem ser feitas uma única vez após o login, tipicamente para recuperação e registro, em registrar dados em caching de sessão, contendo informações do usuário recém autenticado.
Após a autenticação, o jCompany:
- Faz um registro de auditoria do tipo “autenticação do usuário X” usando JMS
- Faz um registro de estatística “num. de logins do usuário X” usando JMS
- Logging
- Altera o timeout para usuários autenticados, se declarado no web.xml
- Cria um VO que contém informações do login (por default, contendo somente o login em si), que será enviado em todas as requisições para a camada modelo via DP Context Object)
- Chama método/evento abstrato “registraPerfilEspecifico”
Caracteristicas da Suite JCompany
Automação indireta (Ferramentas): Quando não é possível “robotizar”, a provisão de ferramentas apropriadas pode maximizar o trabalho humano. Em software, como em qualquer processo industrial, ferramentas de apoio para geração de artefatos, construção e liberação de executáveis, edições, etc.., automatizam tarefas intermediárias, acelerando a codificação manual de programas. É a área de atuação do jCompany IDE.
Orientação: Quando o trabalho é meramente intelectual, e mesmo o uso de ferramentas arrojadas não proveja ganhos significativos, a orientação na forma de repasse de experiências e padrões históricos de solução (best-practices) é a forma de se maximizar resultados. Em software, como em qualquer processo industrial, a definição de “padrões de solução” para problemas freqüentes, documentação extensiva e roteiros “passo a passo” ativos e inteligentes, podem orientar os profissionais decisivamente, na codificação manual de programas. É a área de atuação do jCompany Patterns e Methods.
Conferência (Controle de Qualidade): A “dupla checagem” da qualidade dos produtos intermediários de um processo evita desperdício e inclusive a liberação de resultados indesejáveis ao mercado. Em software, a codificação de Testes de Unidade funciona como uma área de controle de qualidade que permeia o processo, garantindo continuamente que a codificação manual de segmentos de programas esteja em conformidade. É a área de atuação do jCompany Test for Developer.
Infra-Estrutura (Manutenção e Preservação): Um ambiente de produção que envolva tecnologia nos vários âmbitos citados, necessitará de uma contínua monitoria para garantir a “lubrificação”, “fluidez” e “estabilidade” da bancada tecnológica utilizada. Em software, como em qualquer ambiente de produção industrial, para evitar quedas de
rendimento, a infra-estrutura de suporte tecnológico ao processo precisa se manter estável e integra, ao longo do tempo. É a área de atuação do jCompany Configuration Management.
Dimensões de atuação da Suite do JCompany
- JCompany Full Stack Framework
- JCompany Configuration Management
- JCompany Test for Developer
- JCompany Patterns e Methods
