Updates referencesource to .NET 4.7
[mono.git] / mcs / class / referencesource / System.Data.Entity / System / Data / EntityModel / SchemaObjectModel / ReferenceSchema.cs
1 //---------------------------------------------------------------------
2 // <copyright file="ReferenceSchema.cs" company="Microsoft">
3 //      Copyright (c) Microsoft Corporation.  All rights reserved.
4 // </copyright>
5 //
6 // @owner       Microsoft
7 // @backupOwner Microsoft
8 //---------------------------------------------------------------------
9
10 namespace System.Data.EntityModel.SchemaObjectModel
11 {
12     using System;
13     using System.Data.Metadata.Edm;
14     using System.Diagnostics;
15     using System.Xml;
16
17     /// <summary>
18     /// Summary description for UsingElement.
19     /// </summary>
20     internal class UsingElement : SchemaElement
21     {
22         #region Instance Fields
23         private string _alias = null;
24         private string _namespaceName = null;
25         #endregion
26
27         #region Public Methods
28         /// <summary>
29         /// 
30         /// </summary>
31         /// <param name="parentElement"></param>
32         internal UsingElement(Schema parentElement)
33         :   base(parentElement)
34         {
35         }
36
37         #endregion
38
39         #region Public Properties
40         /// <summary>
41         /// 
42         /// </summary>
43         public virtual string Alias
44         {
45             get
46             {
47                 return _alias;
48             }
49             private set
50             {
51                 _alias = value;
52             }
53         }
54
55         /// <summary>
56         /// 
57         /// </summary>
58         public virtual string NamespaceName
59         {
60             get
61             {
62                 return _namespaceName;
63             }
64             private set
65             {
66                 _namespaceName = value;
67             }
68         }
69
70         /// <summary>
71         /// 
72         /// </summary>
73         public override string FQName
74         {
75             get
76             {
77                 return null;
78             }
79         }
80
81         #endregion
82
83         #region Protected Properties
84         /// <summary>
85         /// 
86         /// </summary>
87         protected override bool ProhibitAttribute(string namespaceUri, string localName)
88         {
89             if (base.ProhibitAttribute(namespaceUri, localName))
90             {
91                 return true;
92             }
93
94             if (namespaceUri == null && localName == XmlConstants.Name)
95             {
96                 return false;
97             }
98             return false;
99
100         }
101         
102         protected override bool HandleAttribute(XmlReader reader)
103         {
104             if (base.HandleAttribute(reader))
105             {
106                 return true;
107             }
108             else if (CanHandleAttribute(reader, XmlConstants.Namespace))
109             {
110                 HandleNamespaceAttribute(reader);
111                 return true;
112             }
113             else if (CanHandleAttribute(reader, XmlConstants.Alias))
114             {
115                 HandleAliasAttribute(reader);
116                 return true;
117             }
118
119             return false;
120         }
121
122         #endregion
123
124         #region Private Methods
125
126         /// <summary>
127         /// 
128         /// </summary>
129         /// <param name="reader"></param>
130         private void HandleNamespaceAttribute(XmlReader reader)
131         {
132             Debug.Assert(String.IsNullOrEmpty(NamespaceName), "Alias must be set only once");
133             ReturnValue<string> returnValue = HandleDottedNameAttribute(reader,NamespaceName, null);
134             if ( returnValue.Succeeded )
135                 NamespaceName = returnValue.Value;
136         }
137
138         /// <summary>
139         /// 
140         /// </summary>
141         /// <param name="reader"></param>
142         private void HandleAliasAttribute(XmlReader reader)
143         {
144             Debug.Assert(String.IsNullOrEmpty(Alias), "Alias must be set only once");
145             Alias = HandleUndottedNameAttribute(reader, Alias);
146         }
147         #endregion
148     }
149 }