Technology Convergence

It is a good sign when different teams are attempting to solve the same problem.

The Castle Project has its new Generator contrib project. This is an easy to use extensible code template system written in BOO with asp.net style templates. BOO is a hybrid of Python and C# with some ideas from the Ruby world.

Microsoft has the Guidance Toolkit. This allows the Visual Studio IDE to expanded with macros and recepies.

Both of these approaches are attempts to implement Software Factories, allowing developers to raise the abstraction and reuse. This can only be a good thing. Hopefully one or both will survive.

Code Generation of Stored Procedures with examples

This is an article on code generation of stored procedures with examples.

 

Here is the main outline of the stored procedure generation template

<xsl:stylesheet version=”1.0″ xmlns:xsl=”http://www.w3.org/1999/XSL/Transform”&gt;
<xsl:output method=”text” standalone=”yes”>
<xsl:preserve-space elements=”row”>
<xsl:template match=”/”>

</xsl:template>

</xsl:preserve-space>

</xsl:output>

!— BODY

This is how to construct the insert body.

INSERT INTO <xsl:value-of select=”$name”> (<xsl:for-each select=”columns/row”>
<xsl:value-of select=”@COLUMN_NAME”>
<xsl:if test=”position() != last()”>, </xsl:if>
</xsl:value-of>)
VALUES (<xsl:for-each select=”columns/row”>@<xsl:value-of select=”@COLUMN_NAME”>
<xsl:if test=”position() != last()”>, </xsl:if>
</xsl:value-of>)
</xsl:for-each></xsl:for-each></xsl:value-of>

 

With this as a stub it will be easy to create the script. 

COM ProgIds in C#

This article describes how to add ProgIds to a C# App an expose it as a COM dll.

The key feture was this line.
[GuidAttribute("1F2A0E29-1934-4E2F-8E25-89467D68F3A9"), ProgId("Leszynski.InSpireAddin")]

 The article also includes registration details.

MSBUILD and Codegen

MSBuild and the code generation techniques of Kathleen Dollard seem to fit together very naturally.

MSBuild is a blatant clone of NAnt with the benefit of being the native project file format of VS2005.

Kathleen Dollard promotes the use of code generation (generated code = meta data + templates) using XSLT.

Kathleen has a complex code generation harness that provides configurable one touch code generation.

I feel that this would be more naturally implemented as a set of MsBuild/Nant extensions.

For example the Database Metadata extraction tool would be one task. Stored procedure generation would be another. Code to call the stored procedures would be a third. This would provide the one touch benefit of the generation framework yet allow the pieces to become far more flexible.