Beispiel #1
0
        public override string TransformText()
        {
            this.GenerationEnvironment = null;
            this.Write(" \r\n");

            #line 9 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\Shell\Model\DirectiveProcessorGenerator.tt"

            string dslName       = this.MetaModel.Name;
            string directiveName = dslName;


            #line default
            #line hidden
            this.Write(@"//------------------------------------------------------------------------------
// <auto-generated>
//     This code was generated by a tool.
//
//     Changes to this file may cause incorrect behavior and will be lost if
//     the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
");

            #line 21 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\Shell\Model\DirectiveProcessorGenerator.tt"

            string domainModelFullName = this.MetaModel.GetFullName(false) + "DomainModel";

            DomainClass domainModel = null;
            foreach (DomainClass domainClass in this.MetaModel.AllClasses)
            {
                if (domainClass.IsDomainModel)
                {
                    domainModel = domainClass;
                    break;
                }
            }

            if (domainModel == null)
            {
                return("");
            }

            string rootElementName = domainModel.Name;
            string rootElementType = domainModel.GetFullName(true);


            #line default
            #line hidden
            this.Write(@"
#region Using directives
using DslModeling = global::Microsoft.VisualStudio.Modeling;
using DslValidation = global::Microsoft.VisualStudio.Modeling.Validation;
using VSTextTemplating = global::Microsoft.VisualStudio.TextTemplating;
#endregion

namespace ");

            #line 47 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\Shell\Model\DirectiveProcessorGenerator.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(this.MetaModel.Namespace));

            #line default
            #line hidden
            this.Write("\r\n{\r\n/// <summary>\r\n/// Double-derived template directive processor that provides" +
                       " ");

            #line 50 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\Shell\Model\DirectiveProcessorGenerator.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(directiveName));

            #line default
            #line hidden
            this.Write(" files\r\n/// The implementation is done in ");

            #line 51 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\Shell\Model\DirectiveProcessorGenerator.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(directiveName));

            #line default
            #line hidden
            this.Write("DirectiveProcessorBase. This class\r\n/// exist so users can customize behavior eas" +
                       "ily.\r\n/// </summary>\r\npublic sealed partial class ");

            #line 54 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\Shell\Model\DirectiveProcessorGenerator.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(directiveName));

            #line default
            #line hidden
            this.Write("DirectiveProcessor : ");

            #line 54 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\Shell\Model\DirectiveProcessorGenerator.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(directiveName));

            #line default
            #line hidden
            this.Write("DirectiveProcessorBase\r\n{\r\n\t/// <summary>\r\n\t/// Constructor\r\n\t/// </summary>\r\n\tpu" +
                       "blic ");

            #line 59 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\Shell\Model\DirectiveProcessorGenerator.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(directiveName));

            #line default
            #line hidden
            this.Write("DirectiveProcessor()\r\n\t\t: base()\r\n\t{\r\n\t}\r\n}\r\n\r\n/// <summary>\r\n/// Base implementa" +
                       "tion for template directive processor that provides ");

            #line 66 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\Shell\Model\DirectiveProcessorGenerator.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(directiveName));

            #line default
            #line hidden
            this.Write(" files\r\n/// </summary>\r\npublic class ");

            #line 68 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\Shell\Model\DirectiveProcessorGenerator.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(directiveName));

            #line default
            #line hidden
            this.Write("DirectiveProcessorBase : VSTextTemplating::RequiresProvidesDirectiveProcessor\r\n{\r" +
                       "\n\t/// <summary>\r\n\t/// The friendly name of this processor.\r\n\t/// </summary>\r\n\tpu" +
                       "blic const string ");

            #line 73 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\Shell\Model\DirectiveProcessorGenerator.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(directiveName));

            #line default
            #line hidden
            this.Write("DirectiveProcessorName = \"");

            #line 73 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\Shell\Model\DirectiveProcessorGenerator.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(directiveName));

            #line default
            #line hidden
            this.Write(@"DirectiveProcessor"";

	/// <summary>
	/// The name for the requires parameter that provides the filename of the model
	/// </summary>
	private const string requiresFileParameter = ""FileName"";

	/// <summary>
	/// The name for the requires parameter that provides the validation categories to run. 
	/// The value for this parameter defaults to String.Empty
	/// </summary>
	private const string requiresValidationParameter = ""Validation"";

	/// <summary>
	/// The name for the provides parameter whose value decides the name of the property 
	/// generated by this DirectiveProcessor. The property returns the root element of
	/// the model in the given file. 
	/// </summary>
	private const string providesModelParameter = """    );

            #line 91 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\Shell\Model\DirectiveProcessorGenerator.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(rootElementName));

            #line default
            #line hidden
            this.Write(@""";

	/// <summary>
	/// The default value of the provides parameter above. It defaults to the name of
	/// the parameter itself.
	/// </summary>
	private const string defaultProvidesModelParameter = providesModelParameter;

	/// <summary>
	/// The directive name that is supported by this direcive processor. This defaults
	/// to the name of the model. 
	/// </summary>
	private const string supportedDirectiveName = """    );

            #line 103 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\Shell\Model\DirectiveProcessorGenerator.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(directiveName));

            #line default
            #line hidden
            this.Write("\";\r\n\t\r\n\t/// <summary>\r\n\t/// Flag to ensure that some code is only generated once " +
                       "regardless of how many times the processor is used.\r\n\t/// </summary>\r\n\tprivate b" +
                       "ool oneTimeCodeGenerated;\r\n\t\r\n\t/// <summary>\r\n\t/// Constructor\r\n\t/// </summary>\r" +
                       "\n\tpublic ");

            #line 113 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\Shell\Model\DirectiveProcessorGenerator.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(directiveName));

            #line default
            #line hidden
            this.Write("DirectiveProcessorBase()\r\n\t\t: base()\r\n\t{\r\n\t}\r\n\r\n\t/// <summary>\r\n\t/// The friendly" +
                       " name of this processor.\r\n\t/// </summary>\r\n\tprotected override string FriendlyNa" +
                       "me\r\n\t{\r\n\t\tget\r\n\t\t{\r\n\t\t\treturn ");

            #line 125 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\Shell\Model\DirectiveProcessorGenerator.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(directiveName));

            #line default
            #line hidden
            this.Write("DirectiveProcessorName;\r\n\t\t}\r\n\t}\r\n\r\n\t/// <summary>\r\n\t/// Check if the directive n" +
                       "ame is supported by this directive processor\r\n\t/// </summary>\r\n\t/// <param name=" +
                       "\"directiveName\"></param>\r\n\t/// <returns></returns>\r\n\tpublic override bool IsDire" +
                       "ctiveSupported(string directiveName)\r\n\t{\r\n\t\treturn (global::System.StringCompare" +
                       "r.OrdinalIgnoreCase.Compare(directiveName, supportedDirectiveName) == 0);\r\n\t}\r\n\r" +
                       "\n\t/// <summary>\r\n\t/// Override StartProcessingRun to reset the helpers flag.\r\n\t/" +
                       "// </summary>\r\n\t/// <param name=\"languageProvider\"></param>\r\n\t/// <param name=\"t" +
                       "emplateContents\"></param>\r\n\t/// <param name=\"errors\"></param>\r\n\tpublic override " +
                       "void StartProcessingRun(global::System.CodeDom.Compiler.CodeDomProvider language" +
                       "Provider, string templateContents, global::System.CodeDom.Compiler.CompilerError" +
                       "Collection errors)\r\n\t{\r\n\t\tthis.oneTimeCodeGenerated = false;\r\n\t\tbase.StartProces" +
                       "singRun(languageProvider, templateContents, errors);\r\n\t}\r\n\r\n\r\n\t/// <summary>\r\n\t/" +
                       "// Override to initialize requires dictionary\r\n\t/// </summary>\r\n\t/// <param name" +
                       "=\"directiveName\"></param>\r\n\t/// <param name=\"requiresDictionary\"></param>\r\n\tprot" +
                       "ected override void InitializeRequiresDictionary(string directiveName, global::S" +
                       "ystem.Collections.Generic.IDictionary<string, string> requiresDictionary)\r\n\t{\r\n\t" +
                       "\tif ((global::System.StringComparer.OrdinalIgnoreCase.Compare(directiveName, sup" +
                       "portedDirectiveName) == 0))\r\n\t\t{\r\n\t\t\trequiresDictionary[requiresFileParameter] =" +
                       " null;\r\n\t\t\trequiresDictionary[requiresValidationParameter] = \"\";\r\n\t\t}\r\n\t}\r\n\r\n\t//" +
                       "/ <summary>\r\n\t/// Override to initialize provides dictinoary\r\n\t/// </summary>\r\n\t" +
                       "/// <param name=\"directiveName\"></param>\r\n\t/// <param name=\"providesDictionary\">" +
                       "</param>\r\n\tprotected override void InitializeProvidesDictionary(string directive" +
                       "Name, global::System.Collections.Generic.IDictionary<string, string> providesDic" +
                       "tionary)\r\n\t{\r\n\t\tif ((global::System.StringComparer.OrdinalIgnoreCase.Compare(dir" +
                       "ectiveName, supportedDirectiveName) == 0))\r\n\t\t{\r\n\t\t\tprovidesDictionary[providesM" +
                       "odelParameter] = defaultProvidesModelParameter;\r\n\t\t}\r\n\t}\r\n\r\n\t/// <summary>\r\n\t///" +
                       " Generate the code to access the model. Use to CodeDomProvider so we are languag" +
                       "e-agnostic\r\n\t/// </summary>\r\n\t/// <param name=\"directiveName\"></param>\r\n\t/// <pa" +
                       "ram name=\"codeBuffer\"></param>\r\n\t/// <param name=\"languageProvider\"></param>\r\n\t/" +
                       "// <param name=\"requiresArguments\"></param>\r\n\t/// <param name=\"providesArguments" +
                       "\"></param>\r\n\t[global::System.Diagnostics.CodeAnalysis.SuppressMessage(\"Microsoft" +
                       ".Globalization\", \"CA1308:NormalizeStringsToUppercase\", Justification = \"Generate" +
                       "d code is not meant for normalization purpose.\")]\r\n\t[global::System.Diagnostics." +
                       "CodeAnalysis.SuppressMessage(\"Microsoft.Maintainability\", \"CA1506:AvoidExcessive" +
                       "ClassCoupling\", Justification = \"Generated code.\")]\r\n\tprotected override void Ge" +
                       "nerateTransformCode(string directiveName, global::System.Text.StringBuilder code" +
                       "Buffer, global::System.CodeDom.Compiler.CodeDomProvider languageProvider, global" +
                       "::System.Collections.Generic.IDictionary<string, string> requiresArguments, glob" +
                       "al::System.Collections.Generic.IDictionary<string, string> providesArguments)\r\n\t" +
                       "{\r\n\t\tif ((global::System.StringComparer.OrdinalIgnoreCase.Compare(directiveName," +
                       " supportedDirectiveName) == 0))\r\n\t\t{\r\n\t\t\tif (languageProvider != null)\r\n\t\t\t{\r\n\t\t" +
                       "\t\t// Create a field to store the model once it is loaded\r\n\t\t\t\tglobal::System.Cod" +
                       "eDom.CodeMemberField rootElement = new global::System.CodeDom.CodeMemberField();" +
                       "\r\n\t\t\t\trootElement.Name = providesArguments[providesModelParameter].ToLower(globa" +
                       "l::System.Globalization.CultureInfo.InvariantCulture) + \"Value\";\r\n\t\t\t\trootElemen" +
                       "t.Type = new global::System.CodeDom.CodeTypeReference(typeof(");

            #line 198 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\Shell\Model\DirectiveProcessorGenerator.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(rootElementType));

            #line default
            #line hidden
            this.Write(@"));
				rootElement.Attributes = global::System.CodeDom.MemberAttributes.Private;

				// Create a property for the Model that delay-loads the model
				global::System.CodeDom.CodeMemberProperty rootElementProperty = new global::System.CodeDom.CodeMemberProperty();
				rootElementProperty.Name = providesArguments[providesModelParameter];
				rootElementProperty.Type = new global::System.CodeDom.CodeTypeReference(typeof("                );

            #line 204 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\Shell\Model\DirectiveProcessorGenerator.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(rootElementType));

            #line default
            #line hidden
            this.Write(@"));
				rootElementProperty.Attributes = global::System.CodeDom.MemberAttributes.Private;
				rootElementProperty.HasSet = false;
				rootElementProperty.HasGet = true;
				rootElementProperty.GetStatements.Add(new global::System.CodeDom.CodeMethodReturnStatement(new global::System.CodeDom.CodeFieldReferenceExpression(new global::System.CodeDom.CodeThisReferenceExpression(), rootElement.Name)));

				// Create a helper method for resolving relative paths
				global::System.CodeDom.CodeMemberMethod resolver = null;
				if (!this.oneTimeCodeGenerated && global::System.IO.File.Exists(this.Host.TemplateFile))
				{
					resolver = new global::System.CodeDom.CodeMemberMethod();
					resolver.Name = ""Convert"" + """                    );

            #line 215 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\Shell\Model\DirectiveProcessorGenerator.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(rootElementName));

            #line default
            #line hidden
            this.Write("\" + \"RelativePathToTemplateRelativePath\";\r\n\t\t\t\t\tresolver.ReturnType = new global:" +
                       ":System.CodeDom.CodeTypeReference(typeof(string));\r\n\t\t\t\t\tresolver.Parameters.Add" +
                       "(new global::System.CodeDom.CodeParameterDeclarationExpression(typeof(string), \"" +
                       "path\"));\r\n\t\t\t\t\tresolver.Attributes = global::System.CodeDom.MemberAttributes.Pub" +
                       "lic;\r\n\t\t\t\t\tglobal::System.CodeDom.CodeVariableDeclarationStatement declaration =" +
                       " new global::System.CodeDom.CodeVariableDeclarationStatement(typeof(string), \"mo" +
                       "delPath\", new global::System.CodeDom.CodePrimitiveExpression((string)(requiresAr" +
                       "guments[requiresFileParameter])));\r\n\t\t\t\t\tresolver.Statements.Add(declaration);\r\n" +
                       "\t\t\t\t\tdeclaration = new global::System.CodeDom.CodeVariableDeclarationStatement(t" +
                       "ypeof(string), \"templatePath\", new global::System.CodeDom.CodePrimitiveExpressio" +
                       "n((string)(this.Host.TemplateFile)));\r\n\t\t\t\t\tresolver.Statements.Add(declaration)" +
                       ";\r\n\t\t\t\t\tglobal::System.CodeDom.CodeMethodReturnStatement returnStatement = new g" +
                       "lobal::System.CodeDom.CodeMethodReturnStatement(\r\n\t\t\t\t\t\tnew global::System.CodeD" +
                       "om.CodeMethodInvokeExpression(\r\n\t\t\t\t\t\t\tnew global::System.CodeDom.CodeMethodRefe" +
                       "renceExpression(new global::System.CodeDom.CodeTypeReferenceExpression(\"Microsof" +
                       "t.VisualStudio.TextTemplating.VSHost.ModelingTextTransformation\"), \"ConvertModel" +
                       "RelativePathToTemplateRelativePath\"),\r\n\t\t\t\t\t\t\tnew global::System.CodeDom.CodeVar" +
                       "iableReferenceExpression(\"modelPath\"),\r\n\t\t\t\t\t\t\tnew global::System.CodeDom.CodeVa" +
                       "riableReferenceExpression(\"templatePath\"),\r\n\t\t\t\t\t\t\tnew global::System.CodeDom.Co" +
                       "deVariableReferenceExpression(\"path\")));\r\n\t\t\t\t\tresolver.Statements.Add(returnSta" +
                       "tement);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Generate the actual code using the CodeDomProvider\r\n\t\t" +
                       "\t\tglobal::System.CodeDom.Compiler.CodeGeneratorOptions options = new global::Sys" +
                       "tem.CodeDom.Compiler.CodeGeneratorOptions();\r\n\t\t\t\toptions.BlankLinesBetweenMembe" +
                       "rs = true;\r\n\t\t\t\toptions.IndentString = \"    \";\r\n\t\t\t\toptions.VerbatimOrder = true" +
                       ";\r\n\t\t\t\toptions.BracingStyle = \"C\";\r\n\t\t\t\tusing (global::System.IO.StringWriter wr" +
                       "iter = new global::System.IO.StringWriter(codeBuffer, global::System.Globalizati" +
                       "on.CultureInfo.InvariantCulture))\r\n\t\t\t\t{\r\n\t\t\t\t\tlanguageProvider.GenerateCodeFrom" +
                       "Member(rootElement, writer, options);\r\n\t\t\t\t\tlanguageProvider.GenerateCodeFromMem" +
                       "ber(rootElementProperty, writer, options);\r\n\t\t\t\t\tif (resolver != null)\r\n\t\t\t\t\t{\r\n" +
                       "\t\t\t\t\t\tlanguageProvider.GenerateCodeFromMember(resolver, writer, options);\r\n\t\t\t\t\t" +
                       "}\r\n\t\t\t\t}\r\n\t\t\t\tthis.oneTimeCodeGenerated = true;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/// <summary>" +
                       "\r\n\t/// Contribute additively to initialization code for the TextTransformation g" +
                       "enerated class.\r\n\t/// </summary>\r\n\t/// <remarks>\r\n\t/// This code will be added b" +
                       "efore the call to the base class.\r\n\t/// </remarks>\r\n\t/// <param name=\"directiveN" +
                       "ame\"></param>\r\n\t/// <param name=\"codeBuffer\"></param>\r\n\t/// <param name=\"languag" +
                       "eProvider\"></param>\r\n\t/// <param name=\"requiresArguments\"></param>\r\n\t/// <param " +
                       "name=\"providesArguments\"></param>\r\n\tprotected override void GeneratePreInitializ" +
                       "ationCode(string directiveName, global::System.Text.StringBuilder codeBuffer, gl" +
                       "obal::System.CodeDom.Compiler.CodeDomProvider languageProvider, global::System.C" +
                       "ollections.Generic.IDictionary<string, string> requiresArguments, global::System" +
                       ".Collections.Generic.IDictionary<string, string> providesArguments)\r\n\t{\r\n\t\tif ((" +
                       "global::System.StringComparer.OrdinalIgnoreCase.Compare(directiveName, supported" +
                       "DirectiveName) == 0))\r\n\t\t{\r\n\t\t\tif (languageProvider != null)\r\n\t\t\t{\r\n\t\t\t\tstring[]" +
                       " domainModels = {\r\n\t\t\t\t\t\"");

            #line 270 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\Shell\Model\DirectiveProcessorGenerator.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(domainModelFullName));

            #line default
            #line hidden
            this.Write("\",\r\n\t\t\t\t};\r\n\r\n\t\t\t\tglobal::System.CodeDom.Compiler.CodeGeneratorOptions options = " +
                       "new global::System.CodeDom.Compiler.CodeGeneratorOptions();\r\n\t\t\t\toptions.BlankLi" +
                       "nesBetweenMembers = true;\r\n\t\t\t\toptions.IndentString = \"    \";\r\n\t\t\t\toptions.Verba" +
                       "timOrder = true;\r\n\t\t\t\toptions.BracingStyle = \"C\";\r\n\t\t\t\tusing (global::System.IO." +
                       "StringWriter writer = new global::System.IO.StringWriter(codeBuffer, global::Sys" +
                       "tem.Globalization.CultureInfo.InvariantCulture))\r\n\t\t\t\t{\r\n\t\t\t\t\tforeach (string do" +
                       "mainModel in domainModels)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tglobal::System.CodeDom.CodeExpressionS" +
                       "tatement addModel = new global::System.CodeDom.CodeExpressionStatement(new globa" +
                       "l::System.CodeDom.CodeMethodInvokeExpression(new global::System.CodeDom.CodeMeth" +
                       "odReferenceExpression(new global::System.CodeDom.CodeThisReferenceExpression(), " +
                       "\"AddDomainModel\"), new global::System.CodeDom.CodeTypeOfExpression(domainModel))" +
                       ");\r\n\t\t\t\t\t\tlanguageProvider.GenerateCodeFromStatement(addModel, writer, options);" +
                       "\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\t/// <summary>\r\n\t/// Property that indicates " +
                       "whether this directive processor needs access to diagram data as well as\r\n\t/// m" +
                       "odel data.  Normally, this is not the case so the default value of this property" +
                       " is false.\r\n\t/// Derived classes may override this property to change the value." +
                       "\r\n\t/// </summary>\r\n\tprotected virtual bool LoadDiagramData\r\n\t{\r\n \t\tget\r\n\t\t{\r\n\t\t\t" +
                       "return false;\r\n\t\t}\r\n\t}\r\n\r\n\t/// <summary>\r\n\t/// Contribute additively to initiali" +
                       "zation code for the TextTransformation generated class.\r\n\t/// </summary>\r\n\t/// <" +
                       "remarks>\r\n\t/// This code will be added after the call to the base class.\r\n\t/// <" +
                       "/remarks>\r\n\t/// <param name=\"directiveName\"></param>\r\n\t/// <param name=\"codeBuff" +
                       "er\"></param>\r\n\t/// <param name=\"languageProvider\"></param>\r\n\t/// <param name=\"re" +
                       "quiresArguments\"></param>\r\n\t/// <param name=\"providesArguments\"></param>\r\n\t[glob" +
                       "al::System.Diagnostics.CodeAnalysis.SuppressMessage(\"Microsoft.Globalization\", \"" +
                       "CA1308:NormalizeStringsToUppercase\", Justification = \"Generated code is not mean" +
                       "t for normalization purpose.\")]\r\n\t[global::System.Diagnostics.CodeAnalysis.Suppr" +
                       "essMessage(\"Microsoft.Maintainability\", \"CA1506:AvoidExcessiveClassCoupling\", Ju" +
                       "stification = \"Generated code.\")]\r\n\tprotected override void GeneratePostInitiali" +
                       "zationCode(string directiveName, global::System.Text.StringBuilder codeBuffer, g" +
                       "lobal::System.CodeDom.Compiler.CodeDomProvider languageProvider, global::System." +
                       "Collections.Generic.IDictionary<string, string> requiresArguments, global::Syste" +
                       "m.Collections.Generic.IDictionary<string, string> providesArguments)\r\n\t{\r\n\t\tif (" +
                       "(global::System.StringComparer.OrdinalIgnoreCase.Compare(directiveName, supporte" +
                       "dDirectiveName) == 0))\r\n\t\t{\r\n\t\t\t// We check the encoding of the model file, and " +
                       "ask the host to use that\r\n\t\t\t// encoding to write the output. This is to make su" +
                       "re we use the correct encoding\r\n\t\t\t// if the model file contains international c" +
                       "haracters that could be used in \r\n\t\t\t// the template output.\r\n\t\t\tstring fileName" +
                       " = requiresArguments[requiresFileParameter];\r\n\t\t\tif (!string.IsNullOrEmpty(fileN" +
                       "ame) && global::System.IO.File.Exists(fileName))\r\n\t\t\t{\r\n\t\t\t\tHost.SetOutputEncodi" +
                       "ng(VSTextTemplating::EncodingHelper.GetEncoding(fileName), false);\r\n\t\t\t}\r\n\r\n\t\t\ti" +
                       "f (languageProvider != null)\r\n\t\t\t{\r\n\t\t\t\tglobal::System.CodeDom.CodeMethodInvokeE" +
                       "xpression invokeLoad;\r\n\t\t\t\tglobal::System.String transactionName = providesArgum" +
                       "ents[providesModelParameter].ToLower(global::System.Globalization.CultureInfo.In" +
                       "variantCulture) + \"Transaction\";\r\n\t\t\t\tglobal::System.CodeDom.CodeVariableDeclara" +
                       "tionStatement transactionDeclaration = new global::System.CodeDom.CodeVariableDe" +
                       "clarationStatement(new global::System.CodeDom.CodeTypeReference(typeof(DslModeli" +
                       "ng::Transaction)), transactionName, new global::System.CodeDom.CodePrimitiveExpr" +
                       "ession(null));\r\n\t\t\t\tglobal::System.CodeDom.CodeStatement finallyStatement = new " +
                       "global::System.CodeDom.CodeConditionStatement(new global::System.CodeDom.CodeBin" +
                       "aryOperatorExpression(new global::System.CodeDom.CodeVariableReferenceExpression" +
                       "(transactionName), global::System.CodeDom.CodeBinaryOperatorType.IdentityInequal" +
                       "ity, new global::System.CodeDom.CodePrimitiveExpression(null)), new global::Syst" +
                       "em.CodeDom.CodeExpressionStatement(new global::System.CodeDom.CodeMethodInvokeEx" +
                       "pression(new global::System.CodeDom.CodeVariableReferenceExpression(transactionN" +
                       "ame), \"Dispose\")));\r\n\t\t\t\tglobal::System.Collections.Generic.List<global::System." +
                       "CodeDom.CodeStatement> txTryStatements = new global::System.Collections.Generic." +
                       "List<global::System.CodeDom.CodeStatement>();\r\n\t\t\t\tglobal::System.CodeDom.CodeVa" +
                       "riableDeclarationStatement serializationResultDeclaration = new global::System.C" +
                       "odeDom.CodeVariableDeclarationStatement(new global::System.CodeDom.CodeTypeRefer" +
                       "ence(typeof(DslModeling::SerializationResult)), \"serializationResult\", new globa" +
                       "l::System.CodeDom.CodeObjectCreateExpression(new global::System.CodeDom.CodeType" +
                       "Reference(typeof(DslModeling::SerializationResult))));\r\n\r\n\t\t\t\tinvokeLoad = new g" +
                       "lobal::System.CodeDom.CodeMethodInvokeExpression(\r\n\t\t\t\t\tnew global::System.CodeD" +
                       "om.CodeMethodReferenceExpression(new global::System.CodeDom.CodeFieldReferenceEx" +
                       "pression(new global::System.CodeDom.CodeTypeReferenceExpression(typeof(");

            #line 340 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\Shell\Model\DirectiveProcessorGenerator.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(this.MetaModel.Name));

            #line default
            #line hidden
            this.Write("SerializationHelper)), \"Instance\"), \"LoadModel\"), new global::System.CodeDom.Code" +
                       "VariableReferenceExpression(\"serializationResult\"), new global::System.CodeDom.C" +
                       "odePropertyReferenceExpression(new global::System.CodeDom.CodeThisReferenceExpre" +
                       "ssion(), \"Store\"), new global::System.CodeDom.CodePrimitiveExpression(requiresAr" +
                       "guments[requiresFileParameter]), new global::System.CodeDom.CodePrimitiveExpress" +
                       "ion(null), new global::System.CodeDom.CodePrimitiveExpression(null), new global:" +
                       ":System.CodeDom.CodePrimitiveExpression(null));\r\n\r\n\t\t\t\tglobal::System.CodeDom.Co" +
                       "deAssignStatement loadAssign = new global::System.CodeDom.CodeAssignStatement(ne" +
                       "w global::System.CodeDom.CodeFieldReferenceExpression(new global::System.CodeDom" +
                       ".CodeThisReferenceExpression(), providesArguments[providesModelParameter].ToLowe" +
                       "r(global::System.Globalization.CultureInfo.InvariantCulture) + \"Value\"), invokeL" +
                       "oad);\r\n\t\t\t\ttxTryStatements.Add(serializationResultDeclaration);\r\n\t\t\t\ttxTryStatem" +
                       "ents.Add(new global::System.CodeDom.CodeAssignStatement(new global::System.CodeD" +
                       "om.CodeVariableReferenceExpression(transactionName), new global::System.CodeDom." +
                       "CodeMethodInvokeExpression(new global::System.CodeDom.CodePropertyReferenceExpre" +
                       "ssion(new global::System.CodeDom.CodePropertyReferenceExpression(new global::Sys" +
                       "tem.CodeDom.CodeThisReferenceExpression(), \"Store\"), \"TransactionManager\"), \"Beg" +
                       "inTransaction\", new global::System.CodeDom.CodePrimitiveExpression(\"Load\"), new " +
                       "global::System.CodeDom.CodePrimitiveExpression(true))));\r\n\t\t\t\ttxTryStatements.Ad" +
                       "d(loadAssign);\r\n\t\t\t\tglobal::System.CodeDom.CodeConditionStatement serializationR" +
                       "esultCheck = new global::System.CodeDom.CodeConditionStatement(\r\n\t\t\t\t\tnew global" +
                       "::System.CodeDom.CodePropertyReferenceExpression(new global::System.CodeDom.Code" +
                       "VariableReferenceExpression(\"serializationResult\"), \"Failed\"),\r\n\t\t\t\t\tnew global:" +
                       ":System.CodeDom.CodeThrowExceptionStatement(new global::System.CodeDom.CodeObjec" +
                       "tCreateExpression(new global::System.CodeDom.CodeTypeReference(typeof(DslModelin" +
                       "g::SerializationException)), new global::System.CodeDom.CodeVariableReferenceExp" +
                       "ression(\"serializationResult\")))\r\n\t\t\t\t);\r\n\t\t\t\ttxTryStatements.Add(serializationR" +
                       "esultCheck);\r\n\t\t\t\ttxTryStatements.Add(new global::System.CodeDom.CodeExpressionS" +
                       "tatement(new global::System.CodeDom.CodeMethodInvokeExpression(new global::Syste" +
                       "m.CodeDom.CodeVariableReferenceExpression(transactionName), \"Commit\")));\r\n\t\t\t\tgl" +
                       "obal::System.CodeDom.CodeTryCatchFinallyStatement txTryStatement = new global::S" +
                       "ystem.CodeDom.CodeTryCatchFinallyStatement(txTryStatements.ToArray(), new global" +
                       "::System.CodeDom.CodeCatchClause[] { }, new global::System.CodeDom.CodeStatement" +
                       "[] { finallyStatement });\r\n\r\n\r\n\t\t\t\t// We check if the user has requested validat" +
                       "ion to be performed. If so, we call\r\n\t\t\t\t// ValidateStore() on the base Modeling" +
                       "TextTransformation class.\r\n\t\t\t\tstring validationCategories = requiresArguments[r" +
                       "equiresValidationParameter];\r\n\t\t\t\tglobal::System.CodeDom.CodeMethodInvokeExpress" +
                       "ion validationInvoke = null;\r\n\t\t\t\tif (!string.IsNullOrEmpty(validationCategories" +
                       "))\r\n\t\t\t\t{\r\n\t\t\t\t\tvalidationInvoke = new global::System.CodeDom.CodeMethodInvokeEx" +
                       "pression(new global::System.CodeDom.CodeThisReferenceExpression(), \"ValidateStor" +
                       "e\", new global::System.CodeDom.CodePrimitiveExpression(validationCategories), ne" +
                       "w global::System.CodeDom.CodePropertyReferenceExpression(new global::System.Code" +
                       "Dom.CodeThisReferenceExpression(), \"Errors\"));\r\n\t\t\t\t}\r\n\r\n\t\t\t\tglobal::System.Code" +
                       "Dom.Compiler.CodeGeneratorOptions options = new global::System.CodeDom.Compiler." +
                       "CodeGeneratorOptions();\r\n\t\t\t\toptions.BlankLinesBetweenMembers = true;\r\n\t\t\t\toptio" +
                       "ns.IndentString = \"    \";\r\n\t\t\t\toptions.VerbatimOrder = true;\r\n\t\t\t\toptions.Bracin" +
                       "gStyle = \"C\";\r\n\t\t\t\tusing (global::System.IO.StringWriter writer = new global::Sy" +
                       "stem.IO.StringWriter(codeBuffer, global::System.Globalization.CultureInfo.Invari" +
                       "antCulture))\r\n\t\t\t\t{\r\n\t\t\t\t\tlanguageProvider.GenerateCodeFromStatement(transaction" +
                       "Declaration, writer, options);\r\n\t\t\t\t\tlanguageProvider.GenerateCodeFromStatement(" +
                       "txTryStatement, writer, options);\r\n\t\t\t\t\t\r\n\t\t\t\t\tif (validationInvoke != null)\r\n\t\t" +
                       "\t\t\t{\r\n\t\t\t\t\t\tlanguageProvider.GenerateCodeFromStatement(new global::System.CodeDo" +
                       "m.CodeExpressionStatement(validationInvoke), writer, options);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t" +
                       "\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/// <summary>\r\n\t/// Process arguments\r\n\t/// </summary>\r\n\t/// <p" +
                       "aram name=\"directiveName\"></param>\r\n\t/// <param name=\"requiresArguments\"></param" +
                       ">\r\n\t/// <param name=\"providesArguments\"></param>\r\n\tprotected override void PostP" +
                       "rocessArguments(string directiveName, global::System.Collections.Generic.IDictio" +
                       "nary<string, string> requiresArguments, global::System.Collections.Generic.IDict" +
                       "ionary<string, string> providesArguments)\r\n\t{\r\n\t\tif ((global::System.StringCompa" +
                       "rer.OrdinalIgnoreCase.Compare(directiveName, supportedDirectiveName) == 0))\r\n\t\t{" +
                       "\r\n\t\t\t// Give the host a chance to resolve the fileName\r\n\t\t\trequiresArguments[req" +
                       "uiresFileParameter] = this.Host.ResolvePath(requiresArguments[requiresFileParame" +
                       "ter]);\r\n\t\t}\r\n\t}\r\n\r\n\t/// <summary>\r\n\t/// Return namespace imports necessary for r" +
                       "unning template\r\n\t/// </summary>\r\n\t/// <returns></returns>\r\n\tpublic override str" +
                       "ing[] GetImportsForProcessingRun()\r\n\t{\r\n\t\tglobal::System.Collections.Generic.Lis" +
                       "t<string> imports = new global::System.Collections.Generic.List<string>(base.Get" +
                       "ImportsForProcessingRun());\r\n\r\n\t\timports.Add(\"Microsoft.VisualStudio.Modeling\");" +
                       "\r\n\t\timports.Add(\"System.CodeDom.Compiler\");\r\n");

            #line 408 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\Shell\Model\DirectiveProcessorGenerator.tt"

            if (!String.IsNullOrEmpty(this.MetaModel.Namespace))
            {
            #line default
            #line hidden
                this.Write("\t\timports.Add(\"");

            #line 412 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\Shell\Model\DirectiveProcessorGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(this.MetaModel.Namespace));

            #line default
            #line hidden
                this.Write("\");\r\n");

            #line 413 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\Shell\Model\DirectiveProcessorGenerator.tt"
            }


            #line default
            #line hidden
            this.Write(@"
		return imports.ToArray();
	}

	/// <summary>
	/// Get assembly references needed for running template
	/// </summary>
	/// <returns></returns>
	public override string[] GetReferencesForProcessingRun()
	{
		global::System.Collections.Generic.List<string> references = new global::System.Collections.Generic.List<string>(base.GetReferencesForProcessingRun());
		references.Add(this.GetType().Assembly.Location);
		references.Add(typeof(DslModeling::Store).Assembly.Location);
		references.Add(""Microsoft.VisualStudio.TextTemplating.Modeling.10.0.dll"");
		return references.ToArray();
	}
}
}

");
            return(this.GenerationEnvironment.ToString());
        }
        public void GenerateDomainClass(DomainClass domainClass)
        {
            //string baseClass = "DslModeling::ModelElement";
            string baseClass = "DslEditorModeling::DomainModelElement";

            baseClass = CodeGenerationUtilities.GetBaseClass(domainClass, baseClass);

            string namespaceString = domainClass.Namespace;

            if (!string.IsNullOrEmpty(namespaceString))
            {
        #line default
        #line hidden

        #line 24 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
                this.Write("namespace ");


        #line default
        #line hidden

        #line 25 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(namespaceString));


        #line default
        #line hidden

        #line 25 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
                this.Write("\r\n{\r\n");


        #line default
        #line hidden

        #line 27 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"

                PushIndent("\t");
            }

            int inheritanceDepth = CodeGenerationUtilities.CalculateInheritanceDepth(domainClass);

            this.Write(Utilities.Instance.GenerateSummary("DomainClass", domainClass, true));
            if (domainClass.GeneratesDoubleDerived)
            {
                if (inheritanceDepth > 6)
                {
        #line default
        #line hidden

        #line 38 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
                    this.Write("[global::System.Diagnostics.CodeAnalysis.SuppressMessage(\"Microsoft.Maintainabili" +
                               "ty\", \"CA1501:AvoidExcessiveInheritance\", Justification = \"Generated code.\")]\r\n");


        #line default
        #line hidden

        #line 40 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
                }
            }
            else if (inheritanceDepth > 5)
            {
        #line default
        #line hidden

        #line 45 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
                this.Write("[global::System.Diagnostics.CodeAnalysis.SuppressMessage(\"Microsoft.Maintainabili" +
                           "ty\", \"CA1501:AvoidExcessiveInheritance\", Justification = \"Generated code.\")]\r\n");


        #line default
        #line hidden

        #line 47 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
            }
            this.Write(Utilities.Instance.GenerateResourceAttributes(domainClass, GeneratedResourceName));
            this.Write(Utilities.Instance.GenerateDebuggerDisplayAttribute(domainClass));


        #line default
        #line hidden

        #line 51 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
            this.Write("[DslModeling::DomainObjectId(\"");


        #line default
        #line hidden

        #line 52 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(domainClass.Id.ToString("D")));


        #line default
        #line hidden

        #line 52 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
            this.Write("\")]\r\n");


        #line default
        #line hidden

        #line 53 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(CodeGenerationUtilities.GetAccessModifier(domainClass.AccessModifier)));


        #line default
        #line hidden

        #line 53 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(CodeGenerationUtilities.GetGenerationInheritanceModifier(domainClass)));


        #line default
        #line hidden

        #line 53 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
            this.Write(" partial class ");


        #line default
        #line hidden

        #line 53 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(CodeGenerationUtilities.GetGenerationClassName(domainClass)));


        #line default
        #line hidden

        #line 53 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
            this.Write(" : ");


        #line default
        #line hidden

        #line 53 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(baseClass));


        #line default
        #line hidden

        #line 53 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
            if (domainClass.IsDomainModel)
            {
        #line default
        #line hidden

        #line 53 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
                this.Write(", DslEditorModeling::IParentModelElement  ");


        #line default
        #line hidden

        #line 53 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
            }

        #line default
        #line hidden

        #line 53 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
            this.Write(" \r\n{\r\n\t#region Constructors, domain class Id\r\n\r\n\t/// <summary>\r\n\t/// ");


        #line default
        #line hidden

        #line 58 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(domainClass.Name));


        #line default
        #line hidden

        #line 58 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
            this.Write(" domain class Id.\r\n\t/// </summary>\r\n\tpublic static readonly new global::System.Gu" +
                       "id DomainClassId = new System.Guid(\"");


        #line default
        #line hidden

        #line 60 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(domainClass.Id.ToString("D")));


        #line default
        #line hidden

        #line 60 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
            this.Write("\");\r\n");


        #line default
        #line hidden

        #line 61 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"

            PushIndent("\t");
            GenerateDomainClassConstructors(domainClass, true);
            PopIndent();


        #line default
        #line hidden

        #line 65 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
            this.Write("\t#endregion\r\n");


        #line default
        #line hidden

        #line 67 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"

            PushIndent("\t");
            DomainProperty nameProperty = null;
            foreach (DomainProperty property in domainClass.Properties)
            {
                this.Write(DomainPropertyGenerator.Instance.GenerateDomainProperty(property));

                if (property.IsElementName)
                {
                    nameProperty = property;
                }
            }

            foreach (DomainRole role in domainClass.RolesPlayed)
            {
                this.Write(DomainRoleGenerator.Instance.GenerateOppositeRoleAccessor(role));
            }

            this.Write(MergeGenerator.Instance.GenerateModelMergeMembers(domainClass));

            PopIndent();

            if (domainClass.IsDomainModel)
            {
        #line default
        #line hidden

        #line 89 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
                this.Write("\t#region DomainFilePath\r\n\t/// <summary>\r\n\t/// Gets or sets the domain file path.\r" +
                           "\n\t/// </summary>\r\n\tpublic string DomainFilePath{ get; set; }\r\n\t#endregion\r\n");


        #line default
        #line hidden

        #line 96 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
            }

            string domainModelType = domainClass.GetMetaModel().GetFullName(true) + "DomainModel";
            string modifier        = "override ";


        #line default
        #line hidden

        #line 101 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
            this.Write("\t#region IDomainModelOwnable\r\n\t/*\r\n \t/// <summary>\r\n    /// Gets the document dat" +
                       "a\r\n    /// </summary>\r\n    public override DslEditorModeling::ModelData Document" +
                       "Data\r\n    {\r\n        get\r\n\t\t{\r\n");


        #line default
        #line hidden

        #line 111 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"

            if (this.EditorType == GenerationEditorType.VSPlugin)
            {
        #line default
        #line hidden

        #line 114 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
                this.Write("\t\t\t// Null because in the visual studio plugin environment there can be multiple " +
                           "model datas present at once. Therefore there\r\n\t\t\t// is no singleton accessor for" +
                           " the model data.\r\n\t\t\treturn null;\r\n");


        #line default
        #line hidden

        #line 118 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
            }
            else
            {
        #line default
        #line hidden

        #line 122 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
                this.Write("\t\t\treturn ");


        #line default
        #line hidden

        #line 123 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(domainClass.GetMetaModel().GetFullName(true)));


        #line default
        #line hidden

        #line 123 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
                this.Write("DocumentData.Instance;\r\n");


        #line default
        #line hidden

        #line 124 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
            }


        #line default
        #line hidden

        #line 126 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
            this.Write("\t\t}\r\n    }*/\r\n\t\t\r\n\t/// <summary>\r\n    /// Gets the domain model type.\r\n    /// </" +
                       "summary>\r\n    /// <returns>Domain model type.</returns>\r\n    public ");


        #line default
        #line hidden

        #line 134 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(modifier));


        #line default
        #line hidden

        #line 134 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
            this.Write("System.Type GetDomainModelType()\r\n\t{\r\n\t\treturn typeof(");


        #line default
        #line hidden

        #line 136 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(domainModelType));


        #line default
        #line hidden

        #line 136 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
            this.Write(");\r\n\t}\r\n\r\n    /// <summary>\r\n    /// Gets the domain model services.\r\n    /// </s" +
                       "ummary>\r\n    /// <returns>Domain model services.</returns>\r\n    public ");


        #line default
        #line hidden

        #line 143 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(modifier));


        #line default
        #line hidden

        #line 143 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
            this.Write("DslEditorModeling::IDomainModelServices GetDomainModelServices()\r\n\t{\r\n\t\treturn ");


        #line default
        #line hidden

        #line 145 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(this.MetaModel.GetFullName(true)));


        #line default
        #line hidden

        #line 145 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
            this.Write("DomainModelServices.Instance;\r\n\t}\r\n\t\r\n    /// <summary>\r\n    /// Gets the domain " +
                       "model DomainClassId.\r\n    /// </summary>\r\n    /// <returns></returns>\r\n    publi" +
                       "c ");


        #line default
        #line hidden

        #line 152 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(modifier));


        #line default
        #line hidden

        #line 152 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
            this.Write("System.Guid GetDomainModelTypeId()\r\n\t{\r\n\t\treturn ");


        #line default
        #line hidden

        #line 154 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(domainModelType));


        #line default
        #line hidden

        #line 154 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
            this.Write(".DomainModelId;\r\n\t}\t\r\n\r\n    /// <summary>\r\n    /// Gets or sets the value of the " +
                       "property (which is marked as element name)\r\n    /// </summary>\r\n    public ");


        #line default
        #line hidden

        #line 160 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(modifier));


        #line default
        #line hidden

        #line 160 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
            this.Write("string DomainElementName\r\n\t{\r\n\t\tget\r\n\t\t{\r\n");


        #line default
        #line hidden

        #line 164 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"

            if (nameProperty != null)
            {
        #line default
        #line hidden

        #line 167 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
                this.Write("\t\t\treturn this.");


        #line default
        #line hidden

        #line 168 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(nameProperty.Name));


        #line default
        #line hidden

        #line 168 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
                this.Write(";\r\n");


        #line default
        #line hidden

        #line 169 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
            }
            else
            {
                if (domainClass.BaseClass != null)
                {
        #line default
        #line hidden

        #line 175 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
                    this.Write("\t\t\treturn base.DomainElementName;\r\n");


        #line default
        #line hidden

        #line 177 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
                }
                else
                {
        #line default
        #line hidden

        #line 181 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
                    this.Write("\t\t\treturn null;\r\n");


        #line default
        #line hidden

        #line 183 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
                }
            }


        #line default
        #line hidden

        #line 186 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
            this.Write("\t\t}\r\n\t\tset\r\n\t\t{\r\n");


        #line default
        #line hidden

        #line 190 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"

            if (nameProperty != null)
            {
        #line default
        #line hidden

        #line 193 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
                this.Write("\t\t\tthis.");


        #line default
        #line hidden

        #line 194 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(nameProperty.Name));


        #line default
        #line hidden

        #line 194 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
                this.Write(" = value;\r\n");


        #line default
        #line hidden

        #line 195 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
            }
            else
            {
                if (domainClass.BaseClass != null)
                {
        #line default
        #line hidden

        #line 201 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
                    this.Write("\t\t\tbase.DomainElementName = value;\r\n");


        #line default
        #line hidden

        #line 203 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
                }
            }


        #line default
        #line hidden

        #line 206 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
            this.Write("\t\t}\r\n\t}\r\n\t\r\n    /// <summary>\r\n    /// Gets whether the domain element has a prop" +
                       "erty marked as element name.\r\n    /// </summary>\r\n    public ");


        #line default
        #line hidden

        #line 213 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(modifier));


        #line default
        #line hidden

        #line 213 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
            this.Write("bool DomainElementHasName \r\n    {\r\n\t\tget\r\n\t\t{\r\n");


        #line default
        #line hidden

        #line 217 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"

            if (nameProperty != null)
            {
        #line default
        #line hidden

        #line 220 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
                this.Write("\t\t\treturn true;\r\n");


        #line default
        #line hidden

        #line 222 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
            }
            else
            {
                if (domainClass.BaseClass != null)
                {
        #line default
        #line hidden

        #line 228 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
                    this.Write("\t\t\treturn base.DomainElementHasName;\r\n");


        #line default
        #line hidden

        #line 230 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
                }
                else
                {
        #line default
        #line hidden

        #line 234 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
                    this.Write("\t\t\treturn false;\r\n");


        #line default
        #line hidden

        #line 236 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
                }
            }


        #line default
        #line hidden

        #line 239 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
            this.Write("\t\t}\r\n    }\t\r\n\t\r\n    /// <summary>\r\n    /// Gets the domain element name info if t" +
                       "here is one; Null otherwise.\r\n    /// </summary>\r\n    public ");


        #line default
        #line hidden

        #line 246 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(modifier));


        #line default
        #line hidden

        #line 246 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
            this.Write("DslModeling::DomainPropertyInfo DomainElementNameInfo\r\n    {\r\n\t\tget\r\n\t\t{\r\n");


        #line default
        #line hidden

        #line 250 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"

            if (nameProperty != null)
            {
        #line default
        #line hidden

        #line 253 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
                this.Write("\t\t\treturn this.Store.DomainDataDirectory.GetDomainProperty(");


        #line default
        #line hidden

        #line 254 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(domainClass.GetFullName(true)));


        #line default
        #line hidden

        #line 254 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
                this.Write(".");


        #line default
        #line hidden

        #line 254 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(nameProperty.Name));


        #line default
        #line hidden

        #line 254 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
                this.Write("DomainPropertyId);\r\n");


        #line default
        #line hidden

        #line 255 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
            }
            else
            {
                if (domainClass.BaseClass != null)
                {
        #line default
        #line hidden

        #line 261 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
                    this.Write("\t\t\treturn base.DomainElementNameInfo;\r\n");


        #line default
        #line hidden

        #line 263 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
                }
                else
                {
        #line default
        #line hidden

        #line 267 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
                    this.Write("\t\t\treturn null;\r\n");


        #line default
        #line hidden

        #line 269 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
                }
            }


        #line default
        #line hidden

        #line 273 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
            this.Write("\t\t}\r\n    }\r\n\t\r\n\t/// <summary>\r\n    /// Gets the type of the ModelElement as strin" +
                       "g.\r\n    /// </summary>\r\n    public ");


        #line default
        #line hidden

        #line 280 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(modifier));


        #line default
        #line hidden

        #line 280 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
            this.Write("string DomainElementType\r\n    {\r\n        get\r\n        {\r\n            return \"");


        #line default
        #line hidden

        #line 284 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(domainClass.Name));


        #line default
        #line hidden

        #line 284 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
            this.Write("\";\r\n        }\r\n    }\r\n\r\n    /// <summary>\r\n    /// Gets the display name of the t" +
                       "ype of the ModelElement.\r\n    /// </summary>\r\n    public ");


        #line default
        #line hidden

        #line 291 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(modifier));


        #line default
        #line hidden

        #line 291 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
            this.Write("string DomainElementTypeDisplayName\r\n    {\r\n        get\r\n        {\r\n            r" +
                       "eturn \"");


        #line default
        #line hidden

        #line 295 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(domainClass.DisplayName));


        #line default
        #line hidden

        #line 295 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
            this.Write("\";\r\n        }\r\n    }\t\t\r\n\t#endregion\r\n\r\n\t/// <summary>\r\n    /// Gets the domain cl" +
                       "ass Id of this element.\r\n    /// </summary>\r\n    /// <returns>DomainClass Id.</r" +
                       "eturns>\r\n    public override System.Guid GetDomainClassId()\r\n    {\r\n        retu" +
                       "rn ");


        #line default
        #line hidden

        #line 306 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(domainClass.GetFullName(true)));


        #line default
        #line hidden

        #line 306 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
            this.Write(".DomainClassId;\r\n    }\r\n}\r\n");


        #line default
        #line hidden

        #line 309 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"

            // If this class is double-derived, generate the skeleton derived class (with just the
            // constructors)
            if (domainClass.GeneratesDoubleDerived)
            {
                this.Write(Utilities.Instance.GenerateSummary("DomainClass", domainClass, false));
                if (inheritanceDepth > 5)
                {
        #line default
        #line hidden

        #line 317 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
                    this.Write("[global::System.Diagnostics.CodeAnalysis.SuppressMessage(\"Microsoft.Maintainabili" +
                               "ty\", \"CA1501:AvoidExcessiveInheritance\", Justification = \"Generated code.\")]\r\n");


        #line default
        #line hidden

        #line 319 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
                }


        #line default
        #line hidden

        #line 321 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
                this.Write("\t\t\r\n");


        #line default
        #line hidden

        #line 322 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(CodeGenerationUtilities.GetAccessModifier(domainClass.AccessModifier)));


        #line default
        #line hidden

        #line 322 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(CodeGenerationUtilities.GetInheritanceModifier(domainClass.InheritanceModifier)));


        #line default
        #line hidden

        #line 322 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
                this.Write(" partial class ");


        #line default
        #line hidden

        #line 322 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(domainClass.Name));


        #line default
        #line hidden

        #line 322 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
                this.Write(" : ");


        #line default
        #line hidden

        #line 322 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(CodeGenerationUtilities.GetGenerationClassName(domainClass)));


        #line default
        #line hidden

        #line 322 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
                this.Write("\r\n{\r\n\t#region Constructors\r\n");


        #line default
        #line hidden

        #line 325 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"

                PushIndent("\t");
                GenerateDomainClassConstructors(domainClass, false);
                PopIndent();


        #line default
        #line hidden

        #line 329 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
                this.Write("\t#endregion\r\n}\r\n");


        #line default
        #line hidden

        #line 332 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
            }
            if (!string.IsNullOrEmpty(namespaceString))
            {
                PopIndent();


        #line default
        #line hidden

        #line 337 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
                this.Write("}\r\n");


        #line default
        #line hidden

        #line 339 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainClassGenerator.tt"
            }
        }
Beispiel #3
0
        private void GenerateResourceAttributesInternal(ModelElement domainObj, string genResourceName)
        {
            if (domainObj == null)
            {
                return;
            }

            string resourceKey         = "";
            string domainModelType     = "";
            string className           = "";
            bool   generateCategory    = false;
            bool   generateDisplayName = false;

            MetaModel dm = null;

            if (domainObj is DomainClass)
            {
                generateDisplayName = true;
                DomainClass c = (DomainClass)domainObj;
                resourceKey = c.GetFullName(false);
                dm          = c.GetMetaModel();
                className   = CodeGenerationUtilities.GetGenerationClassName(c);
            }
            else if (domainObj is DomainRelationship)
            {
                generateDisplayName = true;
                DomainRelationship c = (DomainRelationship)domainObj;
                resourceKey = c.GetFullName(false);
                dm          = c.GetMetaModel();
                className   = CodeGenerationUtilities.GetGenerationClassName(c);
            }
            else if (domainObj is DomainProperty)
            {
                generateDisplayName = true;
                DomainProperty          p = (DomainProperty)domainObj;
                AttributedDomainElement c = p.Element;
                resourceKey      = c.GetFullName(false) + "/" + p.Name;
                generateCategory = !String.IsNullOrEmpty(p.Category);

                dm = c.GetMetaModel();

                //if( c is DomainClass )
                //	dm = (c as DomainClass).GetMetaModel();
                //else
                //	dm = (c as DomainRelationship).GetMetaModel();
            }
            else if (domainObj is DomainRole)
            {
                generateDisplayName = true;
                DomainRole r = (DomainRole)domainObj;
                generateCategory = !String.IsNullOrEmpty(r.Category);
                DomainRelationship rel = r.Relationship;
                resourceKey = rel.GetFullName(false) + "/" + r.Name;
                dm          = rel.GetMetaModel();
            }
            else if (domainObj is EnumerationLiteral)
            {
                //generateDisplayName = true;
                EnumerationLiteral literal    = (EnumerationLiteral)domainObj;
                DomainEnumeration  domainEnum = literal.DomainEnumeration;
                dm          = domainEnum.MetaModel;
                resourceKey = domainEnum.GetFullName(false) + "/" + literal.Name;
            }
            else if (domainObj is MetaModel)
            {
                generateDisplayName = true;
                dm          = (MetaModel)domainObj;
                resourceKey = dm.GetFullName(false) + "DomainModel";
            }
            domainModelType = dm.GetFullName(true) + "DomainModel";

            // If no resource name specified for DslLibrary, don't generate any resource attributes.
            if (String.IsNullOrEmpty(dm.GeneratedResourceName))
            {
                return;
            }

            if (generateDisplayName)
            {
        #line default
        #line hidden

        #line 179 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\Utilities.tt"
                this.Write("[DslDesign::DisplayNameResource(\"");


        #line default
        #line hidden

        #line 180 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\Utilities.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(resourceKey));


        #line default
        #line hidden

        #line 180 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\Utilities.tt"
                this.Write(".DisplayName\", typeof(");


        #line default
        #line hidden

        #line 180 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\Utilities.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(domainModelType));


        #line default
        #line hidden

        #line 180 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\Utilities.tt"
                this.Write("), \"");


        #line default
        #line hidden

        #line 180 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\Utilities.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(genResourceName));


        #line default
        #line hidden

        #line 180 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\Utilities.tt"
                this.Write("\")]\r\n");


        #line default
        #line hidden

        #line 181 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\Utilities.tt"
            }
            if (generateCategory)
            {
        #line default
        #line hidden

        #line 185 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\Utilities.tt"
                this.Write("[DslDesign::CategoryResource(\"");


        #line default
        #line hidden

        #line 186 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\Utilities.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(resourceKey));


        #line default
        #line hidden

        #line 186 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\Utilities.tt"
                this.Write(".Category\", typeof(");


        #line default
        #line hidden

        #line 186 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\Utilities.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(domainModelType));


        #line default
        #line hidden

        #line 186 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\Utilities.tt"
                this.Write("), \"");


        #line default
        #line hidden

        #line 186 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\Utilities.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(genResourceName));


        #line default
        #line hidden

        #line 186 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\Utilities.tt"
                this.Write("\")]\r\n");


        #line default
        #line hidden

        #line 187 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\Utilities.tt"
            }


        #line default
        #line hidden

        #line 189 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\Utilities.tt"
            this.Write("[DslDesign::DescriptionResource(\"");


        #line default
        #line hidden

        #line 190 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\Utilities.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(resourceKey));


        #line default
        #line hidden

        #line 190 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\Utilities.tt"
            this.Write(".Description\", typeof(");


        #line default
        #line hidden

        #line 190 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\Utilities.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(domainModelType));


        #line default
        #line hidden

        #line 190 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\Utilities.tt"
            this.Write("), \"");


        #line default
        #line hidden

        #line 190 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\Utilities.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(genResourceName));


        #line default
        #line hidden

        #line 190 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\Utilities.tt"
            this.Write("\")]\r\n");


        #line default
        #line hidden

        #line 191 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\Utilities.tt"

            if (domainObj is DomainClass)
            {
        #line default
        #line hidden

        #line 194 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\Utilities.tt"
                this.Write("[DslModeling::DomainModelOwner(typeof(");


        #line default
        #line hidden

        #line 195 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\Utilities.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(domainModelType));


        #line default
        #line hidden

        #line 195 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\Utilities.tt"
                this.Write("))]\r\n");


        #line default
        #line hidden

        #line 196 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\Utilities.tt"
            }
        }