[OFF-TOPIC] Geração de CRUDs automática no SetupMyProject

Ontem colocamos no ar uma nova versão do SetupMyProject. A maior novidade é que agora você tem a possibilidade de gerar o seu projeto já com um cadastro completo de qualquer entidade que você queira, os famosos CRUDs. Todos nós sabemos fazer um CRUD, isso não é segredo, o problema é o tempo que perdemos para fazer o trabalho. Criar as telas, entidades, daos e validações consomem um certo tempo. Todo o processo é realizado online, como já acontece atualmente, não queremos que você precise instalar nem configurar nada para ter acesso a funcionalidade.

Um decisão que tivemos que tomar foi: como o usuário vai entrar com os dados necessários para que nós possamos gerar o cadastro dele? Com certeza esse não foi um caminho fácil de ser decidido, mas por hora ficamos com a opção da escrita de um xml .

    <models>
	  <model name="Product">
		  <field name='name' type='java.lang.String'/>
		  <field name='description' type='java.lang.String' />
		  <field name='price' type='java.math.BigDecimal' />
       </model>
    </models>

No exemplo acima, solicitamos a geração de um cadastro para uma classe chamada Product e, além disso, especificamos quais são os atributos e tipos que queremos para ela. Para facilitar a escrita do xml, criamos uma documentação no github, além de fazer a validação do xml com um xsd para garantir que a estrutura mínima foi obedecida. Dá para ir um pouco além e gerar cadastros mais completos.

      <models>
         <model name="Product">
		   <field name='name' type='java.lang.String'/>
		   <field name='description' type='java.lang.String' />
		   <field name='price' type='java.math.BigDecimal' />
		   <field name='category' type='Category' javaType='false' formInputType="select" formInputName='category.id' selectLabelField="name" />
         </model>
         <model name="Category">
	        <field name='name' type='java.lang.String' />
	        <field name='description' type='java.lang.String' />
         </model>
      </models>

Na situação acima é informado a necessidade de dois cadastros. Especificamente na tela de produtos, informamos que queremos um select para que o usuário possa escolher a categoria do produto.  Perceba que para as entidades específicas do usuário não é necessário especificar o nome completo da classe, já que ela vai ficar em um pacote chamado models, relativo ao pacote base do projeto. Por exemplo, br.com.empresa.novoprojeto.models.Category. Um próximo passo é suportar que seja gerado uma relação do tipo oneToMany, já que por enquanto a geração automática só suporta relações do tipo ManyToOne. 

Por fim, existem situações onde não queremos a geração de um controller e uma view para cadastro, é o caso de uma entidade do tipo Checkout num sistema de e-commerce. Geralmente esse objeto é gerado a partir de um carrinho de compras. Para esse tipo de situação, basta que seja adicionado o atributo viewController.

      <models>
         <model name="Product">
	       <field name='name' type='java.lang.String'/>
	       <field name='description' type='java.lang.String' />
	       <field name='price' type='java.math.BigDecimal' />
	       <field name='category' type='Category' javaType='false' formInputType="select" formInputName='category.id' selectLabelField="name" />
        </model>
        <model name="Category">
	        <field name='name' type='java.lang.String'/>
	        <field name='description' type='java.lang.String' />
        </model>
        <model name="User">
	        <field name='login' type='java.lang.String'/>
	        <field name='password' type='java.lang.String' />
        </model>
		<model name="Checkout" viewController="false">
	        <field name='value' type='java.math.BigDecimal'/>
	        <field name='user' type='User' javaType="false" />
		</model>
     </models>

Como não poderia deixar de ser, as opções de projetos com SpringMVC direto e Spring Boot já suportam a geração de CRUDs. Ficaremos muito felizes se vocês puderem ir lá e testar :). Aproveitando o espaço, também geramos cadastros para projetos baseados em JSF 2.2 e VRaptor 4, tem para todo gosto. Um último toque que adicionamos foi a geração do readme do projeto, para os passos finais de configuração dos plugins que foram selecionados :).

Para tentar ficar mais perto do desenvolvimento do projeto, e não só do começo, a nossa próxima feature é que você consiga gerar configurações de plugins, ou cadastros adicionais, para projetos que já estão em andamento!

Advertisements

One thought on “[OFF-TOPIC] Geração de CRUDs automática no SetupMyProject

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s