<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://community.codesmithtools.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Jeff Gonzalez</title><link>http://community.codesmithtools.com/blogs/jgonzalez/default.aspx</link><description /><dc:language>en</dc:language><generator>CommunityServer 2008 SP1 (Build: 30619.63)</generator><item><title>Tips &amp; Tricks: CodeSmith Maps</title><link>http://community.codesmithtools.com/blogs/jgonzalez/archive/2007/06/09/tips-amp-tricks-codesmith-maps.aspx</link><pubDate>Sun, 10 Jun 2007 04:01:00 GMT</pubDate><guid isPermaLink="false">829aebef-9208-4531-832e-1f916c1e97cb:25107</guid><dc:creator>shannon</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://community.codesmithtools.com/blogs/jgonzalez/rsscomments.aspx?PostID=25107</wfw:commentRss><comments>http://community.codesmithtools.com/blogs/jgonzalez/archive/2007/06/09/tips-amp-tricks-codesmith-maps.aspx#comments</comments><description>&lt;div&gt;CodeSmith Maps allow developers to reduce the amount of plumbing code in their templates and increase the readability and re usability at the same time. Maps provide a named dictionary like semantic to template development.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;While developing templates, a common scenario developers face is accessing a lookup list based on some sort of information. A common example is a mapping between CLR data types and SQL Server data types. Before CodeSmith maps, this functionality would have been accomplished by writing a method with a switch/Select Case statement.&lt;br /&gt;&lt;br /&gt;Before CodeSmith Maps, your template code might contain methods like this:&lt;br /&gt;&lt;br /&gt;
&lt;div style="PADDING-RIGHT:0pt;PADDING-LEFT:0pt;FONT-SIZE:10pt;FLOAT:left;PADDING-BOTTOM:0pt;MARGIN:0pt;WIDTH:30px;PADDING-TOP:0pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;,Courier,monospace;TEXT-ALIGN:right;"&gt;1&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;2&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;3&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;4&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;5&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;6&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;7&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;8&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;9&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;10&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;11&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;12&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;13&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;14&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;15&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;16&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;17&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;18&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;19&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;20&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;21&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;22&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;23&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;24&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;25&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div style="FONT-SIZE:10pt;MARGIN:0pt 35px;FONT-FAMILY:&amp;#39;Courier New&amp;#39;,Courier,monospace;"&gt;
&lt;div style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;,Courier,monospace;"&gt;&lt;span class="keyword"&gt;public&lt;/span&gt;&amp;nbsp;String&amp;nbsp;GetFrameworkType(ColumnSchema&amp;nbsp;column&lt;img style="VERTICAL-ALIGN:bottom;" alt="wrap glyph" src="http://www.zedilabs.com/wrapglyph.png" /&gt;&lt;br /&gt;)&amp;nbsp; &lt;br /&gt;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;switch&lt;/span&gt;(column.DataType)&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;case&lt;/span&gt;&amp;nbsp;DbType.AnsiString:&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;case&lt;/span&gt;&amp;nbsp;DbType.AnsiStringFixedLength: &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;case&lt;/span&gt;&amp;nbsp;DbType.String: &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;case&lt;/span&gt;&amp;nbsp;DbType.StringFixedLength:&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;return&lt;/span&gt;&amp;nbsp;&lt;span class="quotedstring"&gt;&amp;quot;String&amp;quot;&lt;/span&gt;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;case&lt;/span&gt;&amp;nbsp;DbType.Binary: &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;return&lt;/span&gt;&amp;nbsp;&lt;span class="quotedstring"&gt;&amp;quot;Byte[]&amp;quot;&lt;/span&gt;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;case&lt;/span&gt;&amp;nbsp;DbType.Boolean:&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;return&lt;/span&gt;&amp;nbsp;&lt;span class="quotedstring"&gt;&amp;quot;Boolean&amp;quot;&lt;/span&gt;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;case&lt;/span&gt;&amp;nbsp;DbType.Byte:&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;return&lt;/span&gt;&amp;nbsp;&lt;span class="quotedstring"&gt;&amp;quot;Byte&amp;quot;&lt;/span&gt;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;case&lt;/span&gt;&amp;nbsp;DbType.Currency: &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;case&lt;/span&gt;&amp;nbsp;DbType.Decimal: &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;case&lt;/span&gt;&amp;nbsp;DbType.VarNumeric:&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;return&lt;/span&gt;&amp;nbsp;&lt;span class="quotedstring"&gt;&amp;quot;Decimal&amp;quot;&lt;/span&gt;;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;CodeSmith Map files allow us to create named Maps using the new Map Editor like this:&lt;br /&gt;&lt;img src="http://community.codesmithtools.com/photos/tutorials/images/24225/original.aspx" alt="" /&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style="FONT-SIZE:11pt;LINE-HEIGHT:115%;FONT-FAMILY:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;Once we have saved this mapping file (using the .csmap extension), we can reference it in our template using &lt;span&gt;&amp;nbsp;&lt;/span&gt;the Map directive.&lt;span&gt;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&amp;lt;%@ Map &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Name=&amp;quot;SqlToClrTypes&amp;quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; src=&amp;quot;Sql-System.csmap&amp;quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Description=&amp;quot;A Mapping of SQL Server data types to .NET Framework data types&amp;quot; %&amp;gt;&lt;br /&gt;&lt;br /&gt;BigInt:&amp;lt;%=SqlToClrTypes[&amp;quot;bigint&amp;quot;]%&amp;gt;&lt;br /&gt;Binary:&amp;lt;%=SqlToClrTypes[&amp;quot;binary&amp;quot;]%&amp;gt;&lt;br /&gt;Bit:&amp;lt;%=SqlToClrTypes[&amp;quot;bit&amp;quot;]%&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This code would result in the following output:&lt;br /&gt;BigInt:System.Int64&lt;br /&gt;Binary:System.Object&lt;br /&gt;Bit:System.Boolean&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:11pt;LINE-HEIGHT:115%;FONT-FAMILY:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;Another scenario might involve mapping .NET Framework types to specific server control types.&lt;span&gt;&amp;nbsp; &lt;/span&gt;For example, on one project you might be required to use the standard ASP.NET server controls such as TextBox, DropDownList, or Menu, but another project might require ASP.NET Ajax controls.&lt;span&gt;&amp;nbsp; &lt;/span&gt;CodeSmith Maps allow you to write the code for your interface pages one time, but interchange mapping references to produce different results.&lt;span&gt;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;There are countless scenarios where CodeSmith Maps can drastically reduce the amount of effort needed during template development.&lt;/span&gt;&lt;br /&gt;&lt;span style="FONT-SIZE:11pt;LINE-HEIGHT:115%;FONT-FAMILY:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://community.codesmithtools.com/aggbug.aspx?PostID=25107" width="1" height="1"&gt;</description><category domain="http://community.codesmithtools.com/blogs/jgonzalez/archive/tags/Tips+_2600_amp_3B00_+Tricks/default.aspx">Tips &amp;amp; Tricks</category></item><item><title>My new-new job</title><link>http://community.codesmithtools.com/blogs/jgonzalez/archive/2007/03/25/my-new-new-job.aspx</link><pubDate>Mon, 26 Mar 2007 01:31:00 GMT</pubDate><guid isPermaLink="false">829aebef-9208-4531-832e-1f916c1e97cb:25052</guid><dc:creator>MsCorEE : codesmith</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://community.codesmithtools.com/blogs/jgonzalez/rsscomments.aspx?PostID=25052</wfw:commentRss><comments>http://community.codesmithtools.com/blogs/jgonzalez/archive/2007/03/25/my-new-new-job.aspx#comments</comments><description>I almost forgot...I start my new job tomorrow. It is at a little place you might have heard of... CodeSmith Tools ! Eric and I have been wanting to work together for awhile now, but the timing always seemed off. I am excited to be working there, not only...(&lt;a href="http://community.codesmithtools.com/blogs/jgonzalez/archive/2007/03/25/my-new-new-job.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://community.codesmithtools.com/aggbug.aspx?PostID=25052" width="1" height="1"&gt;</description><category domain="http://community.codesmithtools.com/blogs/jgonzalez/archive/tags/new+job/default.aspx">new job</category><category domain="http://community.codesmithtools.com/blogs/jgonzalez/archive/tags/codesmith/default.aspx">codesmith</category></item></channel></rss>