using System;
using System.IO;
using System.CodeDom;
using System.CodeDom.Compiler;
using System.Data;
using System.Data.SqlClient;
using System.Data.SqlTypes;
using System.Xml;
using System.Collections.Generic;
using System.Text;
using Microsoft.CSharp;
using Microsoft.VisualBasic;
namespace TdoCodeGenerator.Generator{
internal static class CodeDomHelper
{
internal static void AddNamespaceHeaderComment(CodeNamespace nameSpace, params string[] comments)
{
foreach (string comment in comments)
{
nameSpace.Comments.Add(new CodeCommentStatement(comment));
}
}
internal static void AddStandardNamespaces(CodeNamespace nameSpace)
{
nameSpace.Imports.Add(new CodeNamespaceImport("System"));
nameSpace.Imports.Add(new CodeNamespaceImport("System.Xml"));
nameSpace.Imports.Add(new CodeNamespaceImport("System.Xml.Serialization"));
nameSpace.Imports.Add(new CodeNamespaceImport("System.Data"));
nameSpace.Imports.Add(new CodeNamespaceImport("System.Data.SqlClient"));
nameSpace.Imports.Add(new CodeNamespaceImport("System.Data.SqlTypes"));
nameSpace.Imports.Add(new CodeNamespaceImport("System.Collections"));
nameSpace.Imports.Add(new CodeNamespaceImport("System.Collections.Generic"));
nameSpace.Imports.Add(new CodeNamespaceImport("System.ComponentModel"));
nameSpace.Imports.Add(new CodeNamespaceImport("System.Text"));
nameSpace.Imports.Add(new CodeNamespaceImport("System.Diagnostics"));
nameSpace.Imports.Add(new CodeNamespaceImport("System.Runtime"));
nameSpace.Imports.Add(new CodeNamespaceImport("System.Runtime.Serialization"));
}
internal static void AddTdoNamespaces(CodeNamespace nameSpace, string baseNameSpace, string dataBaseName, Language language)
{
string globalPrefix = String.Empty;
if (language == Language.CSharp)
{
globalPrefix = "global::";
}
nameSpace.Imports.Add(new CodeNamespaceImport(globalPrefix+"Tdo"));
nameSpace.Imports.Add(new CodeNamespaceImport(globalPrefix + "Tdo.Common"));
nameSpace.Imports.Add(new CodeNamespaceImport(globalPrefix + "Tdo.Common.Programmability"));
nameSpace.Imports.Add(new CodeNamespaceImport(globalPrefix + "Tdo.Common.Entities"));
nameSpace.Imports.Add(new CodeNamespaceImport(globalPrefix + "Tdo.Common.Entities.Tables"));
nameSpace.Imports.Add(new CodeNamespaceImport(globalPrefix + "Tdo.Common.Entities.Views"));
nameSpace.Imports.Add(new CodeNamespaceImport(globalPrefix + "Tdo.Common.Helper"));
nameSpace.Imports.Add(new CodeNamespaceImport(globalPrefix + "Tdo.Common.TdoSqlExpressionDom"));
nameSpace.Imports.Add(new CodeNamespaceImport(globalPrefix + "Tdo.Common.TdoTypes"));
//nameSpace.Imports.Add(new CodeNamespaceImport(string.Format("{0}", baseNameSpace)));
//nameSpace.Imports.Add(new CodeNamespaceImport(string.Format("{0}.Entities", baseNameSpace)));
//nameSpace.Imports.Add(new CodeNamespaceImport(string.Format("{0}.Programmability", baseNameSpace)));
}
internal static void AddCustomAttribute(CodeTypeDeclaration type, string AttributeName)
{
type.CustomAttributes.Add(new CodeAttributeDeclaration(AttributeName));
}
internal static void AddCustomAttribute(CodeMemberMethod method, System.ComponentModel.DataObjectMethodType methodType, bool isDefault)
{
CodeAttributeDeclaration attr = new CodeAttributeDeclaration(new CodeTypeReference(typeof(System.ComponentModel.DataObjectMethodAttribute)));
attr.Arguments.Add(new CodeAttributeArgument(new CodeVariableReferenceExpression(methodType.GetType().FullName+"."+methodType.ToString())));
attr.Arguments.Add(new CodeAttributeArgument(new CodePrimitiveExpression(isDefault)));
method.CustomAttributes.Add(attr);
}
internal static void AddCustomAttribute(CodeMemberProperty type, string AttributeName)
{
type.CustomAttributes.Add(new CodeAttributeDeclaration(AttributeName));
}
internal static void AddCustomAttribute(CodeTypeDeclaration type, string AttributeName, string ArgumentName, object ArgumentValue)
{
CodeAttributeDeclaration cad = new CodeAttributeDeclaration(AttributeName);
CodeAttributeArgument cadarg = new CodeAttributeArgument();
if (ArgumentName!=String.Empty)
cadarg.Name = ArgumentName;
cadarg.Value = new CodePrimitiveExpression(ArgumentValue);
cad.Arguments.Add(cadarg);
type.CustomAttributes.Add(cad);
}
internal static void AddXmlSummaryComment(CodeTypeDeclaration type, string summaryComment)
{
type.Comments.Add(new CodeCommentStatement("<summary>", true));
type.Comments.Add(new CodeCommentStatement(summaryComment, true));
type.Comments.Add(new CodeCommentStatement("</summary>", true));
}
internal static void AddXmlSummaryComment(CodeConstructor type, string summaryComment)
{
type.Comments.Add(new CodeCommentStatement("<summary>", true));
type.Comments.Add(new CodeCommentStatement(summaryComment, true));
type.Comments.Add(new CodeCommentStatement("</summary>", true));
}
internal static void AddXmlSummaryComment(CodeMemberField field, string summaryComment)
{
field.Comments.Add(new CodeCommentStatement("<summary>", true));
field.Comments.Add(new CodeCommentStatement(summaryComment, true));
field.Comments.Add(new CodeCommentStatement("</summary>", true));
}
internal static void AddXmlSummaryComment(CodeMemberProperty property, string summaryComment)
{
property.Comments.Add(new CodeCommentStatement("<summary>", true));
property.Comments.Add(new CodeCommentStatement(summaryComment, true));
property.Comments.Add(new CodeCommentStatement("</summary>", true));
}
internal static void AddXmlSummaryComment(CodeMemberMethod method, string summaryComment)
{
method.Comments.Add(new CodeCommentStatement("<summary>", true));
method.Comments.Add(new CodeCommentStatement(summaryComment, true));
method.Comments.Add(new CodeCommentStatement("</summary>", true));
}
internal static CodeMemberField AddFieldDeclaration(CodeTypeDeclaration type, MemberAttributes memberAttribute, string fieldType, string fieldName)
{
CodeMemberField cmf = new CodeMemberField(fieldType, fieldName);
cmf.Attributes = memberAttribute;
type.Members.Add(cmf);
return cmf;
}
}
}
|