public static void DeserializeOptions(string xml, DatabaseSchemaView dbView, ISupportOptions withOptions) { var buffer = Encoding.UTF8.GetBytes(xml); using (var memoryStream = new MemoryStream(buffer)) { var adapter = new XmlAdapter(memoryStream); var service = new OptionsDeserializationService(adapter); XmlSerializerExtensions.Adapter = adapter; var metadataService = new MetadataDeserializationService(adapter); adapter.Reader.ReadToFollowing(Constants.BehaviorOptionsTag); var behaviorOptionsTree = adapter.Reader.ReadSubtree(); behaviorOptionsTree.Read(); service.DecodeObject(behaviorOptionsTree, withOptions.BehaviorOptions); behaviorOptionsTree.Close(); adapter.Reader.Read(); var dbViewOptionsTree = adapter.Reader.ReadSubtree(); dbViewOptionsTree.Read(); service.DecodeObject(dbViewOptionsTree, dbView.Options); dbViewOptionsTree.Close(); adapter.Reader.Read(); var designPaneOptionsTree = adapter.Reader.ReadSubtree(); designPaneOptionsTree.Read(); service.DecodeObject(designPaneOptionsTree, withOptions.DesignPaneOptions); designPaneOptionsTree.Close(); adapter.Reader.Read(); var visualOptionsTree = adapter.Reader.ReadSubtree(); visualOptionsTree.Read(); service.DecodeObject(visualOptionsTree, withOptions.VisualOptions); visualOptionsTree.Close(); adapter.Reader.Read(); var addObjectDialogOptionsTree = adapter.Reader.ReadSubtree(); addObjectDialogOptionsTree.Read(); service.DecodeObject(addObjectDialogOptionsTree, withOptions.AddObjectDialogOptions); addObjectDialogOptionsTree.Close(); adapter.Reader.Read(); var dataSourceOptionsTree = adapter.Reader.ReadSubtree(); dataSourceOptionsTree.Read(); service.DecodeObject(dataSourceOptionsTree, withOptions.DataSourceOptions); dataSourceOptionsTree.Close(); adapter.Reader.Read(); var metadataLoadingOptionsTree = adapter.Reader.ReadSubtree(); metadataLoadingOptionsTree.Read(); metadataService.DecodeMetadataLoadingOptions(metadataLoadingOptionsTree, withOptions.MetadataLoadingOptions); metadataLoadingOptionsTree.Close(); adapter.Reader.Read(); var metadataStructureOptionsTree = adapter.Reader.ReadSubtree(); metadataStructureOptionsTree.Read(); service.DecodeObject(metadataStructureOptionsTree, withOptions.MetadataStructureOptions); metadataStructureOptionsTree.Close(); adapter.Reader.Read(); var queryColumnListTree = adapter.Reader.ReadSubtree(); queryColumnListTree.Read(); service.DecodeObject(queryColumnListTree, withOptions.QueryColumnListOptions); queryColumnListTree.Close(); adapter.Reader.Read(); var queryNavBarTree = adapter.Reader.ReadSubtree(); queryNavBarTree.Read(); service.DecodeObject(queryNavBarTree, withOptions.QueryNavBarOptions); queryNavBarTree.Close(); adapter.Reader.Read(); var userInterfaceOptionsTree = adapter.Reader.ReadSubtree(); userInterfaceOptionsTree.Read(); service.DecodeObject(userInterfaceOptionsTree, withOptions.UserInterfaceOptions); userInterfaceOptionsTree.Close(); adapter.Reader.Read(); var sqlFormattingOptionsTree = adapter.Reader.ReadSubtree(); sqlFormattingOptionsTree.Read(); service.DecodeObject(sqlFormattingOptionsTree, withOptions.SqlFormattingOptions); sqlFormattingOptionsTree.Close(); adapter.Reader.Read(); var sqlGenerationOptionsTree = adapter.Reader.ReadSubtree(); sqlGenerationOptionsTree.Read(); service.DecodeObject(sqlGenerationOptionsTree, withOptions.SqlGenerationOptions); sqlGenerationOptionsTree.Close(); adapter.Reader.Read(); } }
public static void SerializeOptions(string path, DatabaseSchemaView dbView, ISupportOptions withOptions) { using (var fileStream = new FileStream(path, FileMode.Create, FileAccess.ReadWrite)) using (var xmlBuilder = new XmlDescriptionBuilder(fileStream)) { var service = new OptionsSerializationService(xmlBuilder) { SerializeDefaultValues = true }; var metadataService = new MetadataSerializationService(xmlBuilder); XmlSerializerExtensions.Builder = xmlBuilder; using (var root = xmlBuilder.BeginObject("Options")) { // Behavior options using (var behaviorHandle = xmlBuilder.BeginObjectProperty(root, Constants.BehaviorOptionsTag)) { service.EncodeObject(behaviorHandle, withOptions.BehaviorOptions); } // Database view options using (var dbViewOptionsHandle = xmlBuilder.BeginObjectProperty(root, Constants.DatabaseSchemaViewOptionsTag)) { service.EncodeObject(dbViewOptionsHandle, dbView.Options); } // DesignPaneOptions using (var designPaneOptionsHandle = xmlBuilder.BeginObjectProperty(root, Constants.DesignPaneOptionsTag)) { service.EncodeObject(designPaneOptionsHandle, withOptions.DesignPaneOptions); } // VisualOptions using (var visualOptionsHandle = xmlBuilder.BeginObjectProperty(root, Constants.VisualOptionsTag)) { service.EncodeObject(visualOptionsHandle, withOptions.VisualOptions); } // AddObjectDialogOptions using (var addObjectDialogHandle = xmlBuilder.BeginObjectProperty(root, Constants.AddObjectDialogOptionsTag)) { service.EncodeObject(addObjectDialogHandle, withOptions.AddObjectDialogOptions); } // DataSourceOptions using (var dataSourceOptionsHandle = xmlBuilder.BeginObjectProperty(root, "DataSourceOptions")) { service.EncodeObject(dataSourceOptionsHandle, withOptions.DataSourceOptions); } // MetadataLoadingOptions using (var metadataLoadingOptionsHandle = xmlBuilder.BeginObjectProperty(root, "MetadataLoadingOptions")) { metadataService.Encode(metadataLoadingOptionsHandle, withOptions.MetadataLoadingOptions); } // MetadataStructureOptions using (var metadataStructureOptionsHandle = xmlBuilder.BeginObjectProperty(root, "MetadataStructureOptions")) { service.EncodeObject(metadataStructureOptionsHandle, withOptions.MetadataStructureOptions); } // QueryColumnListOptions using (var queryColumnListOptionsHandle = xmlBuilder.BeginObjectProperty(root, "QueryColumnListOptions")) { service.EncodeObject(queryColumnListOptionsHandle, withOptions.QueryColumnListOptions); } // QueryNavBarOptions using (var queryNavBarOptionsHandle = xmlBuilder.BeginObjectProperty(root, "QueryNavBarOptions")) { service.EncodeObject(queryNavBarOptionsHandle, withOptions.QueryNavBarOptions); } // UserInterfaceOptions using (var userInterfaceOptionsHandle = xmlBuilder.BeginObjectProperty(root, "UserInterfaceOptions")) { service.EncodeObject(userInterfaceOptionsHandle, withOptions.UserInterfaceOptions); } // SqlFormattingOptions using (var sqlFormattingOptionsHandle = xmlBuilder.BeginObjectProperty(root, "SqlFormattingOptions")) { service.EncodeObject(sqlFormattingOptionsHandle, withOptions.SqlFormattingOptions); } // SqlGenerationOptions using (var sqlGenerationOptionsHandle = xmlBuilder.BeginObjectProperty(root, "SqlGenerationOptions")) { service.EncodeObject(sqlGenerationOptionsHandle, withOptions.SqlGenerationOptions); } } } }