Handle more type conversion.
[mono.git] / mcs / class / System.XML / System.Xml.Schema / XmlSchemaIdentityConstraint.cs
old mode 100755 (executable)
new mode 100644 (file)
index 49f8b76..9db41b2
@@ -1,5 +1,5 @@
-// Author: Dwivedi, Ajay kumar\r
-//            Adwiv@Yahoo.com\r
+// Author: Dwivedi, Ajay kumar
+//            Adwiv@Yahoo.com
 
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
-using System;\r
-using System.Collections;\r
-using System.Xml;\r
-using System.Xml.Serialization;\r
-using Mono.Xml.Schema;\r
-\r
-namespace System.Xml.Schema\r
-{\r
-       /// <summary>\r
-       /// Summary description for XmlSchemaIdentityConstraint.\r
-       /// </summary>\r
-       public class XmlSchemaIdentityConstraint : XmlSchemaAnnotated\r
-       {\r
-               private XmlSchemaObjectCollection fields;\r
-               private string name;\r
-               private XmlQualifiedName qName;\r
-               private XmlSchemaXPath selector;\r
-\r
-               private XsdIdentitySelector compiledSelector;\r
-//             ArrayList compiledFields;\r
-\r
-               public XmlSchemaIdentityConstraint()\r
-               {\r
-                       fields = new XmlSchemaObjectCollection();\r
-                       qName = XmlQualifiedName.Empty;\r
-               }\r
-               \r
-               [System.Xml.Serialization.XmlAttribute("name")]\r
-               public string Name \r
-               {\r
-                       get{ return  name; } \r
-                       set{ name = value; }\r
-               }\r
-\r
-               [XmlElement("selector",typeof(XmlSchemaXPath),Namespace=XmlSchema.Namespace)]\r
-               public XmlSchemaXPath Selector \r
-               {\r
-                       get{ return  selector; } \r
-                       set{ selector = value; }\r
-               }\r
-\r
-               [XmlElement("field",typeof(XmlSchemaXPath),Namespace=XmlSchema.Namespace)]\r
-               public XmlSchemaObjectCollection Fields \r
-               {\r
-                       get{ return fields; }\r
-               }\r
-               \r
-               [XmlIgnore]\r
-               public XmlQualifiedName QualifiedName \r
-               {\r
-                       get{ return  qName; }\r
-               }\r
-\r
-               internal XsdIdentitySelector CompiledSelector {\r
-                       get { return compiledSelector; }\r
-               }\r
-\r
-               /// <remarks>\r
-               /// 1. name must be present\r
-               /// 2. selector and field must be present\r
-               /// </remarks>\r
-               internal override int Compile(ValidationEventHandler h, XmlSchema schema)\r
-               {\r
-                       // If this is already compiled this time, simply skip.\r
-                       if (this.IsComplied (schema.CompilationId))\r
-                               return 0;\r
-\r
-                       if(Name == null)\r
-                               error(h,"Required attribute name must be present");\r
-                       else if(!XmlSchemaUtil.CheckNCName(this.name)) \r
-                               error(h,"attribute name must be NCName");\r
-                       else {\r
-                               this.qName = new XmlQualifiedName(Name,schema.TargetNamespace);\r
-                               if (schema.NamedIdentities.Contains (qName))\r
-                                       error(h,"There is already same named identity constraint in this namespace.");\r
-                               else\r
-                                       schema.NamedIdentities.Add (qName, this);\r
-                       }\r
-\r
-                       if(Selector == null)\r
-                               error(h,"selector must be present");\r
-                       else\r
-                       {\r
-                               Selector.isSelector = true;\r
-                               errorCount += Selector.Compile(h,schema);\r
-                               if (selector.errorCount == 0)\r
-                                       compiledSelector = new XsdIdentitySelector (Selector);\r
-                       }\r
-                       if (errorCount > 0)\r
-                               return errorCount; // fatal\r
-\r
-                       if(Fields.Count == 0)\r
-                               error(h,"atleast one field value must be present");\r
-                       else\r
-                       {\r
-                               for (int i = 0; i < Fields.Count; i++)\r
-                               {\r
-                                       XmlSchemaXPath field = Fields [i] as XmlSchemaXPath;\r
-                                       if(field != null)\r
-                                       {\r
-                                               errorCount += field.Compile(h,schema);\r
-                                               if (field.errorCount == 0)\r
-                                                       this.compiledSelector.AddField (new XsdIdentityField (field, i));\r
-                                       }\r
-                                       else\r
-                                               error (h, "Object of type " + Fields [i].GetType() + " is invalid in the Fields Collection");\r
-                               }\r
-                       }\r
-                       XmlSchemaUtil.CompileID(Id,this,schema.IDCollection,h);\r
-\r
-                       this.CompilationId = schema.CompilationId;\r
-                       return errorCount;\r
-               }\r
-       }\r
-}\r
+using System;
+using System.Collections;
+using System.Xml;
+using System.Xml.Serialization;
+using Mono.Xml.Schema;
+
+namespace System.Xml.Schema
+{
+       /// <summary>
+       /// Summary description for XmlSchemaIdentityConstraint.
+       /// </summary>
+       public class XmlSchemaIdentityConstraint : XmlSchemaAnnotated
+       {
+               private XmlSchemaObjectCollection fields;
+               private string name;
+               private XmlQualifiedName qName;
+               private XmlSchemaXPath selector;
+
+               private XsdIdentitySelector compiledSelector;
+//             ArrayList compiledFields;
+
+               public XmlSchemaIdentityConstraint()
+               {
+                       fields = new XmlSchemaObjectCollection();
+                       qName = XmlQualifiedName.Empty;
+               }
+               
+               [System.Xml.Serialization.XmlAttribute("name")]
+               public string Name 
+               {
+                       get{ return  name; } 
+                       set{ name = value; }
+               }
+
+               [XmlElement("selector",typeof(XmlSchemaXPath))]
+               public XmlSchemaXPath Selector 
+               {
+                       get{ return  selector; } 
+                       set{ selector = value; }
+               }
+
+               [XmlElement("field",typeof(XmlSchemaXPath))]
+               public XmlSchemaObjectCollection Fields 
+               {
+                       get{ return fields; }
+               }
+               
+               [XmlIgnore]
+               public XmlQualifiedName QualifiedName 
+               {
+                       get{ return  qName; }
+               }
+
+               internal XsdIdentitySelector CompiledSelector {
+                       get { return compiledSelector; }
+               }
+
+               internal override void SetParent (XmlSchemaObject parent)
+               {
+                       base.SetParent (parent);
+                       if (Selector != null)
+                               Selector.SetParent (this);
+                       foreach (XmlSchemaObject obj in Fields)
+                               obj.SetParent (this);
+               }
+
+               /// <remarks>
+               /// 1. name must be present
+               /// 2. selector and field must be present
+               /// </remarks>
+               internal override int Compile(ValidationEventHandler h, XmlSchema schema)
+               {
+                       // If this is already compiled this time, simply skip.
+                       if (CompilationId == schema.CompilationId)
+                               return 0;
+
+                       if(Name == null)
+                               error(h,"Required attribute name must be present");
+                       else if(!XmlSchemaUtil.CheckNCName(this.name)) 
+                               error(h,"attribute name must be NCName");
+                       else {
+                               this.qName = new XmlQualifiedName(Name, AncestorSchema.TargetNamespace);
+                               if (schema.NamedIdentities.Contains (qName)) {
+                                       XmlSchemaIdentityConstraint existing =
+                                               schema.NamedIdentities [qName] as XmlSchemaIdentityConstraint;
+                                       error(h, String.Format ("There is already same named identity constraint in this namespace. Existing item is at {0}({1},{2})", existing.SourceUri, existing.LineNumber, existing.LinePosition));
+                               }
+                               else
+                                       schema.NamedIdentities.Add (qName, this);
+                       }
+
+                       if(Selector == null)
+                               error(h,"selector must be present");
+                       else
+                       {
+                               Selector.isSelector = true;
+                               errorCount += Selector.Compile(h,schema);
+                               if (selector.errorCount == 0)
+                                       compiledSelector = new XsdIdentitySelector (Selector);
+                       }
+                       if (errorCount > 0)
+                               return errorCount; // fatal
+
+                       if(Fields.Count == 0)
+                               error(h,"atleast one field value must be present");
+                       else
+                       {
+                               for (int i = 0; i < Fields.Count; i++)
+                               {
+                                       XmlSchemaXPath field = Fields [i] as XmlSchemaXPath;
+                                       if(field != null)
+                                       {
+                                               errorCount += field.Compile(h,schema);
+                                               if (field.errorCount == 0)
+                                                       this.compiledSelector.AddField (new XsdIdentityField (field, i));
+                                       }
+                                       else
+                                               error (h, "Object of type " + Fields [i].GetType() + " is invalid in the Fields Collection");
+                               }
+                       }
+                       XmlSchemaUtil.CompileID(Id,this,schema.IDCollection,h);
+
+                       this.CompilationId = schema.CompilationId;
+                       return errorCount;
+               }
+       }
+}