private static bool NodeContainsErrors(ISchemaEditorNode node, SchemaErrorCollection errors) { bool errorFound = false; foreach (IFieldReference attribute in node.Attributes) { if(attribute.IsRequired && attribute.HasValue==false) { node.HasSchemaError = true; errorFound = true; errors.Add(new AttributeSchemaError(attribute, node)); } } foreach (NodeFieldReference fieldReference in node.NodeFields) { if(fieldReference.AmountRequired>fieldReference.AmountExisting) { node.HasSchemaError = true; errorFound =true; errors.Add(new ElementSchemaError(fieldReference, node)); } } node.HasSchemaError = errorFound; errorFound = false; foreach (ISchemaEditorNode activeNode in node.ActiveNodes) { if(NodeContainsErrors(activeNode,errors)) { errorFound = true; } } node.ChildHasSchemaError = errorFound; return node.ChildHasSchemaError || node.HasSchemaError; }
public static SchemaErrorCollection CheckSchemaCompliance(ISchemaEditorNode node) { SchemaErrorCollection errors = new SchemaErrorCollection(); NodeContainsErrors(node, errors); return errors; }
/// <summary> /// Creates a shallow copy of the <see cref="SchemaErrorCollection"/>. /// </summary> /// <returns> /// A shallow copy of the <see cref="SchemaErrorCollection"/>. /// </returns> /// <remarks> /// Please refer to <see cref="ArrayList.Clone"/> for details. /// </remarks> public virtual object Clone() { SchemaErrorCollection clone = new SchemaErrorCollection(_data.Count); Array.Copy(_data.Items, 0, clone._data.Items, 0, _data.Count); clone._data.Count = _data.Count; clone._data.IsUnique = _data.IsUnique; return clone; }
/// <overloads> /// Adds a range of elements to the end of the /// <see cref="SchemaErrorCollection"/>. /// </overloads> /// <summary> /// Adds the elements of another collection to the end of the /// <see cref="SchemaErrorCollection"/>. /// </summary> /// <param name="collection"> /// The <see cref="SchemaErrorCollection"/> whose elements /// should be added to the end of the current collection.</param> /// <exception cref="ArgumentNullException"> /// <paramref name="collection"/> is a null reference.</exception> /// <exception cref="NotSupportedException"><para> /// The <see cref="SchemaErrorCollection"/> /// is read-only or has a fixed size. /// </para><para>-or-</para><para> /// The <b>SchemaErrorCollection</b> already contains one /// or more elements in <paramref name="collection"/>, /// and the <b>SchemaErrorCollection</b> /// ensures that all elements are unique. /// </para></exception> /// <remarks> /// Please refer to <see cref="ArrayList.AddRange"/> for details. /// </remarks> public virtual void AddRange(SchemaErrorCollection collection) { if (collection == null) throw new ArgumentNullException("collection"); AddRange(collection._data.Items, collection.Count); }
/// <summary> /// Returns a read-only wrapper for the specified /// <see cref="SchemaErrorCollection"/>. /// </summary> /// <param name="collection"> /// The <see cref="SchemaErrorCollection"/> to wrap.</param> /// <returns> /// A read-only wrapper around <paramref name="collection"/>. /// </returns> /// <exception cref="ArgumentNullException"> /// <paramref name="collection"/> is a null reference.</exception> /// <remarks> /// Please refer to <see cref="ArrayList.ReadOnly"/> for details. /// </remarks> public static SchemaErrorCollection ReadOnly( SchemaErrorCollection collection) { if (collection == null) throw new ArgumentNullException("collection"); return new ReadOnlyWrapper(collection._data); }
/// <summary> /// Initializes a new instance of the /// <see cref="SchemaErrorCollection"/> class that /// contains elements copied from the specified collection and that /// has the same initial capacity as the number of elements copied. /// </summary> /// <param name="collection"> /// The <see cref="SchemaErrorCollection"/> /// whose elements are copied to the new collection.</param> /// <exception cref="ArgumentNullException"> /// <paramref name="collection"/> is a null reference.</exception> /// <remarks> /// Please refer to <see cref="ArrayList(ICollection)"/> for details. /// </remarks> public SchemaErrorCollection(SchemaErrorCollection collection) { if (collection == null) throw new ArgumentNullException("collection"); _data = new Data(); _data.Items = new ISchemaError[collection.Count]; AddRange(collection._data.Items, collection.Count); }
public override void AddRange(SchemaErrorCollection collection) { throw new NotSupportedException( "Read-only collections cannot be modified."); }