Giter VIP home page Giter VIP logo

buildermaster's Introduction

BuilderMaster

Forma de uso

BuilderMaster é uma lib que vai criar Builders para as suas entidades. Utiliza conceitos como DataBuilder, Method Chaining e Fluent Interface.

Para gerar os códigos para uma classe, adicione o jar no classpath do seu código e faça a seguinte chamada:

new BuilderMaster().gerarCodigoClasse(SuaClasse.class);

O código será impresso no console. Feito isso, basta copiar todo o código gerado. Criar uma classe com o nome SuaClasseBuilder e colar o código gerado deixando apenas a declaração do pacote.

Exemplo

Como exemplo, segue o código de uma entidade:

package br.ce.wcaquino.entidades;

public class Usuario {

	private String nome;

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}
}

E agora, o código do builder gerado para a entidade acima:

package br.ce.wcaquino.entidades; //Única linha que não foi gerada pelo BuilderMaster

import java.util.Arrays;
import java.lang.String;
import br.ce.wcaquino.entidades.Usuario;


public class UsuarioBuilder {
	private Usuario elemento;
	private UsuarioBuilder(){}

	public static UsuarioBuilder umUsuario() {
		UsuarioBuilder builder = new UsuarioBuilder();
		inicializarDadosPadroes(builder);
		return builder;
	}

	public static void inicializarDadosPadroes(UsuarioBuilder builder) {
		builder.elemento = new Usuario();
		Usuario elemento = builder.elemento;

		
		elemento.setNome("");
	}

	public UsuarioBuilder comNome(String param) {
		elemento.setNome(param);
		return this;
	}

	public Usuario agora() {
		return elemento;
	}
}

Organização dos arquivos

Esse projeto possui mais classe que o necessário. A única classe para essa geração é a br.ce.wcaquino.buildermaster.BuilderMaster.

As demais classes fazem parte de um projeto para um plugin do Eclipse que você poderia utilizá-la apenas selecionando a classe na árvore estrutural do projeto, e solicitando a geração dos códigos para o builder da entidade selecionada. O código já ficaria disponível na área de transferência.

Porém, para esse trabalho, não era possível utilizar o Reflection do JAVA (java.lang.reflect.*), foi necessário utilizar a lib jdt do eclipse (org.eclipse.jdt.core.*). Essa lib é bem mais complexa que o Reflection com a documentação mais escassa. Consegui fazer funcionar o básico do builder mas não encontrei portar todas as funcionalidades da versão do reflection para o jdt. Por questões de tempo, acabei deixando esse projeto de lado. Abri o projeto atualmente, e não está nem compilando. Não perdi tempo tentando consertá-la, mas deixei o código mesmo assim para fins didáticos... ou caso alguém queira levar o projeto para frente.

buildermaster's People

Contributors

wcaquino avatar

Stargazers

Eliane dos Santos Pereira Silva avatar Leonardo Santos avatar Matheus Gonçalves avatar Gabriel Silva avatar Robson Calixto avatar Marcos Roberto avatar  avatar Guilherme Araujo avatar Ligiane Vieira avatar Wanderson Santiago avatar Alvaro Pereira do Nascimento avatar Samla Tavares avatar Brendo Arcanjo avatar Mateus Silva avatar gus avatar  avatar marcosv23 avatar Rodrigo Lúcio avatar Rayan Salewski avatar  avatar Bruno Zani avatar Thiago Brumer avatar Fellipy Saldanha avatar  avatar  avatar Amanda Bezerra avatar GILSON SILVA avatar Code_GTD_Learn avatar  avatar Matheus Geres avatar Vivian Souza avatar Eduardo sampaio avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.