/mcs/class/referencesource/System.Data/System/Data/SQLTypes/SqlTypesSchemaImporter.cs
C# | 248 lines | 168 code | 35 blank | 45 comment | 19 complexity | c892dc8902496e6882249506beeafb09 MD5 | raw file
Possible License(s): LGPL-2.0, MPL-2.0-no-copyleft-exception, CC-BY-SA-3.0, GPL-2.0
- //------------------------------------------------------------------------------
- // <copyright file="SqlTypesSchemaImporter.cs" company="Microsoft">
- // Copyright (c) Microsoft Corporation. All rights reserved.
- // </copyright>
- // <owner current="true" primary="true">dondu</owner>
- // <owner current="true" primary="false">Microsoft</owner>
- // <owner current="true" primary="false">Microsoft</owner>
- //------------------------------------------------------------------------------
- namespace System.Data.SqlTypes {
- using System;
- using System.CodeDom;
- using System.CodeDom.Compiler;
- using System.Collections;
- using System.Collections.Specialized;
- using System.Xml;
- using System.Xml.Schema;
- using System.Xml.Serialization;
- using System.Xml.Serialization.Advanced;
- public class SqlTypesSchemaImporterExtensionHelper : SchemaImporterExtension {
- private string m_name;
- private string m_targetNamespace;
- private string[] m_references;
- private CodeNamespaceImport[] m_namespaceImports;
- private string m_destinationType;
- private bool m_direct;
- public SqlTypesSchemaImporterExtensionHelper(string name,
- string targetNamespace,
- string[] references,
- CodeNamespaceImport[] namespaceImports,
- string destinationType,
- bool direct) {
- Init(name, targetNamespace, references, namespaceImports, destinationType, direct);
- }
- public SqlTypesSchemaImporterExtensionHelper(string name, string destinationType) {
- Init(name, SqlTypesNamespace, null, null, destinationType, true);
- }
- public SqlTypesSchemaImporterExtensionHelper(string name, string destinationType, bool direct) {
- Init(name, SqlTypesNamespace, null, null, destinationType, direct);
- }
- private void Init(string name,
- string targetNamespace,
- string[] references,
- CodeNamespaceImport[] namespaceImports,
- string destinationType,
- bool direct) {
- m_name = name;
- m_targetNamespace = targetNamespace;
- if (references == null) {
- m_references = new string[1];
- m_references[0] = "System.Data.dll";
- } else {
- m_references = references;
- }
- if (namespaceImports == null) {
- m_namespaceImports = new CodeNamespaceImport[2];
- m_namespaceImports[0] = new CodeNamespaceImport("System.Data");
- m_namespaceImports[1] = new CodeNamespaceImport("System.Data.SqlTypes");
- } else {
- m_namespaceImports = namespaceImports;
- }
- m_destinationType = destinationType;
- m_direct = direct;
- }
- public override string ImportSchemaType(string name,
- string xmlNamespace,
- XmlSchemaObject context,
- XmlSchemas schemas,
- XmlSchemaImporter importer,
- CodeCompileUnit compileUnit,
- CodeNamespace mainNamespace,
- CodeGenerationOptions options,
- CodeDomProvider codeProvider) {
- if (m_direct) {
- if (context is XmlSchemaElement) {
- if ((0 == string.CompareOrdinal(m_name, name)) && (0 == string.CompareOrdinal(m_targetNamespace, xmlNamespace))) {
- compileUnit.ReferencedAssemblies.AddRange(m_references);
- mainNamespace.Imports.AddRange(m_namespaceImports);
- return m_destinationType;
- }
- }
- }
- return null;
- }
- public override string ImportSchemaType(XmlSchemaType type,
- XmlSchemaObject context,
- XmlSchemas schemas,
- XmlSchemaImporter importer,
- CodeCompileUnit compileUnit,
- CodeNamespace mainNamespace,
- CodeGenerationOptions options,
- CodeDomProvider codeProvider) {
- if (!m_direct) {
- if ((type is XmlSchemaSimpleType) && (context is XmlSchemaElement)) {
- XmlSchemaType basetype = ((XmlSchemaSimpleType) type).BaseXmlSchemaType;
- XmlQualifiedName qname = basetype.QualifiedName;
- if ((0 == string.CompareOrdinal(m_name, qname.Name)) && (0 == string.CompareOrdinal(m_targetNamespace, qname.Namespace))) {
- compileUnit.ReferencedAssemblies.AddRange(m_references);
- mainNamespace.Imports.AddRange(m_namespaceImports);
- return m_destinationType;
- }
- }
- }
- return null;
- }
- protected static readonly string SqlTypesNamespace = "http://schemas.microsoft.com/sqlserver/2004/sqltypes";
- };
-
- public sealed class TypeCharSchemaImporterExtension : SqlTypesSchemaImporterExtensionHelper {
- public TypeCharSchemaImporterExtension() : base("char", "System.Data.SqlTypes.SqlString", false) { }
- }
- public sealed class TypeNCharSchemaImporterExtension : SqlTypesSchemaImporterExtensionHelper {
- public TypeNCharSchemaImporterExtension() : base("nchar", "System.Data.SqlTypes.SqlString", false) { }
- }
- public sealed class TypeVarCharSchemaImporterExtension : SqlTypesSchemaImporterExtensionHelper {
- public TypeVarCharSchemaImporterExtension() : base("varchar", "System.Data.SqlTypes.SqlString", false) { }
- }
- public sealed class TypeNVarCharSchemaImporterExtension : SqlTypesSchemaImporterExtensionHelper {
- public TypeNVarCharSchemaImporterExtension() : base("nvarchar", "System.Data.SqlTypes.SqlString", false) { }
- }
- public sealed class TypeTextSchemaImporterExtension : SqlTypesSchemaImporterExtensionHelper {
- public TypeTextSchemaImporterExtension() : base("text", "System.Data.SqlTypes.SqlString", false) { }
- }
- public sealed class TypeNTextSchemaImporterExtension : SqlTypesSchemaImporterExtensionHelper {
- public TypeNTextSchemaImporterExtension() : base("ntext", "System.Data.SqlTypes.SqlString", false) { }
- }
- public sealed class TypeVarBinarySchemaImporterExtension : SqlTypesSchemaImporterExtensionHelper {
- public TypeVarBinarySchemaImporterExtension() : base("varbinary", "System.Data.SqlTypes.SqlBinary", false) { }
- }
- public sealed class TypeBinarySchemaImporterExtension : SqlTypesSchemaImporterExtensionHelper {
- public TypeBinarySchemaImporterExtension() : base("binary", "System.Data.SqlTypes.SqlBinary", false) { }
- }
- public sealed class TypeVarImageSchemaImporterExtension : SqlTypesSchemaImporterExtensionHelper {
- public TypeVarImageSchemaImporterExtension() : base("image", "System.Data.SqlTypes.SqlBinary", false) { }
- }
- /*
- <xsd:simpleType name=\"timestamp\">
- <xsd:restriction base=\"xsd:base64Binary\">
- <xsd:maxLength value=\"8\"/>
- </xsd:restriction>
- </xsd:simpleType>
- */
- /*
- <xsd:simpleType name=\"timestampNumeric\">
- <!-- The timestampNumeric type supports a legacy format of timestamp. -->
- <xsd:restriction base=\"xsd:long\"/>
- </xsd:simpleType>
- */
- public sealed class TypeDecimalSchemaImporterExtension : SqlTypesSchemaImporterExtensionHelper {
- public TypeDecimalSchemaImporterExtension() : base("decimal", "System.Data.SqlTypes.SqlDecimal", false) { }
- }
- public sealed class TypeNumericSchemaImporterExtension : SqlTypesSchemaImporterExtensionHelper {
- public TypeNumericSchemaImporterExtension() : base("numeric", "System.Data.SqlTypes.SqlDecimal", false) { }
- }
- public sealed class TypeBigIntSchemaImporterExtension : SqlTypesSchemaImporterExtensionHelper {
- public TypeBigIntSchemaImporterExtension() : base("bigint", "System.Data.SqlTypes.SqlInt64") { }
- }
- public sealed class TypeIntSchemaImporterExtension : SqlTypesSchemaImporterExtensionHelper {
- public TypeIntSchemaImporterExtension() : base("int", "System.Data.SqlTypes.SqlInt32") { }
- }
- public sealed class TypeSmallIntSchemaImporterExtension : SqlTypesSchemaImporterExtensionHelper {
- public TypeSmallIntSchemaImporterExtension() : base("smallint", "System.Data.SqlTypes.SqlInt16") { }
- }
- public sealed class TypeTinyIntSchemaImporterExtension : SqlTypesSchemaImporterExtensionHelper {
- public TypeTinyIntSchemaImporterExtension() : base("tinyint", "System.Data.SqlTypes.SqlByte") { }
- }
- public sealed class TypeBitSchemaImporterExtension : SqlTypesSchemaImporterExtensionHelper {
- public TypeBitSchemaImporterExtension() : base("bit", "System.Data.SqlTypes.SqlBoolean") { }
- }
- public sealed class TypeFloatSchemaImporterExtension : SqlTypesSchemaImporterExtensionHelper {
- public TypeFloatSchemaImporterExtension() : base("float", "System.Data.SqlTypes.SqlDouble") { }
- }
- public sealed class TypeRealSchemaImporterExtension : SqlTypesSchemaImporterExtensionHelper {
- public TypeRealSchemaImporterExtension() : base("real", "System.Data.SqlTypes.SqlSingle") { }
- }
- /*
- <xsd:simpleType name=\"utcdatetime\">
- <xsd:restriction base=\"xsd:dateTime\">
- <xsd:pattern value=\"((000[1-9])|(00[1-9][0-9])|(0[1-9][0-9]{2})|([1-9][0-9]{3}))-((0[1-9])|(1[0,1,2]))-((0[1-9])|([1,2][0-9])|(3[0,1]))T(([0,1][0-9])|(2[0-3]))(:[0-5][0-9]){2}\.[0-9]{7}(Z|(\-|\+)(((0[1-9])|(1[0-2])):[0-5][0-9]))\"/>
- <xsd:maxInclusive value=\"9999-12-31T23:59:59.9999999Z\"/>
- <xsd:minInclusive value=\"0001-01-01T00:00:00.0000000Z\"/>
- </xsd:restriction>
- </xsd:simpleType>
- */
- public sealed class TypeDateTimeSchemaImporterExtension : SqlTypesSchemaImporterExtensionHelper {
- public TypeDateTimeSchemaImporterExtension() : base("datetime", "System.Data.SqlTypes.SqlDateTime") { }
- }
- public sealed class TypeSmallDateTimeSchemaImporterExtension : SqlTypesSchemaImporterExtensionHelper {
- public TypeSmallDateTimeSchemaImporterExtension() : base("smalldatetime", "System.Data.SqlTypes.SqlDateTime") { }
- }
- public sealed class TypeMoneySchemaImporterExtension : SqlTypesSchemaImporterExtensionHelper {
- public TypeMoneySchemaImporterExtension() : base("money", "System.Data.SqlTypes.SqlMoney") { }
- }
- public sealed class TypeSmallMoneySchemaImporterExtension : SqlTypesSchemaImporterExtensionHelper {
- public TypeSmallMoneySchemaImporterExtension() : base("smallmoney", "System.Data.SqlTypes.SqlMoney") { }
- }
- public sealed class TypeUniqueIdentifierSchemaImporterExtension : SqlTypesSchemaImporterExtensionHelper {
- public TypeUniqueIdentifierSchemaImporterExtension() : base("uniqueidentifier", "System.Data.SqlTypes.SqlGuid") { }
- }
- /*
- <!-- sql_variant directly maps to xsd:anyType -->
- */
- /*
- <xsd:complexType name=\"xml\" mixed=\"true\">
- <xsd:sequence>
- <xsd:any minOccurs=\"0\" maxOccurs=\"unbounded\" processContents=\"skip\" />
- </xsd:sequence>
- </xsd:complexType>
- */
- /*
- <xsd:simpleType name=\"dbobject\">
- <xsd:restriction base=\"xsd:anyURI\" />
- </xsd:simpleType>
- */
- }