Main.cst 入口程序

  1<%-- 
  2Name:
  3Author: 
  4Description: 
  5--%>
  6<%@ CodeTemplate Language="C#" ResponseEncoding="UTF-8" TargetLanguage="Text" Src="Helper.cs" Inherits="Helper" Debug="False" Description="Template description here."%>
  7
  8<%@ Assembly Name="CodeSmith.CustomProperties" %>
  9<%@ Assembly Name="CodeSmith.BaseTemplates" %> 
 10<%@ Assembly Name="System.Data" %>
 11<%@ Assembly Name="SchemaExplorer" %>
 12<%@ Assembly Name="System.Design" %>
 13
 14<%@ Import Namespace="System.Data" %>
 15<%@ Import Namespace="SchemaExplorer" %>
 16<%@ Import Namespace="System.Text" %>
 17<%@ Import Namespace="System.IO" %>
 18
 19<%@ Property Name="DataBase" Type="SchemaExplorer.DatabaseSchema" Category="" Description="当前生成的数据库对象" %>
 20<%@ Property Name="NameSpace" Type="System.String" Default="" Optional="false" Category="" Description="当前生成命名空间" %>
 21<%@ Property Name="ProjectName" Type="System.String" Default="" Optional="false" Category="" Description="项目名称" %>
 22<%@ Property Name="ModuleName" Type="System.String" Default="" Optional="false" Category="" Description="项目名称" %>
 23<%@ Property Name="AutoExecuteScript" Type="System.Boolean" Default="False" Category=""
 24    Description="是否自动执行生成后的脚本" %>
 25    
 26<%@ Register Name="AbstractProvider" Template="AbstractProvider.cst"%>    
 27<%@ Register Name="BusinessObject" Template="BusinessObject.cst"%>
 28<%@ Register Name="ProviderCollection" Template="ProviderCollection.cst"%>
 29<%@ Register Name="ProviderManagerSection" Template="ProviderManagerSection.cst"%>
 30<%@ Register Name="SqlHelper" Template="SqlHelper.cst"%>
 31<%@ Register Name="SqlProvider" Template="SqlProvider.cst"%>
 32<%@ Register Name="SqlStoredProcedures" Template="SqlStoredProcedures.cst"%>
 33<%@ Register Name="ConfigTemplet" Template="ConfigTemplet.cst"%>
 34<%@ Register Name="SqlBusiness" Template="SqlBusiness.cst"%>    
 35<script runat="template">
 36// My methods here.
 37// 生成文件的方法
 38public override void Render(System.IO.TextWriter writer)
 39{
 40    
 41    
 42    string projectDirectory=OutputDirectory;
 43    AbstractProvider abstractProvider=new AbstractProvider();
 44    abstractProvider.NameSpace=this.NameSpace;
 45    abstractProvider.DataBase=this.DataBase;
 46    abstractProvider.ModuleName= this.ModuleName;
 47    try
 48    {
 49    string abstractProviderDirectory=projectDirectory+"\\"+ProjectName+".Framework"+"\\"+ModuleName+".Framework";
 50    string abstractProviderFilePath=abstractProviderDirectory+"\\AbstractProvider.cs";
 51    writer.WriteLine("AbstractProvider");
 52    writer.WriteLine("------------------------------------------------------------------------------------------------------------------------");
 53    abstractProvider.Render(writer);
 54    writer.WriteLine("------------------------------------------------------------------------------------------------------------------------");
 55
 56    if (!Directory.Exists(abstractProviderDirectory)) Directory.CreateDirectory(abstractProviderDirectory);
 57    abstractProvider.RenderToFile(abstractProviderFilePath,true);
 58    Trace.WriteLine("The "+abstractProviderFilePath.ToString()+" is Completion");
 59    }

 60    catch(Exception ex)
 61    {
 62        OutPutErrorMessage("AbstractProvider",ex.Message.ToString());
 63    }

 64    
 65    
 66    
 67    ProviderCollection providerCollection=new ProviderCollection();
 68    providerCollection.NameSpace=this.NameSpace;
 69    providerCollection.ModuleName=this.ModuleName;
 70    try
 71    {
 72    string providerCollectionDirectory=projectDirectory+"\\"+ProjectName+".Framework"+"\\"+ModuleName+".Framework";
 73    string providerCollectionFilePath=providerCollectionDirectory+"\\ProviderCollection.cs";
 74    writer.WriteLine("ProviderCollection");
 75    writer.WriteLine("------------------------------------------------------------------------------------------------------------------------");
 76    providerCollection.Render(writer);
 77    writer.WriteLine("------------------------------------------------------------------------------------------------------------------------");
 78
 79    if (!Directory.Exists(providerCollectionDirectory)) Directory.CreateDirectory(providerCollectionDirectory);
 80    providerCollection.RenderToFile(providerCollectionFilePath,true);
 81    Trace.WriteLine("The "+providerCollectionFilePath.ToString()+" is Completion");
 82    }

 83    catch(Exception ex)
 84    {
 85        OutPutErrorMessage("ProviderCollection",ex.Message.ToString());
 86    }

 87    
 88    ProviderManagerSection providerManagerSection = new ProviderManagerSection();
 89    providerManagerSection.NameSpace=this.NameSpace;
 90    providerManagerSection.ModuleName= this.ModuleName;
 91    try
 92    {
 93    string providerManagerSectionDirectory=projectDirectory+"\\"+ProjectName+".Framework"+"\\"+ModuleName+".Framework";
 94    string providerManagerSectionFilePath=providerManagerSectionDirectory+"\\ProviderManagerSection.cs";
 95    writer.WriteLine("ProviderManagerSection");
 96    writer.WriteLine("------------------------------------------------------------------------------------------------------------------------");
 97    providerManagerSection.Render(writer);
 98    writer.WriteLine("------------------------------------------------------------------------------------------------------------------------");
 99
100    if (!Directory.Exists(providerManagerSectionDirectory)) Directory.CreateDirectory(providerManagerSectionDirectory);
101    providerManagerSection.RenderToFile(providerManagerSectionFilePath,true);
102    Trace.WriteLine("The "+providerManagerSectionFilePath.ToString()+" is Completion");
103    }

104    catch(Exception ex)
105    {
106        OutPutErrorMessage("ProviderManagerSection",ex.Message.ToString());
107    }

108    
109    
110    SqlHelper sqlHelper= new SqlHelper();
111    sqlHelper.NameSpace = this.NameSpace;
112    try
113    {
114    string sqlHelperDirectory=projectDirectory+"\\"+ProjectName+".Providers";
115    string sqlHelperFilePath=sqlHelperDirectory+"\\SqlHelper.cs";
116    writer.WriteLine("SqlHelper");
117    writer.WriteLine("------------------------------------------------------------------------------------------------------------------------");
118    sqlHelper.Render(writer);
119    writer.WriteLine("------------------------------------------------------------------------------------------------------------------------");
120
121    if (!Directory.Exists(sqlHelperDirectory)) Directory.CreateDirectory(sqlHelperDirectory);
122    sqlHelper.RenderToFile(sqlHelperFilePath,true);
123    Trace.WriteLine("The "+sqlHelperFilePath.ToString()+" is Completion");
124    }

125    catch(Exception ex)
126    {
127        OutPutErrorMessage("SqlHelper",ex.Message.ToString());
128    }

129    
130    SqlProvider sqlProvider= new SqlProvider();
131    sqlProvider.NameSpace = this.NameSpace;
132    sqlProvider.DataBase=this.DataBase;
133    sqlProvider.ModuleName=this.ModuleName;
134    try
135    {
136    string sqlProviderDirectory=projectDirectory+"\\"+ProjectName+".Providers"+"\\"+ModuleName+".Providers";
137    string sqlProviderFilePath=sqlProviderDirectory+"\\SqlProvider.cs";
138    writer.WriteLine("SqlProvider");
139    writer.WriteLine("------------------------------------------------------------------------------------------------------------------------");
140    sqlProvider.Render(writer);
141    writer.WriteLine("------------------------------------------------------------------------------------------------------------------------");
142
143    if (!Directory.Exists(sqlProviderDirectory)) Directory.CreateDirectory(sqlProviderDirectory);
144    sqlProvider.RenderToFile(sqlProviderFilePath,true);
145    Trace.WriteLine("The "+sqlProviderFilePath.ToString()+" is Completion");
146    }

147    catch(Exception ex)
148    {
149        OutPutErrorMessage("SqlProvider",ex.Message.ToString());
150    }

151    
152    
153    
154    
155    
156    SqlBusiness sqlBusiness= new SqlBusiness();
157    sqlBusiness.NameSpace = this.NameSpace;
158    sqlBusiness.DataBase=this.DataBase;
159    sqlBusiness.ModuleName=this.ModuleName;
160    try
161    {
162    string sqlBusinessDirectory=projectDirectory+"\\"+ProjectName+".Business";
163    string sqlBusinessFilePath=sqlBusinessDirectory+"\\"+ModuleName+"Business.cs";
164    writer.WriteLine("SqlProvider");
165    writer.WriteLine("------------------------------------------------------------------------------------------------------------------------");
166    sqlBusiness.Render(writer);
167    writer.WriteLine("------------------------------------------------------------------------------------------------------------------------");
168
169    if (!Directory.Exists(sqlBusinessDirectory)) Directory.CreateDirectory(sqlBusinessDirectory);
170    sqlBusiness.RenderToFile(sqlBusinessFilePath,true);
171    Trace.WriteLine("The "+sqlBusinessFilePath.ToString()+" is Completion");
172    }

173    catch(Exception ex)
174    {
175        OutPutErrorMessage(ModuleName+"Business.cs",ex.Message.ToString());
176    }

177    
178
179    
180    Trace.WriteLine("BusinessObjects");
181    foreach(TableSchema Table in DataBase.Tables)
182    {
183        BusinessObject businessObject=new BusinessObject();
184        businessObject.NameSpace=this.NameSpace;
185        businessObject.Table=Table;
186        try
187        {
188        string businessObjectDirectory=projectDirectory+"\\"+ProjectName+".Framework"+"\\"+ModuleName+".Framework";
189        string businessObjectFilePath=businessObjectDirectory+"\\"+GetClassName(Table)+".cs";
190        writer.WriteLine(GetClassName(Table));
191        writer.WriteLine("------------------------------------------------------------------------------------------------------------------------");
192        businessObject.Render(writer);
193        writer.WriteLine("------------------------------------------------------------------------------------------------------------------------");
194    
195        if (!Directory.Exists(businessObjectDirectory)) Directory.CreateDirectory(businessObjectDirectory);
196        businessObject.RenderToFile(businessObjectFilePath,true);
197        Trace.WriteLine("The "+businessObjectFilePath.ToString()+" is Completion");
198        }

199        catch(Exception ex)
200        {
201            OutPutErrorMessage(GetClassName(Table),ex.Message.ToString());
202        }

203    }

204    
205    SqlStoredProcedures sqlStoredProcedures= new SqlStoredProcedures();
206    sqlStoredProcedures.AutoExecuteScript = this.AutoExecuteScript;
207    sqlStoredProcedures.DataBase = DataBase;
208    try
209    {
210    string sqlStoredProceduresDirectory=projectDirectory+"\\"+ProjectName+".ConfigurationFiles";
211    string sqlStoredProceduresFilePath=sqlStoredProceduresDirectory+"\\SqlStoredProcedures.sql";
212    writer.WriteLine("SqlStoredProcedures");
213    writer.WriteLine("------------------------------------------------------------------------------------------------------------------------");
214    sqlStoredProcedures.Render(writer);
215    writer.WriteLine("------------------------------------------------------------------------------------------------------------------------");
216
217    if (!Directory.Exists(sqlStoredProceduresDirectory)) Directory.CreateDirectory(sqlStoredProceduresDirectory);
218    sqlStoredProcedures.RenderToFile(sqlStoredProceduresFilePath,true);
219    Trace.WriteLine("The "+sqlStoredProceduresFilePath.ToString()+" is Completion");
220    }

221    catch(Exception ex)
222    {
223        OutPutErrorMessage("SqlStoredProcedures",ex.Message.ToString());
224    }

225    
226    ConfigTemplet configTemplet = new ConfigTemplet();
227    try
228    {
229    string configTempletDirectory=projectDirectory+"\\"+ProjectName+".ConfigurationFiles";
230    string configTempletFilePath=configTempletDirectory+"\\ConfigTemplet.xml";
231    writer.WriteLine("ConfigTemplet");
232    writer.WriteLine("------------------------------------------------------------------------------------------------------------------------");
233    configTemplet.Render(writer);
234    writer.WriteLine("------------------------------------------------------------------------------------------------------------------------");
235
236    if (!Directory.Exists(configTempletDirectory)) Directory.CreateDirectory(configTempletDirectory);
237    configTemplet.RenderToFile(configTempletFilePath,true);
238    Trace.WriteLine("The "+configTempletFilePath.ToString()+" is Completion");
239    }

240    catch(Exception ex)
241    {
242        OutPutErrorMessage("ConfigTemplet",ex.Message.ToString());
243    }

244    
245    
246}

247//取得要存放文件的目录
248private string _outputDirectory = String.Empty;
249
250[Editor(typeof(System.Windows.Forms.Design.FolderNameEditor), typeof(System.Drawing.Design.UITypeEditor))] 
251[Optional]
252[Category("Output")]
253[Description("The directory to output the results to.")]
254public string OutputDirectory 
255{
256    get
257    {
258        // default to the directory that the template is located in
259        if (_outputDirectory.Length == 0return this.CodeTemplateInfo.DirectoryName + "output\\";
260        
261        return _outputDirectory;
262    }

263    set
264    {
265        _outputDirectory = value;
266    }
 
267}

268
269private void OutPutErrorMessage(string Name,string errorMessage)
270{
271        Trace.WriteLine(Name);
272        Trace.WriteLine("------------------------------------------------------------------------------------------------------------------------");
273        Trace.WriteLine(errorMessage);
274        Trace.WriteLine("------------------------------------------------------------------------------------------------------------------------");
275    
276}

277</script>
posted @ 2007-07-05 20:04  吴碧宇  阅读(341)  评论(1编辑  收藏  举报