protected override IList <Microsoft.VisualStudio.Modeling.ModelElement> BuildElementList(object component)
        {
            Microsoft.VisualStudio.Modeling.DomainClassInfo domainClassInfo = DomainRoleInfo.RolePlayer;
            if (domainClassInfo == null || component == null)
            {
                return(new System.Collections.Generic.List <Microsoft.VisualStudio.Modeling.ModelElement>());
            }

            Microsoft.VisualStudio.Modeling.Store store = this.GetStore(component);
            System.Collections.Generic.IList <Microsoft.VisualStudio.Modeling.ModelElement> ilist;
            if (component is ReferenceRelationship)
            {
                ilist = store.ElementDirectory.FindElements(ReferenceRelationship.DomainClassId);
            }
            else
            {
                ilist = store.ElementDirectory.FindElements(EmbeddingRelationship.DomainClassId);
            }
            System.Collections.Generic.List <Microsoft.VisualStudio.Modeling.ModelElement> list = new System.Collections.Generic.List <Microsoft.VisualStudio.Modeling.ModelElement>();

            DomainRelationship domainClass1 = component as DomainRelationship;

            foreach (Microsoft.VisualStudio.Modeling.ModelElement modelElement in ilist)
            {
                DomainRelationship domainClass2 = modelElement as DomainRelationship;
                if ((domainClass2 != null) && ShouldIncludeCandidate(domainClass1, domainClass2))
                {
                    list.Add(modelElement);
                }
            }
            return(list);
        }
Ejemplo n.º 2
0
        public override void ElementPropertyChanged(ElementPropertyChangedEventArgs e)
        {
            if (e.ModelElement != null)
            {
                if (e.ModelElement.Store.TransactionManager.CurrentTransaction != null)
                {
                    if (e.ModelElement.Store.TransactionManager.CurrentTransaction.IsSerializing)
                    {
                        return;
                    }
                }
            }

            if (e.ModelElement == null)
            {
                return;
            }

            if (ImmutabilityExtensionMethods.GetLocks(e.ModelElement) != Locks.None)
            {
                return;
            }

            DomainRelationship domainRelationship = e.ModelElement as DomainRelationship;

            if (domainRelationship != null)
            {
                if (e.DomainProperty.Id == DomainRelationship.NameDomainPropertyId)
                {
                    if (domainRelationship.IsNameTracking == TrackingEnum.True)
                    {
                        domainRelationship.IsNameTracking = TrackingEnum.False;
                    }
                    else if (domainRelationship.IsNameTracking == TrackingEnum.IgnoreOnce)
                    {
                        domainRelationship.IsNameTracking = TrackingEnum.True;
                    }

                    foreach (DomainRole role in domainRelationship.RolesPlayed)
                    {
                        if (role.IsNameTracking == TrackingEnum.True)
                        {
                            if (role.Name != domainRelationship.Name)
                            {
                                role.Name           = domainRelationship.Name;
                                role.IsNameTracking = TrackingEnum.IgnoreOnce;
                            }
                        }
                    }
                }
                else if (e.DomainProperty.Id == DomainRelationship.InheritanceModifierDomainPropertyId)
                {
                    if (((InheritanceModifier)e.NewValue) == InheritanceModifier.Abstract || ((InheritanceModifier)e.OldValue) == InheritanceModifier.Abstract)
                    {
                        SerializationHelper.UpdateDerivedElementsSerializationDomainRoles(domainRelationship.Source.RolePlayer);
                    }
                }
            }
        }
 /// <summary>
 /// True if this DomainRelationship is derived from the given class
 /// </summary>
 public bool IsDerivedFrom(DomainRelationship candidateBase)
 {
     for (DomainRelationship domainClass = this; domainClass != null; domainClass = domainClass.BaseRelationship)
     {
         if (domainClass.Equals(candidateBase))
             return true;
     }
     return false;
 }
Ejemplo n.º 4
0
 /// <summary>
 /// True if this DomainRelationship is derived from the given class
 /// </summary>
 public bool IsDerivedFrom(DomainRelationship candidateBase)
 {
     for (DomainRelationship domainClass = this; domainClass != null; domainClass = domainClass.BaseRelationship)
     {
         if (domainClass.Equals(candidateBase))
         {
             return(true);
         }
     }
     return(false);
 }
 internal virtual bool ShouldIncludeCandidate(DomainRelationship currentRoleplayer, DomainRelationship eachCandidate)
 {
     if (currentRoleplayer.Source.RolePlayer is DomainClass && currentRoleplayer.Target.RolePlayer is DomainClass && 
         eachCandidate.Source.RolePlayer is DomainClass && eachCandidate.Target.RolePlayer is DomainClass)
     {
         if ((currentRoleplayer.Source.RolePlayer as DomainClass).IsDerivedFrom(eachCandidate.Source.RolePlayer as DomainClass) &&
             (currentRoleplayer.Target.RolePlayer as DomainClass).IsDerivedFrom(eachCandidate.Target.RolePlayer as DomainClass))
             if (eachCandidate != currentRoleplayer)
                 return !eachCandidate.IsDerivedFrom(currentRoleplayer);
     }
     
     return false;
 }
        internal virtual bool ShouldIncludeCandidate(DomainRelationship currentRoleplayer, DomainRelationship eachCandidate)
        {
            if (currentRoleplayer.Source.RolePlayer is DomainClass && currentRoleplayer.Target.RolePlayer is DomainClass &&
                eachCandidate.Source.RolePlayer is DomainClass && eachCandidate.Target.RolePlayer is DomainClass)
            {
                if ((currentRoleplayer.Source.RolePlayer as DomainClass).IsDerivedFrom(eachCandidate.Source.RolePlayer as DomainClass) &&
                    (currentRoleplayer.Target.RolePlayer as DomainClass).IsDerivedFrom(eachCandidate.Target.RolePlayer as DomainClass))
                {
                    if (eachCandidate != currentRoleplayer)
                    {
                        return(!eachCandidate.IsDerivedFrom(currentRoleplayer));
                    }
                }
            }

            return(false);
        }
Ejemplo n.º 7
0
        private static void FixUpDerivedRelationships(DomainRelationship domainClass, MetaModel model)
        {
            if (domainClass.ModelContext.MetaModel == model)
            {
                if (domainClass is EmbeddingRelationship)
                {
                    EmbeddingRelationship con = domainClass as EmbeddingRelationship;
                    SerializationHelper.UpdateSerializationDomainProperties(domainClass.Store, con.SerializedEmbeddingRelationship, domainClass);
                }

                if (domainClass is ReferenceRelationship)
                {
                    ReferenceRelationship con = domainClass as ReferenceRelationship;
                    SerializationHelper.UpdateSerializationDomainProperties(domainClass.Store, con.SerializedReferenceRelationship, domainClass);
                }
            }

            foreach (DomainRelationship derivedClass in domainClass.DerivedRelationships)
            {
                FixUpDerivedRelationships(derivedClass, model);
            }
        }
 /// <summary>
 /// Generates the name of the given relationship based on the names of the embedded domain roles.
 /// </summary>
 /// <param name="rel">Relationship to generate the name for.</param>
 /// <returns>Name of the relationship as string.</returns>
 public static string GenerateDomainRelationshipName(DomainRelationship rel)
 {
     return rel.Source.Name + "Has" + rel.Target.Name;
 }
Ejemplo n.º 9
0
        /// <summary>
        /// Updates the domain roles of the given element. (Roles from derived elements are included here).
        /// </summary>
        /// <param name="store">Store containing the domain model.</param>
        /// <param name="serializationElement"></param>
        /// <param name="domainClass"></param>
        public static void UpdateSerializationDomainRoles(Store store, SerializedDomainClass serializationElement, DomainClass domainClass)
        {
            if (serializationElement == null || domainClass == null)
            {
                return;
            }

            //if (!serializationElement.DomainClass.ParentModelContext.MetaModel.IsTopMost)
            //    return;

            List <SerializationElement> handledRS = new List <SerializationElement>();

            // get roles
            DomainClass           temp        = domainClass;
            SerializedDomainClass tempElement = serializationElement;

            while (temp != null && tempElement != null)
            {
                foreach (SerializationElement sP in tempElement.Children)
                {
                    if (sP is SerializedReferenceRelationship || sP is SerializedEmbeddingRelationship)
                    {
                        // see whether the relationship is abstract or not. If it is abstract, than we dont
                        // need to add its role players
                        DomainRelationship relationship   = null;
                        SerializedReferenceRelationship s = sP as SerializedReferenceRelationship;
                        if (s != null)
                        {
                            relationship = s.ReferenceRelationship;
                            if (s.ReferenceRelationship.InheritanceModifier == InheritanceModifier.Abstract && s.ReferenceRelationship.Source.RolePlayer != domainClass)
                            {
                                continue;
                            }
                        }

                        SerializedEmbeddingRelationship sE = sP as SerializedEmbeddingRelationship;
                        if (sE != null)
                        {
                            relationship = sE.EmbeddingRelationship;
                            if (sE.EmbeddingRelationship.InheritanceModifier == InheritanceModifier.Abstract && sE.EmbeddingRelationship.Source.RolePlayer != domainClass)
                            {
                                continue;
                            }
                        }

                        // see if the current element is still active
                        bool bActive = false;
                        foreach (DomainRole role in temp.RolesPlayed)
                        {
                            if (role.Relationship.Source == role && role.Relationship == relationship)
                            {
                                bActive = true;
                                continue;
                            }
                        }
                        if (!bActive)
                        {
                            continue;
                        }

                        handledRS.Add(sP);

                        if (tempElement != serializationElement)
                        {
                            // see if we already have this element embedded
                            bool bAdd = true;
                            foreach (SerializationElement elem in serializationElement.Children)
                            {
                                if (elem == sP)
                                {
                                    bAdd = false;
                                    break;
                                }
                            }

                            if (bAdd)
                            {
                                serializationElement.Children.Add(sP);
                            }
                        }
                    }
                }

                temp = temp.BaseClass;
                if (temp != null)
                {
                    tempElement = temp.SerializedDomainClass;
                }
                else
                {
                    tempElement = null;
                }
            }

            // remove unneded rs
            List <SerializationElement> toRemove = new List <SerializationElement>();

            foreach (SerializationElement sP in serializationElement.Children)
            {
                if (sP is SerializedReferenceRelationship || sP is SerializedEmbeddingRelationship)
                {
                    if (!handledRS.Contains(sP))
                    {
                        toRemove.Add(sP);
                    }
                }
            }

            foreach (SerializationElement sP in toRemove)
            {
                serializationElement.Children.Remove(sP);
            }
        }
Ejemplo n.º 10
0
 /// <summary>
 /// Generates the name of the given relationship based on the names of the embedded domain roles.
 /// </summary>
 /// <param name="rel">Relationship to generate the name for.</param>
 /// <returns>Name of the relationship as string.</returns>
 public static string GenerateDomainRelationshipName(DomainRelationship rel)
 {
     return(rel.Source.Name + "References" + rel.Target.Name);
 }
        private static void FixUpDerivedRelationships(DomainRelationship domainClass, MetaModel model)
        {
            if (domainClass.ModelContext.MetaModel == model)
            {
                if (domainClass is EmbeddingRelationship)
                {
                    EmbeddingRelationship con = domainClass as EmbeddingRelationship;
                    SerializationHelper.UpdateSerializationDomainProperties(domainClass.Store, con.SerializedEmbeddingRelationship, domainClass);
                }

                if (domainClass is ReferenceRelationship)
                {
                    ReferenceRelationship con = domainClass as ReferenceRelationship;
                    SerializationHelper.UpdateSerializationDomainProperties(domainClass.Store, con.SerializedReferenceRelationship, domainClass);
                }
            }

            foreach (DomainRelationship derivedClass in domainClass.DerivedRelationships)
                FixUpDerivedRelationships(derivedClass, model);
        }
/// <summary>
/// Generate the constructors for a DomainRelationship
/// </summary>
/// <param name="domainRelationship">the domain relationship to generate constructors for</param>
/// <param name="generatedClass">Whether this is the class carrying the generated code or the derived class in a double-derived pair</param>
private void GenerateDomainRelationshipConstructors(DomainRelationship domainRelationship, bool generatedClass)
{
	if(domainRelationship.HasCustomConstructor)
	{

        
        #line default
        #line hidden
        
        #line 455 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write("// Constructors were not generated for this relationship because it had HasCustom" +
        "Constructor\r\n// set to true. Please provide the constructors below in a partial " +
        "class.\r\n");

        
        #line default
        #line hidden
        
        #line 458 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"

		// We comment out the constructors if HasCustomConstructor is set to true
		PushIndent("//");
	}
	string ctorName;
	if ( generatedClass )
	{
		ctorName = CodeGenerationUtilities.GetGenerationClassName(domainRelationship);
	}
	else
	{
		ctorName = domainRelationship.Name;
	}
	if(domainRelationship.InheritanceModifier == InheritanceModifier.Abstract || (generatedClass && domainRelationship.GeneratesDoubleDerived ))
	{

        
        #line default
        #line hidden
        
        #line 473 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(@"/// <summary>
/// Constructor.
/// </summary>
/// <param name=""partition"">The Partition instance containing this ElementLink</param>
/// <param name=""roleAssignments"">A set of role assignments for roleplayer initialization</param>
/// <param name=""propertyAssignments"">A set of attribute assignments for attribute initialization</param>
protected ");

        
        #line default
        #line hidden
        
        #line 480 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(ctorName));

        
        #line default
        #line hidden
        
        #line 480 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write("(DslModeling::Partition partition, DslModeling::RoleAssignment[] roleAssignments," +
        " DslModeling::PropertyAssignment[] propertyAssignments)\r\n\t: base(partition, role" +
        "Assignments, propertyAssignments)\r\n{\r\n}\r\n");

        
        #line default
        #line hidden
        
        #line 484 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"

	}
	else 
	{
		string sourceType = domainRelationship.Source.RolePlayer.GetRelativeName(domainRelationship.Namespace, true);
		string targetType = domainRelationship.Target.RolePlayer.GetRelativeName(domainRelationship.Namespace, true);
		string sourceName = "source";
		string targetName = "target";
		

		// calc access modifier for the ctor. It has to be the minimum among source and target.
		string ctorAccessModifier = "public";
		if ( domainRelationship.Source.RolePlayer.AccessModifier == AccessModifier.Assembly || 
			 domainRelationship.Target.RolePlayer.AccessModifier == AccessModifier.Assembly)
		{
			ctorAccessModifier = "internal";	
		}
	

        
        #line default
        #line hidden
        
        #line 502 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write("\t\t\r\n/// <summary>\r\n/// Constructor\r\n/// Creates a ");

        
        #line default
        #line hidden
        
        #line 505 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(domainRelationship.Name));

        
        #line default
        #line hidden
        
        #line 505 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(" link in the same Partition as the given ");

        
        #line default
        #line hidden
        
        #line 505 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(domainRelationship.Source.RolePlayer.Name));

        
        #line default
        #line hidden
        
        #line 505 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write("\r\n/// </summary>\r\n/// <param name=\"");

        
        #line default
        #line hidden
        
        #line 507 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(sourceName));

        
        #line default
        #line hidden
        
        #line 507 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write("\">");

        
        #line default
        #line hidden
        
        #line 507 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(domainRelationship.Source.RolePlayer.Name));

        
        #line default
        #line hidden
        
        #line 507 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(" to use as the source of the relationship.</param>\r\n/// <param name=\"");

        
        #line default
        #line hidden
        
        #line 508 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(targetName));

        
        #line default
        #line hidden
        
        #line 508 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write("\">");

        
        #line default
        #line hidden
        
        #line 508 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(domainRelationship.Target.RolePlayer.Name));

        
        #line default
        #line hidden
        
        #line 508 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(" to use as the target of the relationship.</param>\r\n");

        
        #line default
        #line hidden
        
        #line 509 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(ctorAccessModifier));

        
        #line default
        #line hidden
        
        #line 509 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(" ");

        
        #line default
        #line hidden
        
        #line 509 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(ctorName));

        
        #line default
        #line hidden
        
        #line 509 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write("(");

        
        #line default
        #line hidden
        
        #line 509 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(sourceType));

        
        #line default
        #line hidden
        
        #line 509 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(" ");

        
        #line default
        #line hidden
        
        #line 509 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(sourceName));

        
        #line default
        #line hidden
        
        #line 509 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(", ");

        
        #line default
        #line hidden
        
        #line 509 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(targetType));

        
        #line default
        #line hidden
        
        #line 509 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(" ");

        
        #line default
        #line hidden
        
        #line 509 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(targetName));

        
        #line default
        #line hidden
        
        #line 509 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(")\r\n\t: base((");

        
        #line default
        #line hidden
        
        #line 510 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(sourceName));

        
        #line default
        #line hidden
        
        #line 510 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(" != null ? ");

        
        #line default
        #line hidden
        
        #line 510 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(sourceName));

        
        #line default
        #line hidden
        
        #line 510 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(".Partition : null), new DslModeling::RoleAssignment[]{new DslModeling::RoleAssign" +
        "ment(");

        
        #line default
        #line hidden
        
        #line 510 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(domainRelationship.Name));

        
        #line default
        #line hidden
        
        #line 510 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(".");

        
        #line default
        #line hidden
        
        #line 510 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(domainRelationship.Source.Name));

        
        #line default
        #line hidden
        
        #line 510 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write("DomainRoleId, ");

        
        #line default
        #line hidden
        
        #line 510 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(sourceName));

        
        #line default
        #line hidden
        
        #line 510 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write("), new DslModeling::RoleAssignment(");

        
        #line default
        #line hidden
        
        #line 510 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(domainRelationship.Name));

        
        #line default
        #line hidden
        
        #line 510 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(".");

        
        #line default
        #line hidden
        
        #line 510 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(domainRelationship.Target.Name));

        
        #line default
        #line hidden
        
        #line 510 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write("DomainRoleId, ");

        
        #line default
        #line hidden
        
        #line 510 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(targetName));

        
        #line default
        #line hidden
        
        #line 510 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(")}, ");

        
        #line default
        #line hidden
        
        #line 510 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(this.MetaModel.Namespace));

        
        #line default
        #line hidden
        
        #line 510 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(".");

        
        #line default
        #line hidden
        
        #line 510 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(this.MetaModel.Name));

        
        #line default
        #line hidden
        
        #line 510 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(@"DomainModelIdProvider.Instance.CreateId())
{
}

/// <summary>
/// Constructor
/// </summary>
/// <param name=""store"">Store where new link is to be created.</param>
/// <param name=""roleAssignments"">List of relationship role assignments.</param>
public ");

        
        #line default
        #line hidden
        
        #line 519 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(ctorName));

        
        #line default
        #line hidden
        
        #line 519 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write("(DslModeling::Store store, params DslModeling::RoleAssignment[] roleAssignments)\r" +
        "\n\t: base(store != null ? store.DefaultPartitionForClass(DomainClassId) : null, r" +
        "oleAssignments, ");

        
        #line default
        #line hidden
        
        #line 520 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(this.MetaModel.Namespace));

        
        #line default
        #line hidden
        
        #line 520 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(".");

        
        #line default
        #line hidden
        
        #line 520 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(this.MetaModel.Name));

        
        #line default
        #line hidden
        
        #line 520 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(@"DomainModelIdProvider.Instance.CreateId())
{
}

/// <summary>
/// Constructor
/// </summary>
/// <param name=""store"">Store where new link is to be created.</param>
/// <param name=""roleAssignments"">List of relationship role assignments.</param>
/// <param name=""propertyAssignments"">List of properties assignments to set on the new link.</param>
public ");

        
        #line default
        #line hidden
        
        #line 530 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(ctorName));

        
        #line default
        #line hidden
        
        #line 530 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write("(DslModeling::Store store, DslModeling::RoleAssignment[] roleAssignments, DslMode" +
        "ling::PropertyAssignment[] propertyAssignments)\r\n\t: base(store != null ? store.D" +
        "efaultPartitionForClass(DomainClassId) : null, roleAssignments, ");

        
        #line default
        #line hidden
        
        #line 531 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(this.MetaModel.Namespace));

        
        #line default
        #line hidden
        
        #line 531 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(".");

        
        #line default
        #line hidden
        
        #line 531 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(this.MetaModel.Name));

        
        #line default
        #line hidden
        
        #line 531 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(@"DomainModelIdProvider.Instance.AssignId(propertyAssignments))
{
}

/// <summary>
/// Constructor
/// </summary>
/// <param name=""partition"">Partition where new link is to be created.</param>
/// <param name=""roleAssignments"">List of relationship role assignments.</param>
public ");

        
        #line default
        #line hidden
        
        #line 540 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(ctorName));

        
        #line default
        #line hidden
        
        #line 540 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write("(DslModeling::Partition partition, params DslModeling::RoleAssignment[] roleAssig" +
        "nments)\r\n\t: base(partition, roleAssignments, ");

        
        #line default
        #line hidden
        
        #line 541 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(this.MetaModel.Namespace));

        
        #line default
        #line hidden
        
        #line 541 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(".");

        
        #line default
        #line hidden
        
        #line 541 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(this.MetaModel.Name));

        
        #line default
        #line hidden
        
        #line 541 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(@"DomainModelIdProvider.Instance.CreateId())
{
}

/// <summary>
/// Constructor
/// </summary>
/// <param name=""partition"">Partition where new link is to be created.</param>
/// <param name=""roleAssignments"">List of relationship role assignments.</param>
/// <param name=""propertyAssignments"">List of properties assignments to set on the new link.</param>
public ");

        
        #line default
        #line hidden
        
        #line 551 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(ctorName));

        
        #line default
        #line hidden
        
        #line 551 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write("(DslModeling::Partition partition, DslModeling::RoleAssignment[] roleAssignments," +
        " DslModeling::PropertyAssignment[] propertyAssignments)\r\n\t: base(partition, role" +
        "Assignments, ");

        
        #line default
        #line hidden
        
        #line 552 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(this.MetaModel.Namespace));

        
        #line default
        #line hidden
        
        #line 552 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(".");

        
        #line default
        #line hidden
        
        #line 552 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(this.MetaModel.Name));

        
        #line default
        #line hidden
        
        #line 552 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write("DomainModelIdProvider.Instance.AssignId(propertyAssignments))\r\n{\r\n}\r\n");

        
        #line default
        #line hidden
        
        #line 555 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"

	}
	if(domainRelationship.HasCustomConstructor)
	{
		PopIndent();
	}
}
// Generate a strongly-typed static accessor placed on a REL for getting REL instances that connect two MELs
private void GenerateLinkAccessor(DomainRelationship rel)
{
	bool getLinksRequiresNew = false;
	bool getLinkRequiresNew = false;
	for (DomainRelationship baseRel = rel.BaseRelationship as DomainRelationship; baseRel != null; baseRel = baseRel.BaseRelationship as DomainRelationship)
	{
		// If the roleplayer types in any of the base relationships is the same, we need a 'new'
		// keyword for this method.
		if (rel.Source.RolePlayer.GetFullName(true) == baseRel.Source.RolePlayer.GetFullName(true) &&
			rel.Target.RolePlayer.GetFullName(true) == baseRel.Target.RolePlayer.GetFullName(true))
		{
			getLinksRequiresNew = true;
			if(!baseRel.AllowsDuplicates)
			{
				getLinkRequiresNew = true;
				break;
			}
		}
	}

        
        #line default
        #line hidden
        
        #line 395 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write("#region ");

        
        #line default
        #line hidden
        
        #line 396 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(rel.Name));

        
        #line default
        #line hidden
        
        #line 396 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(" instance accessors\r\n\r\n/// <summary>\r\n/// Get any ");

        
        #line default
        #line hidden
        
        #line 399 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(rel.Name));

        
        #line default
        #line hidden
        
        #line 399 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(" links between a given ");

        
        #line default
        #line hidden
        
        #line 399 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(rel.Source.RolePlayer.Name));

        
        #line default
        #line hidden
        
        #line 399 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(" and a ");

        
        #line default
        #line hidden
        
        #line 399 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(rel.Target.RolePlayer.Name));

        
        #line default
        #line hidden
        
        #line 399 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(".\r\n/// </summary>\r\n[global::System.Diagnostics.DebuggerStepThrough]\r\n[global::Sys" +
        "tem.Diagnostics.CodeAnalysis.SuppressMessage(\"Microsoft.Design\", \"CA1011\")]\r\n");

        
        #line default
        #line hidden
        
        #line 403 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(CodeGenerationUtilities.GetGeneratedLinkAccessModifier(rel)));

        
        #line default
        #line hidden
        
        #line 403 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(" static ");

        
        #line default
        #line hidden
        
        #line 403 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(getLinksRequiresNew ? "new " : ""));

        
        #line default
        #line hidden
        
        #line 403 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write("global::System.Collections.ObjectModel.ReadOnlyCollection<");

        
        #line default
        #line hidden
        
        #line 403 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(rel.GetFullName(true)));

        
        #line default
        #line hidden
        
        #line 403 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write("> GetLinks( ");

        
        #line default
        #line hidden
        
        #line 403 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(rel.Source.RolePlayer.GetFullName(true)));

        
        #line default
        #line hidden
        
        #line 403 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(" source, ");

        
        #line default
        #line hidden
        
        #line 403 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(rel.Target.RolePlayer.GetFullName(true)));

        
        #line default
        #line hidden
        
        #line 403 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(" target )\r\n{\r\n\tglobal::System.Collections.Generic.List<");

        
        #line default
        #line hidden
        
        #line 405 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(rel.GetFullName(true)));

        
        #line default
        #line hidden
        
        #line 405 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write("> outLinks = new global::System.Collections.Generic.List<");

        
        #line default
        #line hidden
        
        #line 405 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(rel.GetFullName(true)));

        
        #line default
        #line hidden
        
        #line 405 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(">();\r\n\tglobal::System.Collections.Generic.IList<");

        
        #line default
        #line hidden
        
        #line 406 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(rel.GetFullName(true)));

        
        #line default
        #line hidden
        
        #line 406 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write("> links = DslModeling::DomainRoleInfo.GetElementLinks<");

        
        #line default
        #line hidden
        
        #line 406 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(rel.GetFullName(true)));

        
        #line default
        #line hidden
        
        #line 406 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(">(source, ");

        
        #line default
        #line hidden
        
        #line 406 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(rel.GetFullName(true)));

        
        #line default
        #line hidden
        
        #line 406 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(".");

        
        #line default
        #line hidden
        
        #line 406 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(rel.Source.Name));

        
        #line default
        #line hidden
        
        #line 406 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write("DomainRoleId);\r\n\tforeach ( ");

        
        #line default
        #line hidden
        
        #line 407 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(rel.GetFullName(true)));

        
        #line default
        #line hidden
        
        #line 407 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(" link in links )\r\n\t{\r\n\t\tif ( target.Equals(link.");

        
        #line default
        #line hidden
        
        #line 409 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(rel.Target.Name));

        
        #line default
        #line hidden
        
        #line 409 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(") )\r\n\t\t{\r\n\t\t\toutLinks.Add(link);\r\n\t\t}\r\n\t}\r\n\treturn outLinks.AsReadOnly();\r\n}\r\n");

        
        #line default
        #line hidden
        
        #line 416 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"

	// If AllowsDuplicates is false, only one link is allowed between any two role players
	if(!rel.AllowsDuplicates)
	{

        
        #line default
        #line hidden
        
        #line 420 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write("/// <summary>\r\n/// Get the one ");

        
        #line default
        #line hidden
        
        #line 422 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(rel.Name));

        
        #line default
        #line hidden
        
        #line 422 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(" link between a given ");

        
        #line default
        #line hidden
        
        #line 422 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(rel.Source.RolePlayer.Name));

        
        #line default
        #line hidden
        
        #line 422 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write("and a ");

        
        #line default
        #line hidden
        
        #line 422 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(rel.Target.RolePlayer.Name));

        
        #line default
        #line hidden
        
        #line 422 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(".\r\n/// </summary>\r\n[global::System.Diagnostics.DebuggerStepThrough]\r\n[global::Sys" +
        "tem.Diagnostics.CodeAnalysis.SuppressMessage(\"Microsoft.Design\", \"CA1011\")]\r\n");

        
        #line default
        #line hidden
        
        #line 426 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(CodeGenerationUtilities.GetGeneratedLinkAccessModifier(rel)));

        
        #line default
        #line hidden
        
        #line 426 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(" static ");

        
        #line default
        #line hidden
        
        #line 426 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(getLinkRequiresNew ? "new " : ""));

        
        #line default
        #line hidden
        
        #line 426 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(rel.GetFullName(true)));

        
        #line default
        #line hidden
        
        #line 426 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(" GetLink( ");

        
        #line default
        #line hidden
        
        #line 426 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(rel.Source.RolePlayer.GetFullName(true)));

        
        #line default
        #line hidden
        
        #line 426 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(" source, ");

        
        #line default
        #line hidden
        
        #line 426 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(rel.Target.RolePlayer.GetFullName(true)));

        
        #line default
        #line hidden
        
        #line 426 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(" target )\r\n{\r\n\tglobal::System.Collections.Generic.IList<");

        
        #line default
        #line hidden
        
        #line 428 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(rel.GetFullName(true)));

        
        #line default
        #line hidden
        
        #line 428 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write("> links = DslModeling::DomainRoleInfo.GetElementLinks<");

        
        #line default
        #line hidden
        
        #line 428 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(rel.GetFullName(true)));

        
        #line default
        #line hidden
        
        #line 428 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(">(source, ");

        
        #line default
        #line hidden
        
        #line 428 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(rel.GetFullName(true)));

        
        #line default
        #line hidden
        
        #line 428 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(".");

        
        #line default
        #line hidden
        
        #line 428 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(rel.Source.Name));

        
        #line default
        #line hidden
        
        #line 428 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write("DomainRoleId);\r\n\tforeach ( ");

        
        #line default
        #line hidden
        
        #line 429 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(rel.GetFullName(true)));

        
        #line default
        #line hidden
        
        #line 429 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(" link in links )\r\n\t{\r\n\t\tif ( target.Equals(link.");

        
        #line default
        #line hidden
        
        #line 431 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(rel.Target.Name));

        
        #line default
        #line hidden
        
        #line 431 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(") )\r\n\t\t{\r\n\t\t\treturn link;\r\n\t\t}\r\n\t}\r\n\treturn null;\r\n}\r\n\r\n");

        
        #line default
        #line hidden
        
        #line 439 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"

	}

        
        #line default
        #line hidden
        
        #line 441 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write("#endregion\r\n");

        
        #line default
        #line hidden
        
        #line 443 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"

}
public void GenerateDomainRelationship(DomainRelationship domainRelationship)
{
	//IDable, IDomainModelOwnable
	
	
	string baseClass = "DslEditorModeling::DomainModelLink";
	baseClass = CodeGenerationUtilities.GetBaseRelationship(domainRelationship, baseClass);
	
	string namespaceString = domainRelationship.Namespace;
	if(!string.IsNullOrEmpty(namespaceString))
	{

        
        #line default
        #line hidden
        
        #line 27 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write("namespace ");

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

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

        
        #line default
        #line hidden
        
        #line 30 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"

	}
	PushIndent("\t");	
	this.Write(Utilities.Instance.GenerateSummary("DomainRelationship", domainRelationship, true));
	//GenerateClrAttributes(domainRelationship.Attributes);
	this.Write(Utilities.Instance.GenerateResourceAttributes(domainRelationship, GeneratedResourceName));
	//GenerateClsCompliantAttribute(domainRelationship.AccessModifier);
	this.Write(Utilities.Instance.GenerateDebuggerDisplayAttribute(domainRelationship)); 
	PopIndent();

        
        #line default
        #line hidden
        
        #line 39 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write("\t[DslModeling::DomainRelationship(");

        
        #line default
        #line hidden
        
        #line 40 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
 if(domainRelationship.AllowsDuplicates) { 
        
        #line default
        #line hidden
        
        #line 40 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write("AllowsDuplicates = true");

        
        #line default
        #line hidden
        
        #line 40 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
 } 
        
        #line default
        #line hidden
        
        #line 40 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(")]\r\n\t[DslModeling::DomainObjectId(\"");

        
        #line default
        #line hidden
        
        #line 41 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(domainRelationship.Id.ToString("D")));

        
        #line default
        #line hidden
        
        #line 41 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write("\")]\r\n\t");

        
        #line default
        #line hidden
        
        #line 42 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(CodeGenerationUtilities.GetAccessModifier(domainRelationship.AccessModifier)));

        
        #line default
        #line hidden
        
        #line 42 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(CodeGenerationUtilities.GetGenerationInheritanceModifier(domainRelationship)));

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

        
        #line default
        #line hidden
        
        #line 42 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(CodeGenerationUtilities.GetGenerationClassName(domainRelationship)));

        
        #line default
        #line hidden
        
        #line 42 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(" : ");

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

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

        
        #line default
        #line hidden
        
        #line 47 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(domainRelationship.Name));

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

        
        #line default
        #line hidden
        
        #line 49 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(domainRelationship.Id.ToString("D")));

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

        
        #line default
        #line hidden
        
        #line 51 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"

	PushIndent("\t");
	PushIndent("\t");
	GenerateDomainRelationshipConstructors(domainRelationship, true);
	PopIndent();
	PopIndent();

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

        
        #line default
        #line hidden
        
        #line 59 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"

	PushIndent("\t");
	PushIndent("\t");
	// Generate properties to access the roles of this link, and static
	// methods to access the opposite roleplayers given a roleplayer.
	foreach(DomainRole role in domainRelationship.Roles)
	{
		this.Write(DomainRoleGenerator.Instance.GenerateDomainRole(role));
		this.Write(DomainRoleGenerator.Instance.GenerateStaticRoleAccessorOnRelationship(role.Opposite, domainRelationship));
		this.Write(DomainRoleGenerator.Instance.GenerateDomainRoleOverride(role));
	}
	
	// Generate properties for domain properties on this relationship
	DomainProperty nameProperty = null;
	foreach(DomainProperty property in domainRelationship.Properties) 
	{
		this.Write(DomainPropertyGenerator.Instance.GenerateDomainProperty(property));
		
		if( property.IsElementName )
			nameProperty = property;		
	}
	
	// Add accessors for roles that this REL plays in some other REL.
	/*
	if ( domainRelationship.RolesPlayed.Count > 0 )
	{

        
        #line default
        #line hidden
        
        #line 85 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write("#region Accessors for roles that this REL plays in other RELs\r\n");

        
        #line default
        #line hidden
        
        #line 87 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"

	}
	foreach(DomainRole role in domainRelationship.RolesPlayed)
	{
		GenerateOppositeRoleAccessor(role);
	}
	if ( domainRelationship.RolesPlayed.Count > 0 )
	{

        
        #line default
        #line hidden
        
        #line 95 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write("#endregion\r\n");

        
        #line default
        #line hidden
        
        #line 97 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"

	}
	*/
	
	// Add static accessors for link instances
	this.Write(DomainRoleGenerator.Instance.GenerateRoleLinkAccessor(domainRelationship.Source));
	this.Write(DomainRoleGenerator.Instance.GenerateRoleLinkAccessor(domainRelationship.Target));
	GenerateLinkAccessor(domainRelationship);
	this.PopIndent();
	
	string domainModelType = domainRelationship.GetMetaModel().GetFullName(true)+"DomainModel";
	string modifier = "override ";


        
        #line default
        #line hidden
        
        #line 110 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write("\t\t\r\n    /// <summary>\r\n    /// Gets the domain class Id of this element.\r\n    ///" +
        " </summary>\r\n    /// <returns>DomainClass Id.</returns>\r\n    public override Sys" +
        "tem.Guid GetDomainClassId()\r\n\t{\t\t\r\n\t\treturn ");

        
        #line default
        #line hidden
        
        #line 118 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(domainRelationship.GetFullName(true)));

        
        #line default
        #line hidden
        
        #line 118 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(".DomainClassId;\t\t\r\n\t}\r\n\r\n    /// <summary>\r\n    /// Gets whether this is an embed" +
        "ding relationship or not.\r\n    /// </summary>\r\n    public override bool IsEmbedd" +
        "ing\r\n    {\r\n        get\r\n\t\t{\r\n");

        
        #line default
        #line hidden
        
        #line 128 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"

	if( domainRelationship is EmbeddingRelationship )
	{

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

        
        #line default
        #line hidden
        
        #line 133 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"

	}
	else
	{

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

        
        #line default
        #line hidden
        
        #line 139 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
		
	}

        
        #line default
        #line hidden
        
        #line 141 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write("\t\t}\r\n    }\r\n\r\n\t#region IDomainModelOwnable\r\n\t/*\r\n\t/// <summary>\r\n    /// Gets the" +
        " document data\r\n    /// </summary>\r\n    public ");

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

        
        #line default
        #line hidden
        
        #line 150 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write("DslEditorModeling::ModelData DocumentData\r\n    {\r\n        get\r\n\t\t{\r\n");

        
        #line default
        #line hidden
        
        #line 154 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"

	if( this.EditorType == GenerationEditorType.VSPlugin )
	{

        
        #line default
        #line hidden
        
        #line 157 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.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 161 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"

	}
	else
	{

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

        
        #line default
        #line hidden
        
        #line 166 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(domainRelationship.GetMetaModel().GetFullName(true)));

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

        
        #line default
        #line hidden
        
        #line 167 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"

	}

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

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

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

        
        #line default
        #line hidden
        
        #line 180 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.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\DomainRelationshipGenerator.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></returns>\r\n    public ");

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

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

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

        
        #line default
        #line hidden
        
        #line 189 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.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 196 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(modifier));

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

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

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

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

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

        
        #line default
        #line hidden
        
        #line 208 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"

		if( nameProperty != null )
		{

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

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

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

        
        #line default
        #line hidden
        
        #line 213 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"

		}
		else
		{
			if( domainRelationship.BaseRelationship != null )
			{

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

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

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

        
        #line default
        #line hidden
        
        #line 227 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"

			}
		}

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

        
        #line default
        #line hidden
        
        #line 234 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"

		if( nameProperty != null )
		{

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

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

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

        
        #line default
        #line hidden
        
        #line 239 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"

		}
		else
		{
			if( domainRelationship.BaseRelationship != null )
			{

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

        
        #line default
        #line hidden
        
        #line 247 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"

			}			
		}

        
        #line default
        #line hidden
        
        #line 250 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.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 257 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(modifier));

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

        
        #line default
        #line hidden
        
        #line 261 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"

		if( nameProperty != null )
		{

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

        
        #line default
        #line hidden
        
        #line 266 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"

		}
		else
		{
			if( domainRelationship.BaseRelationship != null )
			{

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

        
        #line default
        #line hidden
        
        #line 274 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"

			}
			else
			{

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

        
        #line default
        #line hidden
        
        #line 280 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"

			}
		}

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

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

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

        
        #line default
        #line hidden
        
        #line 294 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"

		if( nameProperty != null )
		{

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

        
        #line default
        #line hidden
        
        #line 298 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(domainRelationship.GetFullName(true)));

        
        #line default
        #line hidden
        
        #line 298 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(".");

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

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

        
        #line default
        #line hidden
        
        #line 299 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"

		}
		else
		{
			if( domainRelationship.BaseRelationship != null )
			{

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

        
        #line default
        #line hidden
        
        #line 307 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"

			}
			else
			{

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

        
        #line default
        #line hidden
        
        #line 313 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"

		
			}
		}

        
        #line default
        #line hidden
        
        #line 317 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.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 324 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(modifier));

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

        
        #line default
        #line hidden
        
        #line 328 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(domainRelationship.Name));

        
        #line default
        #line hidden
        
        #line 328 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.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 335 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(modifier));

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

        
        #line default
        #line hidden
        
        #line 339 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(domainRelationship.DisplayName));

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

        
        #line default
        #line hidden
        
        #line 344 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"

	// If this link is double-derived, generate the skeleton derived class (with just the
	// constructors)
	if ( domainRelationship.GeneratesDoubleDerived )
	{
		this.Write(Utilities.Instance.GenerateSummary("DomainRelationship", domainRelationship, false));
		//GenerateClsCompliantAttribute(domainRelationship.AccessModifier);

        
        #line default
        #line hidden
        
        #line 351 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write("\t");

        
        #line default
        #line hidden
        
        #line 352 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(CodeGenerationUtilities.GetAccessModifier(domainRelationship.AccessModifier)));

        
        #line default
        #line hidden
        
        #line 352 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(CodeGenerationUtilities.GetInheritanceModifier(domainRelationship.InheritanceModifier)));

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

        
        #line default
        #line hidden
        
        #line 352 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(domainRelationship.Name));

        
        #line default
        #line hidden
        
        #line 352 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(" : ");

        
        #line default
        #line hidden
        
        #line 352 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(CodeGenerationUtilities.GetGenerationClassName(domainRelationship)));

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

        
        #line default
        #line hidden
        
        #line 355 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"

		PushIndent("\t");
		PushIndent("\t");
		GenerateDomainRelationshipConstructors(domainRelationship, false);
		PopIndent();
		PopIndent();

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

        
        #line default
        #line hidden
        
        #line 364 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"

	}
	if(!string.IsNullOrEmpty(namespaceString))
	{
		PopIndent();

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

        
        #line default
        #line hidden
        
        #line 371 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRelationshipGenerator.tt"

	}	
}
// Generate static methods on the relationship to access the opposite role players of a given role player.
private void GenerateStaticRoleAccessorOnRelationshipInternal(DomainRole role, DomainRelationship relationship)
{
	DomainRole opposite = role.Opposite;
	// Camel case the role player name to use as the parameter name
	string roleParameterName = "element";
	string oppositeRoleParameterName = "new"+opposite.Name.TrimStart('@');

        
        #line default
        #line hidden
        
        #line 391 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRoleGenerator.tt"
this.Write("#region Static methods to access ");

        
        #line default
        #line hidden
        
        #line 392 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRoleGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(role.PropertyName));

        
        #line default
        #line hidden
        
        #line 392 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRoleGenerator.tt"
this.Write(" of a ");

        
        #line default
        #line hidden
        
        #line 392 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRoleGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(role.RolePlayer.Name));

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

        
        #line default
        #line hidden
        
        #line 393 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRoleGenerator.tt"


	bool getRequiresNew = false;
	bool setRequiresNew = false;
	
	string roleType = role.RolePlayer.GetRelativeName(relationship.Namespace, true);
	string oppositeRoleType = opposite.RolePlayer.GetRelativeName(relationship.Namespace, true);
	
	// Figure out if the get or set requires a 'new' keyword (if it's already declared in a base relationship).
	for (DomainRelationship baseRel = role.Relationship.BaseRelationship as DomainRelationship; baseRel != null; baseRel = baseRel.BaseRelationship as DomainRelationship)
	{
		foreach (DomainRole baseRole in baseRel.Roles)
		{
			if (baseRole.PropertyName == role.PropertyName &&
				// UNDONE: GeMathew - should we be using relationship.Namespace instead in the line below?
				baseRole.RolePlayer.GetRelativeName(baseRel.Namespace, true) == roleType)
			{
				getRequiresNew = true;
				if (baseRole.Opposite.RolePlayer.GetRelativeName(baseRel.Namespace, true) == oppositeRoleType)
				{
					setRequiresNew = true;
				}
			}
		}
	}
	
	if(role.Multiplicity == Tum.PDE.LanguageDSL.Multiplicity.One || role.Multiplicity == Tum.PDE.LanguageDSL.Multiplicity.ZeroOne)
	{

        
        #line default
        #line hidden
        
        #line 421 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRoleGenerator.tt"
this.Write("/// <summary>\r\n/// Gets ");

        
        #line default
        #line hidden
        
        #line 423 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRoleGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(role.PropertyName));

        
        #line default
        #line hidden
        
        #line 423 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRoleGenerator.tt"
this.Write(".\r\n/// </summary>\r\n[global::System.Diagnostics.DebuggerStepThrough]\r\n[global::Sys" +
        "tem.Diagnostics.CodeAnalysis.SuppressMessage(\"Microsoft.Design\", \"CA1011\")]\r\n");

        
        #line default
        #line hidden
        
        #line 427 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRoleGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(CodeGenerationUtilities.GetGeneratedPropertyGetterAccessModifier(role)));

        
        #line default
        #line hidden
        
        #line 427 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRoleGenerator.tt"
this.Write(" static ");

        
        #line default
        #line hidden
        
        #line 427 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRoleGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(getRequiresNew ? "new " : ""));

        
        #line default
        #line hidden
        
        #line 427 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRoleGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(oppositeRoleType));

        
        #line default
        #line hidden
        
        #line 427 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRoleGenerator.tt"
this.Write(" Get");

        
        #line default
        #line hidden
        
        #line 427 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRoleGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(role.PropertyName.TrimStart('@')));

        
        #line default
        #line hidden
        
        #line 427 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRoleGenerator.tt"
this.Write("(");

        
        #line default
        #line hidden
        
        #line 427 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRoleGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(roleType));

        
        #line default
        #line hidden
        
        #line 427 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRoleGenerator.tt"
this.Write(" ");

        
        #line default
        #line hidden
        
        #line 427 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRoleGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(roleParameterName));

        
        #line default
        #line hidden
        
        #line 427 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRoleGenerator.tt"
this.Write(")\r\n{\r\n\treturn DslModeling::DomainRoleInfo.GetLinkedElement(");

        
        #line default
        #line hidden
        
        #line 429 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRoleGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(roleParameterName));

        
        #line default
        #line hidden
        
        #line 429 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRoleGenerator.tt"
this.Write(", ");

        
        #line default
        #line hidden
        
        #line 429 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRoleGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(role.Name));

        
        #line default
        #line hidden
        
        #line 429 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRoleGenerator.tt"
this.Write("DomainRoleId) as ");

        
        #line default
        #line hidden
        
        #line 429 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRoleGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(opposite.RolePlayer.GetRelativeName(relationship.Namespace, true)));

        
        #line default
        #line hidden
        
        #line 429 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRoleGenerator.tt"
this.Write(";\r\n}\r\n\r\n/// <summary>\r\n/// Sets ");

        
        #line default
        #line hidden
        
        #line 433 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRoleGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(role.PropertyName));

        
        #line default
        #line hidden
        
        #line 433 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRoleGenerator.tt"
this.Write(".\r\n/// </summary>\r\n[global::System.Diagnostics.DebuggerStepThrough]\r\n[global::Sys" +
        "tem.Diagnostics.CodeAnalysis.SuppressMessage(\"Microsoft.Design\", \"CA1011\")]\r\n");

        
        #line default
        #line hidden
        
        #line 437 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRoleGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(CodeGenerationUtilities.GetGeneratedPropertySetterAccessModifier(role)));

        
        #line default
        #line hidden
        
        #line 437 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRoleGenerator.tt"
this.Write(" static ");

        
        #line default
        #line hidden
        
        #line 437 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRoleGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(setRequiresNew ? "new " : ""));

        
        #line default
        #line hidden
        
        #line 437 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRoleGenerator.tt"
this.Write("void Set");

        
        #line default
        #line hidden
        
        #line 437 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRoleGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(role.PropertyName.TrimStart('@')));

        
        #line default
        #line hidden
        
        #line 437 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRoleGenerator.tt"
this.Write("(");

        
        #line default
        #line hidden
        
        #line 437 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRoleGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(roleType));

        
        #line default
        #line hidden
        
        #line 437 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRoleGenerator.tt"
this.Write(" ");

        
        #line default
        #line hidden
        
        #line 437 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRoleGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(roleParameterName));

        
        #line default
        #line hidden
        
        #line 437 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRoleGenerator.tt"
this.Write(", ");

        
        #line default
        #line hidden
        
        #line 437 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRoleGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(oppositeRoleType));

        
        #line default
        #line hidden
        
        #line 437 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRoleGenerator.tt"
this.Write(" ");

        
        #line default
        #line hidden
        
        #line 437 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRoleGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(oppositeRoleParameterName));

        
        #line default
        #line hidden
        
        #line 437 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRoleGenerator.tt"
this.Write(")\r\n{\r\n\tDslModeling::DomainRoleInfo.SetLinkedElement(");

        
        #line default
        #line hidden
        
        #line 439 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRoleGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(roleParameterName));

        
        #line default
        #line hidden
        
        #line 439 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRoleGenerator.tt"
this.Write(", ");

        
        #line default
        #line hidden
        
        #line 439 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRoleGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(role.Name));

        
        #line default
        #line hidden
        
        #line 439 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRoleGenerator.tt"
this.Write("DomainRoleId, ");

        
        #line default
        #line hidden
        
        #line 439 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRoleGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(oppositeRoleParameterName));

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

        
        #line default
        #line hidden
        
        #line 441 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRoleGenerator.tt"

	}
	else
	{
		// If the multiplicity of the role is *, figure out what type of 
		// collection type to use. If the user specified a custom collection
		// type, use that.
		string linkedElementCollectionType;
		if (role.Relationship.InheritanceModifier == InheritanceModifier.Abstract)
			{
				linkedElementCollectionType = "DslModeling::ReadOnlyLinkedElementCollection";
			}
			else
			{
				linkedElementCollectionType = "DslModeling::LinkedElementCollection";
			}


        
        #line default
        #line hidden
        
        #line 458 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRoleGenerator.tt"
this.Write("/// <summary>\r\n/// Gets a list of ");

        
        #line default
        #line hidden
        
        #line 460 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRoleGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(role.PropertyName));

        
        #line default
        #line hidden
        
        #line 460 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRoleGenerator.tt"
this.Write(".\r\n/// </summary>\r\n[global::System.Diagnostics.DebuggerStepThrough]\r\n[global::Sys" +
        "tem.Diagnostics.CodeAnalysis.SuppressMessage(\"Microsoft.Design\", \"CA1011\")]\r\n");

        
        #line default
        #line hidden
        
        #line 464 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRoleGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(CodeGenerationUtilities.GetGeneratedPropertyGetterAccessModifier(role)));

        
        #line default
        #line hidden
        
        #line 464 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRoleGenerator.tt"
this.Write(" static ");

        
        #line default
        #line hidden
        
        #line 464 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRoleGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(getRequiresNew ? "new " : ""));

        
        #line default
        #line hidden
        
        #line 464 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRoleGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(linkedElementCollectionType));

        
        #line default
        #line hidden
        
        #line 464 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRoleGenerator.tt"
this.Write("<");

        
        #line default
        #line hidden
        
        #line 464 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRoleGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(oppositeRoleType));

        
        #line default
        #line hidden
        
        #line 464 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRoleGenerator.tt"
this.Write("> Get");

        
        #line default
        #line hidden
        
        #line 464 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRoleGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(role.PropertyName.TrimStart('@')));

        
        #line default
        #line hidden
        
        #line 464 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRoleGenerator.tt"
this.Write("(");

        
        #line default
        #line hidden
        
        #line 464 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRoleGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(roleType));

        
        #line default
        #line hidden
        
        #line 464 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRoleGenerator.tt"
this.Write(" ");

        
        #line default
        #line hidden
        
        #line 464 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRoleGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(roleParameterName));

        
        #line default
        #line hidden
        
        #line 464 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRoleGenerator.tt"
this.Write(")\r\n{\r\n\treturn GetRoleCollection<");

        
        #line default
        #line hidden
        
        #line 466 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRoleGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(linkedElementCollectionType));

        
        #line default
        #line hidden
        
        #line 466 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRoleGenerator.tt"
this.Write("<");

        
        #line default
        #line hidden
        
        #line 466 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRoleGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(oppositeRoleType));

        
        #line default
        #line hidden
        
        #line 466 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRoleGenerator.tt"
this.Write(">, ");

        
        #line default
        #line hidden
        
        #line 466 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRoleGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(oppositeRoleType));

        
        #line default
        #line hidden
        
        #line 466 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRoleGenerator.tt"
this.Write(">(");

        
        #line default
        #line hidden
        
        #line 466 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRoleGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(roleParameterName));

        
        #line default
        #line hidden
        
        #line 466 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRoleGenerator.tt"
this.Write(", ");

        
        #line default
        #line hidden
        
        #line 466 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRoleGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(role.Name));

        
        #line default
        #line hidden
        
        #line 466 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRoleGenerator.tt"
this.Write("DomainRoleId);\r\n}\r\n");

        
        #line default
        #line hidden
        
        #line 468 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRoleGenerator.tt"

	}

        
        #line default
        #line hidden
        
        #line 470 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRoleGenerator.tt"
this.Write("#endregion\r\n");

        
        #line default
        #line hidden
        
        #line 472 "J:\Uni\CC Processes\Werkzeuge\PDE 2\Tum.PDE.ToolFramework\Tum.PDE.ToolFramework.Templates\DomainRoleGenerator.tt"

}
public string GenerateStaticRoleAccessorOnRelationship(DomainRole role, DomainRelationship relationship) 
{
	this.GenerationEnvironment = null;
	this.GenerateStaticRoleAccessorOnRelationshipInternal(role, relationship);
	return this.GenerationEnvironment.ToString();
}