Angel "Java" Lopez

NET, Java, PHP y Desarrollo de Software

This Blog

Syndication

Search

Tags

Community

Email Notifications

Archives

.NET

ASP.NET

Windows Form

VB.NET

C#

Sitios

Blogs

Armando una aplicación usando AjGenesis (Parte 5)

Publiqué un nuevo paso en esta serie de post sobre cómo ir generando una aplicación con AjGenesis. Anteriores posts:

Building An Application Using AjGenesis (Part 1)
Armando una Aplicación usando AjGenesis (Parte 1)
Building An Application Using AjGenesis (Part 2)
Armando una Aplicación usando AjGenesis (Parte 2)
Building an Application Using AjGenesis (Part 3)
Armando una Aplicación usando AjGenesis (Parte 3)
Building an Application Using AjGenesis (Part 4)
Armando una Aplicación usando AjGenesis (Parte 4)
Building an Application Using AjGenesis (Part 5)

El código puede ser bajado desde AppExampleStep05. El ejemplo:

Como en los anteriores ejemplos, necesitamos los últimos binarios de AjGenesis. Podemos bajarlo desde AjGenesisTrunkBinaries.zip. (el código fuente completo está en el repositorio de AjGenesis en Codeplex). Tienen que agregar el directorio bin al path, para ejecutar el ejemplo.

En el directorio raíz, seguimos teniendo los mismos tres comando que en el anterior post.

GenerateCSharp.cmd
GenerateJava.cmd
GenerateVbNet.cmd

El modelo es el mismo. Pero se agregaron los nuevos Tasks/GenerateCSharp.ajg, Tasks/GenerateVbNet.ajg. Ahora, podemos generar una solución .NET y proyecto. Este es el nuevo GenerateCSharp.ajg:

IncludeCode "Utilities/Utilities.ajg"
IncludeCode "Utilities/DotNetUtilities.ajg"
' Create Build Directories
FileManager.CreateDirectory(Project.BuildDirectory)
FileManager.CreateDirectory("${Project.BuildDirectory}")
FileManager.CreateDirectory("${Project.BuildDirectory}/${Project.Name}.Entities")
FileManager.CreateDirectory("${Project.BuildDirectory}/${Project.Name}.Entities/Properties")
Project.Solution = CreateObject()
Project.Solution.Guid = "FAE04EC0-301F-11D3-BF4B-00C04F79EFBC"
Project.Solution.WebGuid = "E24C65DC-7377-472B-9ABA-BC803B73C61A"
Project.Solution.Projects = CreateList()
PrjEntities = CreateObject()
PrjEntities.Name = "${Project.Name}.Entities"
PrjEntities.Directory = "${Project.BuildDirectory}/${Project.Name}.Entities"
PrjEntities.Includes = CreateList()
PrjEntities.Projects = CreateList()
PrjEntities.Libraries = CreateList()
PrjEntities.Guid = CreateGuid()
PrjEntities.COMGuid = CreateGuid()
Project.Solution.Projects.Add(PrjEntities)
for each Entity in Project.Model.Entities
  TransformerManager.Transform("Templates/CSharp/EntityClass.tpl", "${Project.BuildDirectory}/${Project.Name}.Entities/${Entity.Name}.cs", Environment)
  PrjEntities.Includes.Add(CreateFileCs("${Entity.Name}"))
end for
for each CsProject in Project.Solution.Projects
  TransformerManager.Transform("Templates/CSharp/CsProject.tpl", "${CsProject.Directory}/${CsProject.Name}.csproj", Environment)
  TransformerManager.Transform("Templates/CSharp/AssemblyInfoCs.tpl", "${CsProject.Directory}/Properties/AssemblyInfo.cs", Environment)
end for
TransformerManager.Transform("Templates/CSharp/Solution.tpl", "${Project.BuildDirectory}/${Project.Name}.sln", Environment)

Muchas cosas nuevas! Pero el punto principal es: ahora, generamos un archivo de solución y un archivo de proyecto. Hay nuevos archivos de funciones utilitarios, y nuevos templates. Notemos la creación del objeto dinámico Project.Solution y de PrjEntities. Ver el CreateObject() y el CreateList() en Utilities/Utilities.ajg.

La solución generada en C#:

Una solución y proyecto es generado para VB.NET, también:

La generación de Java sigue igual que en el anterior post.

Próximos pasos: no generar de nuevo los archivos que no cambiaron, permitir archivos de código manual en los proyectos y mantenerlos luego de una nueva generación; nuevos proyectos (persistencias, interfaz de web, …)

Recuerden: hay otro camino para armar una aplicación, lo comenté en AjGenetizando una aplicación: partir de una aplícación ya armada, y comenzar a abstraer desde ahí, y hasta iterar: generar manual, abstraer, poner en generación automática, mantener lo manual, etc…. En cambio, esta serie de posts pretende ser un tutorial para quien recién se inicia con esta herramienta.

Nos leemos!

Angel “Java” Lopez
http://www.ajlopez.com
http://twitter.com/ajlopez

Published Tue, Sep 14 2010 9:57 by lopez

Comments

# Armando una aplicación usando AjGenesis (Parte 6)@ Thursday, October 07, 2010 3:35 AM

En el post anterior de esta serie, agregué mucho código para manejar la generación de proyectos y soluciones

Angel "Java" Lopez

Leave a Comment

(required) 
(required) 
(optional)
(required) 
If you can't read this number refresh your screen
Enter the numbers above: