Example #1
0
        private static string GetAbstractElementSchemaPath(AbstractElementSchema element)
        {
            var path = string.Empty;

            path = path.Insert(0, string.Concat(SchemaPathDelimiter, element.Name));
            while (element != null && element.View == null)
            {
                element = element.Owner;
                if (element != null)
                {
                    path = path.Insert(0, string.Concat(SchemaPathDelimiter, element.Name));
                }
            }

            if (element == null)
            {
                return(string.Empty);
            }

            path = path.Insert(0, element.View.Name);
            return(string.Concat(element.View.Pattern.Name, SchemaPathDelimiter, path));
        }
        private static string GetAbstractElementSchemaPath(AbstractElementSchema element)
        {
            var path = string.Empty;
            path = path.Insert(0, string.Concat(SchemaPathDelimiter, element.Name));
            while (element != null && element.View == null)
            {
                element = element.Owner;
                if (element != null)
                {
                    path = path.Insert(0, string.Concat(SchemaPathDelimiter, element.Name));
                }
            }

            if (element == null)
            {
                return string.Empty;
            }

            path = path.Insert(0, element.View.Name);
            return string.Concat(element.View.Pattern.Name, SchemaPathDelimiter, path);
        }
		private static void WriteChildElements(DslModeling::SerializationContext serializationContext, AbstractElementSchema element, global::System.Xml.XmlWriter writer)
		{
			// ElementHasElements
			global::System.Collections.ObjectModel.ReadOnlyCollection<ElementHasElements> allElementHasElementsInstances = ElementHasElements.GetLinksToElements(element);
			if (!serializationContext.Result.Failed && allElementHasElementsInstances.Count > 0)
			{
				foreach (ElementHasElements eachElementHasElementsInstance in allElementHasElementsInstances)
				{
					if (serializationContext.Result.Failed)
						break;
	
					DslModeling::DomainClassXmlSerializer relSerializer = serializationContext.Directory.GetSerializer(eachElementHasElementsInstance.GetDomainClass().Id);
					global::System.Diagnostics.Debug.Assert(relSerializer != null, "Cannot find serializer for " + eachElementHasElementsInstance.GetDomainClass().Name + "!");
					relSerializer.Write(serializationContext, eachElementHasElementsInstance, writer);
				}
			}
	
			// ElementHasExtensionPoints
			global::System.Collections.ObjectModel.ReadOnlyCollection<ElementHasExtensionPoints> allElementHasExtensionPointsInstances = ElementHasExtensionPoints.GetLinksToExtensionPoints(element);
			if (!serializationContext.Result.Failed && allElementHasExtensionPointsInstances.Count > 0)
			{
				foreach (ElementHasExtensionPoints eachElementHasExtensionPointsInstance in allElementHasExtensionPointsInstances)
				{
					if (serializationContext.Result.Failed)
						break;
	
					DslModeling::DomainClassXmlSerializer relSerializer = serializationContext.Directory.GetSerializer(eachElementHasExtensionPointsInstance.GetDomainClass().Id);
					global::System.Diagnostics.Debug.Assert(relSerializer != null, "Cannot find serializer for " + eachElementHasExtensionPointsInstance.GetDomainClass().Name + "!");
					relSerializer.Write(serializationContext, eachElementHasExtensionPointsInstance, writer);
				}
			}
	
		}
		/// <summary>
		/// This method deserializes all child model elements.
		/// </summary>
		/// <remarks>
		/// The caller will position the reader at the open tag of the first child XML element to deserialized.
		/// This method will read as many child elements as it can. It returns under three circumstances:
		/// 1) When an unknown child XML element is encountered. In this case, this method will position the reader at the 
		///    open tag of the unknown element. This implies that if the first child XML element is unknown, this method 
		///    should return immediately and do nothing.
		/// 2) When all child XML elemnets are read. In this case, the reader will be positioned at the end tag of the parent element.
		/// 3) EOF.
		/// </remarks>
		/// <param name="serializationContext">Serialization context.</param>
		/// <param name="reader">XmlReader to read serialized data from.</param>
		/// <param name="element">In-memory AbstractElementSchema instance that will get the deserialized data.</param>
		private static void ReadChildElements(DslModeling::SerializationContext serializationContext, AbstractElementSchema element, global::System.Xml.XmlReader reader)
		{
			while (!serializationContext.Result.Failed && !reader.EOF && reader.NodeType == global::System.Xml.XmlNodeType.Element)
			{
				// Check if it's an instance of omit-element relationship "ElementHasElements"
				DslModeling::DomainClassXmlSerializer newElementHasElementsSerializer = serializationContext.Directory.GetSerializer(ElementHasElements.DomainClassId);
				global::System.Diagnostics.Debug.Assert(newElementHasElementsSerializer != null, "Cannot find serializer for ElementHasElements!");
				ElementHasElements newElementHasElements = newElementHasElementsSerializer.TryCreateInstance (serializationContext, reader, element.Partition) as ElementHasElements;
				if (newElementHasElements != null)
				{
					DslModeling::DomainRoleInfo.SetRolePlayer (newElementHasElements, ElementHasElements.ParentElementDomainRoleId, element);
					DslModeling::DomainClassXmlSerializer targetSerializer = serializationContext.Directory.GetSerializer (newElementHasElements.GetDomainClass().Id);	
					global::System.Diagnostics.Debug.Assert (targetSerializer != null, "Cannot find serializer for " + newElementHasElements.GetDomainClass().Name + "!");
					targetSerializer.Read(serializationContext, newElementHasElements, reader);
					continue;
				}
				// Check if it's an instance of omit-element relationship "ElementHasExtensionPoints"
				DslModeling::DomainClassXmlSerializer newElementHasExtensionPointsSerializer = serializationContext.Directory.GetSerializer(ElementHasExtensionPoints.DomainClassId);
				global::System.Diagnostics.Debug.Assert(newElementHasExtensionPointsSerializer != null, "Cannot find serializer for ElementHasExtensionPoints!");
				ElementHasExtensionPoints newElementHasExtensionPoints = newElementHasExtensionPointsSerializer.TryCreateInstance (serializationContext, reader, element.Partition) as ElementHasExtensionPoints;
				if (newElementHasExtensionPoints != null)
				{
					DslModeling::DomainRoleInfo.SetRolePlayer (newElementHasExtensionPoints, ElementHasExtensionPoints.ParentElementDomainRoleId, element);
					DslModeling::DomainClassXmlSerializer targetSerializer = serializationContext.Directory.GetSerializer (newElementHasExtensionPoints.GetDomainClass().Id);	
					global::System.Diagnostics.Debug.Assert (targetSerializer != null, "Cannot find serializer for " + newElementHasExtensionPoints.GetDomainClass().Name + "!");
					targetSerializer.Read(serializationContext, newElementHasExtensionPoints, reader);
					continue;
				}
				return;  // Don't know this element.
			}
		}