domingo, 5 de janeiro de 2014

Geradores de Código em Java - Otimize seu tempo, Economize Dinheiro e Melhore sua Qualidade - Parte 5

Comentários para Colunas Chave Estrangeira


O comentário para coluna chave estrangeira obedece a seguinte estrutura <NOME_ATRIBUTO_JAVA>:<NOME_NA_TELA>:<OPERADOR_PESQUISA>:<CAMPO_MOSTRADO_NA_COMBO>:<TIPO_COMBO_OU_LUPA>:<REPORT>:<TABELA_AUTOCOMPLETE>, em que:
  • NOME_TABELA - é o nome da tabela no banco de dados;
  • NOME_COLUNA - é o nome da coluna;
  • NOME_ATRIBUTO_JAVA - é o nome que será usado como atributo no Java;
  • NOME_NA_TELA - é o nome que será apresentado nas telas do Sistema;
  • OPERADOR_PESQUISA - é o operador de pesquisa desejado
  • CAMPO_MOSTRADO_NA_COMBO - campo mostrado na combo
  • TIPO_COMBO_OU_LUPA - deve ser informado o tipo de relacionamento com a tabela relacionada. Os valores podem ser combo ou lupa.

No exemplo mostrado abaixo é apresentado um tipo combo gerado a partir do comentários “projeto:Projeto:=:descricao:combo”.

 Ilustração 9: Campo Gerado para Coluna Chave Estrangeira

Exemplo de Código Gerado

Uma vez criado o template, todos os códigos serão gerados da mesma forma e sem erros, e qualquer alteração ou evolução pode ser feita no template e isto permitirá que os novos códigos gerados sigam o novo padrão. Abaixo é mostrado parte de um código gerado.

package gov.tjpr.gen.entity;

import gov.tjpr.entity.PersistableEntity;
import javax.persistence.*;
import java.text.Normalizer;
import java.util.Date;

@Entity
@Table(name="tbatividade", schema="public")

@SequenceGenerator(name = "SEQUENCE", sequenceName="public.tbatividade_idatividade_seq", allocationSize=1)
public class Atividade implements PersistableEntity<Integer>{

private static final long serialVersionUID = 1L;

@ManyToOne
@JoinColumn(name = "idprojeto")
private Projeto projeto;
@ManyToOne
@JoinColumn(name = "idrecurso")
private Recurso recurso;
@ManyToOne
@JoinColumn(name = "idtipoatividade")
private TipoAtividade tipoAtividade;
@Column(name="data")
private Date data;
@Column(name="qtdhora")
private Double qtdHora;
@Column(name="descricao")
private String descricao;
@Id
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="SEQUENCE")
@Column(name="idatividade")
private Integer id;
// GETTERS AND SETTERS
...
}

Quadro 3: Exemplo de Código Gerado a partir do Banco de Dados e Template

Considerações finais

Conclui-se que a geração de código permite diminuir muito o tempo de desenvolvimento, melhorar a qualidade do software, reservar tempo para atividades mais nobres e desafiadoras, padronizar o código e diminuir a curva de conhecimento de novos funcionários. Todos estes elementos contribuem para a diminuição de custos e tempo de entregas de projetos dentro das empresas.
Um gerador de código customizado vai ao encontro das tecnologias legadas e novas de uma grande empresa permitindo independência em relação a um fornecedor, diminuindo os custos de aquisição e treinamento caso fosse adquirido um gerador de mercado.
Além disso, a estrutura genérica de classes apresentadas, são de livre acesso e sem custos, com funcionalidades bem definidas que são suficientes para gerar códigos muito sofisticados como apresentados neste trabalho.

Referências bibliográficas

AMBLER, S.W. Mapping Objects to Relational Databases. An AmbySoft Whitepaper. AmbySoft Inc. 1997. Disponível em: <http://www.agiledata.org/essays/mappingObjects.html>. Acesso em: 24 abril 2012.

AMBLER, Scott. Agile Modeling: Effective Practices for eXtreme Programming and
the Unified Process. WILEY COMPUTER PUBLISHING, 2002.

HERRINGTON, Jack. Code Generation in Action. MANNING, 2003.

SCHVEPE, CLAUDIO. GERADOR DE CÓDIGO JAVA A PARTIR DE ARQUIVOS DO ORACLE FORMS 6I. 2006. Trabalho de Conclusão de Curso de Ciência da Computação, Universidade Regional de Blumenau, Blumenau. Disponível em: <http://www.bc.furb.br/docs/MO/2008/330687_1_1.PDF>. Acesso em: 29 março 2012.

Nenhum comentário:

Postar um comentário