public LayoutInfo ConvertStringToLayoutInfo(string layoutInfo, Store store)
        {
            LayoutInfo lInfo = null;

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

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

            DomainClassXmlSerializer rootSerializer = directory.GetSerializer(LayoutInfo.DomainClassId);

            using (System.Xml.XmlReader reader = System.Xml.XmlReader.Create(new System.IO.StringReader(layoutInfo)))
            {
                reader.Read(); // Move to the first node - will be the XmlDeclaration if there is one.
                serializationResult.Encoding = encoding;

                reader.MoveToContent();

                lInfo = rootSerializer.TryCreateInstance(serializationContext, reader, store.DefaultPartition) as LayoutInfo;
                rootSerializer.Read(serializationContext, lInfo, reader);
            }

            return(lInfo);
        }
Example #2
0
        public static string SerializeToString(this ModelElement modelElement)
        {
            string serializedString = null;
            var    serializer       = modelElement.GetSerializer();

            if (serializer != null)
            {
                using (MemoryStream stream = new MemoryStream())
                {
                    DomainXmlSerializerDirectory directory            = modelElement.Store.SerializerDirectory;
                    SerializationContext         serializationContext = new SerializationContext(directory);

                    // MonikerResolver shouldn't be required in Save operation, so not calling SetupMonikerResolver() here.
                    serializationContext.WriteOptionalPropertiesWithDefaultValue = false;
                    var settings =
                        DONetEntityModelDesignerSerializationHelper.Instance.CreateXmlWriterSettings(serializationContext,
                                                                                                     false,
                                                                                                     Encoding.UTF8);

                    using (XmlWriter writer = XmlWriter.Create(stream, settings))
                    {
                        serializer.Write(serializationContext, modelElement, writer);

                        writer.Flush();

                        stream.Position  = 0;
                        serializedString = new StreamReader(stream).ReadToEnd();
                        writer.Close();
                        stream.Close();
                    }
                }
            }
            return(serializedString);
        }
Example #3
0
        public static T DeserializeFromString <T>(Store store, Guid domainClassId, string xml) where T : ModelElement
        {
            T   result     = default(T);
            var serializer = GetSerializer(domainClassId);

            DomainXmlSerializerDirectory directory            = store.SerializerDirectory;
            SerializationContext         serializationContext = new SerializationContext(directory);

            XmlReaderSettings settings = DONetEntityModelDesignerSerializationHelper.Instance.CreateXmlReaderSettings(serializationContext, false);

            using (MemoryStream stream = new MemoryStream(Encoding.UTF8.GetBytes(xml)))
            {
                using (XmlReader reader = XmlReader.Create(stream, settings))
                {
                    // Attempt to read the encoding.
                    reader.Read(); // Move to the first node - will be the XmlDeclaration if there is one.
                    reader.SkipToNextElementFix();

                    store.MakeActionWithinTransaction("Deserializing type",
                                                      delegate
                    {
                        ModelElement element = serializer.TryCreateInstance(serializationContext, reader,
                                                                            store.DefaultPartition);

                        serializer.Read(serializationContext, element, reader);

                        result = (T)element;
                    });
                }
            }

            return(result);
        }
        public override string GetMonikerQualifier(DomainXmlSerializerDirectory directory, ModelElement element)
        {
            if (directory == null)
                throw new System.ArgumentNullException("directory");
            if (element == null)
                throw new System.ArgumentNullException("element");

            ExternalType domainType = element as ExternalType;
            string s = domainType.MetaModel.Name;
            object[] objArr = new object[] { s };
            return System.String.Format(CultureInfo.CurrentCulture, "/{0}", objArr);
        }
        public override string GetMonikerQualifier(DomainXmlSerializerDirectory directory, ModelElement element)
        {
            if (directory == null)
                throw new System.ArgumentNullException("directory");
            if (element == null)
                throw new System.ArgumentNullException("element");

            PropertyGridEditor propertyGridEditor = element as PropertyGridEditor;

            object[] objArr = new object[] { propertyGridEditor.MetaModel.Name };
            return System.String.Format(CultureInfo.CurrentCulture, "/{0}", objArr);
        }
        public override string GetMonikerQualifier(DomainXmlSerializerDirectory directory, ModelElement element)
        {
            if (directory == null)
            {
                throw new System.ArgumentNullException("directory");
            }
            if (element == null)
            {
                throw new System.ArgumentNullException("element");
            }

            PropertyGridEditor propertyGridEditor = element as PropertyGridEditor;

            object[] objArr = new object[] { propertyGridEditor.MetaModel.Name };
            return(System.String.Format(CultureInfo.CurrentCulture, "/{0}", objArr));
        }
        public override string CalculateQualifiedName(DomainXmlSerializerDirectory directory, ModelElement element)
        {
            if (directory == null)
                throw new System.ArgumentNullException("directory");
            if (element == null)
                throw new System.ArgumentNullException("element");

            ExternalType domainType = element as ExternalType;
            string s1 = this.GetMonikerQualifier(directory, domainType);
            string s2 = domainType.Namespace;
            string s3 = domainType.Name;
            object[] objArr = new object[] {
                                             s1, 
                                             s2,
                                             s3};
            return System.String.Format(CultureInfo.CurrentCulture, "{0}/{1}/{2}", objArr);
        }
Example #8
0
        public override string GetMonikerQualifier(DomainXmlSerializerDirectory directory, ModelElement element)
        {
            if (directory == null)
            {
                throw new System.ArgumentNullException("directory");
            }
            if (element == null)
            {
                throw new System.ArgumentNullException("element");
            }

            ExternalType domainType = element as ExternalType;
            string       s          = domainType.MetaModel.Name;

            object[] objArr = new object[] { s };
            return(System.String.Format(CultureInfo.CurrentCulture, "/{0}", objArr));
        }
        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);
        }
Example #10
0
        public override string CalculateQualifiedName(DomainXmlSerializerDirectory directory, ModelElement element)
        {
            if (directory == null)
            {
                throw new System.ArgumentNullException("directory");
            }
            if (element == null)
            {
                throw new System.ArgumentNullException("element");
            }

            ExternalType domainType = element as ExternalType;
            string       s1         = this.GetMonikerQualifier(directory, domainType);
            string       s2         = domainType.Namespace;
            string       s3         = domainType.Name;

            object[] objArr = new object[] {
                s1,
                s2,
                s3
            };
            return(System.String.Format(CultureInfo.CurrentCulture, "{0}/{1}/{2}", objArr));
        }
Example #11
0
 private string CustomGetMonikerQualifier(DomainXmlSerializerDirectory directory, ModelElement element)
 {
     return(DefaultGetMonikerQualifier(directory, element));
 }
Example #12
0
 private string CustomCalculateQualifiedName(DomainXmlSerializerDirectory directory, ModelElement element)
 {
     return(DefaultCalculateQualifiedName(directory, element));
 }