Example #1
0
        public override void Write(SerializationContext serializationContext, ModelElement element, XmlWriter writer,
                                   RootElementSettings rootElementSettings)
        {
            #region Check Parameters

            Debug.Assert(element != null);
            if (element == null)
            {
                throw new ArgumentNullException("element");
            }

            #endregion

            // On ne serialise que si ce n'est pas la valeur par défaut
            DependencyProperty  instanceOfDependencyProperty = element as DependencyProperty;
            IDependencyProperty dp =
                DependencyPropertyRegistry.Instance.FindDependencyProperty(instanceOfDependencyProperty.StrategyId,
                                                                           instanceOfDependencyProperty.Name);

            object defaultValue = dp != null?dp.GetDefaultValue() : null;

            string defaultValueAsString = defaultValue != null?defaultValue.ToString() : String.Empty;

            if (instanceOfDependencyProperty.Value != null && dp != null &&
                !Utils.StringCompareEquals(instanceOfDependencyProperty.Value.ToString(), defaultValueAsString))
            {
                base.Write(serializationContext, element, writer, rootElementSettings);
            }
        }
        public string ConvertLayoutInfoToString(LayoutInfo info)
        {
            string result = String.Empty;

            Microsoft.VisualStudio.Modeling.SerializationResult serializationResult = new Microsoft.VisualStudio.Modeling.SerializationResult();
            DomainXmlSerializerDirectory directory = this.GetDirectory(info.Store);

            System.Text.Encoding encoding = System.Text.Encoding.GetEncoding("ISO-8859-1");
            Microsoft.VisualStudio.Modeling.SerializationContext serializationContext = new SerializationContext(directory, "", serializationResult);
            this.InitializeSerializationContext(info.Partition, serializationContext, false);

            global::System.IO.MemoryStream       newFileContent = new global::System.IO.MemoryStream();
            global::System.Xml.XmlWriterSettings settings       = DiagramsDSLSerializationHelper.Instance.CreateXmlWriterSettings(serializationContext, false, encoding);
            using (global::System.Xml.XmlWriter writer = global::System.Xml.XmlWriter.Create(newFileContent, settings))
            {
                DomainClassXmlSerializer rootSerializer = directory.GetSerializer(LayoutInfo.DomainClassId);

                RootElementSettings rootElementSettings = new RootElementSettings();
                rootElementSettings.SchemaTargetNamespace = "http://schemas.microsoft.com/dsltools/DiagramsDSL";
                rootElementSettings.Version = new global::System.Version("1.0.0.0");

                // Carry out the normal serialization.
                rootSerializer.Write(serializationContext, info, writer, rootElementSettings);
            }

            char[] chars = encoding.GetChars(newFileContent.GetBuffer());

            // search the open angle bracket and trim off the Byte Of Mark.
            result = new string(chars);
            int indexPos = result.IndexOf('<');

            if (indexPos > 0)
            {
                // strip off the leading Byte Of Mark.
                result = result.Substring(indexPos);
            }

            // trim off trailing 0s.
            result = result.TrimEnd('\0');

            return(result);
        }
        public string ConvertLayoutInfoToString(LayoutInfo info)
        {
            string result = String.Empty;

            Microsoft.VisualStudio.Modeling.SerializationResult serializationResult = new Microsoft.VisualStudio.Modeling.SerializationResult();
            DomainXmlSerializerDirectory directory = this.GetDirectory(info.Store);
            System.Text.Encoding encoding = System.Text.Encoding.GetEncoding("ISO-8859-1");
            Microsoft.VisualStudio.Modeling.SerializationContext serializationContext = new SerializationContext(directory, "", serializationResult);
            this.InitializeSerializationContext(info.Partition, serializationContext, false);

            global::System.IO.MemoryStream newFileContent = new global::System.IO.MemoryStream();
            global::System.Xml.XmlWriterSettings settings = DiagramsDSLSerializationHelper.Instance.CreateXmlWriterSettings(serializationContext, false, encoding);
            using (global::System.Xml.XmlWriter writer = global::System.Xml.XmlWriter.Create(newFileContent, settings))
            {
                DomainClassXmlSerializer rootSerializer = directory.GetSerializer(LayoutInfo.DomainClassId);
                
                RootElementSettings rootElementSettings = new RootElementSettings();
                rootElementSettings.SchemaTargetNamespace = "http://schemas.microsoft.com/dsltools/DiagramsDSL";
                rootElementSettings.Version = new global::System.Version("1.0.0.0");

                // Carry out the normal serialization.
                rootSerializer.Write(serializationContext, info, writer, rootElementSettings);
            }

            char[] chars = encoding.GetChars(newFileContent.GetBuffer());

            // search the open angle bracket and trim off the Byte Of Mark.
            result = new string(chars);
            int indexPos = result.IndexOf('<');
            if (indexPos > 0)
            {
                // strip off the leading Byte Of Mark.
                result = result.Substring(indexPos);
            }

            // trim off trailing 0s.
            result = result.TrimEnd('\0');

            return result;
        }
        /// <summary>
        /// Public Write() method that serializes one PatternModelSchemaDiagram instance into XML.
        /// </summary>
        /// <param name="serializationContext">Serialization context.</param>
        /// <param name="element">PatternModelSchemaDiagram instance to be serialized.</param>
        /// <param name="writer">XmlWriter to write serialized data to.</param>
        /// <param name="rootElementSettings">The root element settings if the passed in element is serialized as a root element in the XML. The root element contains additional
        /// information like schema target namespace, version, etc.
        /// This should only be passed for root-level elements. Null should be passed for rest elements (and ideally call the Write() method
        /// without this parameter).</param>
        public override void Write(SerializationContext serializationContext, ModelElement element, XmlWriter writer, RootElementSettings rootElementSettings)
        {
            Guard.NotNull(() => serializationContext, serializationContext);
            Guard.NotNull(() => element, element);
            Guard.NotNull(() => writer, writer);
            Guard.NotNull(() => rootElementSettings, rootElementSettings);

            if (rootElementSettings != null && !string.IsNullOrEmpty(rootElementSettings.SchemaTargetNamespace))
            {
                writer.WriteStartElement(this.XmlTagName, rootElementSettings.SchemaTargetNamespace);
                SerializationUtilities.WriteDomainModelNamespaces(serializationContext.Directory, writer, rootElementSettings.SchemaTargetNamespace);
            }
            else
            {
                writer.WriteStartElement(this.XmlTagName);
            }

            if (rootElementSettings != null && rootElementSettings.Version != null)
            {
                writer.WriteAttributeString("dslVersion", rootElementSettings.Version.ToString(4));
            }

            writer.WriteAttributeString("Id", element.Id.ToString("D", CultureInfo.CurrentCulture));

            this.WritePropertiesAsAttributes(serializationContext, element, writer);

            if (rootElementSettings != null && !serializationContext.Result.Failed)
            {
                PatternModelSerializationHelper.Instance.WriteExtensions(serializationContext, element, writer);
            }

            if (!serializationContext.Result.Failed)
            {
                WriteElements(serializationContext, element, writer);
            }

            writer.WriteEndElement();
        }
Example #5
0
 private void CustomWrite(SerializationContext context, ModelElement element, XmlWriter writer, RootElementSettings rootElementSettings)
 {
     DefaultWrite(context, element, writer, rootElementSettings);
 }
Example #6
0
        private void CustomWrite(SerializationContext serializationContext, ModelElement element, global::System.Xml.XmlWriter writer, RootElementSettings rootElementSettings)
        {
            DomainType domainType = (DomainType)element;

            if (!domainType.IsBuildIn)
            {
                DefaultWrite(serializationContext, element, writer, rootElementSettings);
            }
        }
 /// <summary>
 /// Public Write() method that serializes the ModelElement instance associated with this serializer instance into XML.
 /// </summary>
 /// <param name="serializationContext">Serialization context.</param>
 /// <param name="element">ModelElement instance that will be serialized.</param>
 /// <param name="writer">XmlWriter to write serialized data to.</param>
 /// <param name="rootElementSettings"></param>
 /// <param name="options">Serialization options.</param>
 public abstract void Write(SerializationContext serializationContext, ModelElement element, XmlWriter writer, RootElementSettings rootElementSettings, SerializationOptions options);
Example #8
0
        /// <summary>
        /// Public Write() method that serializes one PatternModelSchemaDiagram instance into XML.
        /// </summary>
        /// <param name="serializationContext">Serialization context.</param>
        /// <param name="element">PatternModelSchemaDiagram instance to be serialized.</param>
        /// <param name="writer">XmlWriter to write serialized data to.</param>
        /// <param name="rootElementSettings">The root element settings if the passed in element is serialized as a root element in the XML. The root element contains additional
        /// information like schema target namespace, version, etc.
        /// This should only be passed for root-level elements. Null should be passed for rest elements (and ideally call the Write() method
        /// without this parameter).</param>
        public override void Write(SerializationContext serializationContext, ModelElement element, XmlWriter writer, RootElementSettings rootElementSettings)
        {
            Guard.NotNull(() => serializationContext, serializationContext);
            Guard.NotNull(() => element, element);
            Guard.NotNull(() => writer, writer);
            Guard.NotNull(() => rootElementSettings, rootElementSettings);

            if (rootElementSettings != null && !string.IsNullOrEmpty(rootElementSettings.SchemaTargetNamespace))
            {
                writer.WriteStartElement(this.XmlTagName, rootElementSettings.SchemaTargetNamespace);
                SerializationUtilities.WriteDomainModelNamespaces(serializationContext.Directory, writer, rootElementSettings.SchemaTargetNamespace);
            }
            else
            {
                writer.WriteStartElement(this.XmlTagName);
            }

            if (rootElementSettings != null && rootElementSettings.Version != null)
            {
                writer.WriteAttributeString("dslVersion", rootElementSettings.Version.ToString(4));
            }

            writer.WriteAttributeString("Id", element.Id.ToString("D", CultureInfo.CurrentCulture));

            this.WritePropertiesAsAttributes(serializationContext, element, writer);

            if (rootElementSettings != null && !serializationContext.Result.Failed)
            {
                PatternModelSerializationHelper.Instance.WriteExtensions(serializationContext, element, writer);
            }

            if (!serializationContext.Result.Failed)
            {
                WriteElements(serializationContext, element, writer);
            }

            writer.WriteEndElement();
        }
Example #9
0
 /// <summary>
 /// Public Write() method that serializes the ModelElement instance associated with this serializer instance into XML.
 /// </summary>
 /// <param name="serializationContext">Serialization context.</param>
 /// <param name="element">ModelElement instance that will be serialized.</param>
 /// <param name="writer">XmlWriter to write serialized data to.</param>
 /// <param name="rootElementSettings"></param>
 /// <param name="options">Serialization options.</param>
 public abstract void Write(SerializationContext serializationContext, ModelElement element, XmlWriter writer, RootElementSettings rootElementSettings, SerializationOptions options);