// Duplication / Copy / Move ------------------------------------------- /// <summary> /// MergeDbQuerys the specified schema element to the specified parent schema element. /// </summary> /// <param name="aElement">The schema element to consider.</param> /// <param name="aSchemaZoneElement">The parent schema element zone to consider.</param> /// <returns>The duplicated schema element.</returns> public SchemaElement MergeDbQueryElement( SchemaElement aElement, SchemaZoneElement aSchemaZoneElement = null) { if (aElement == null) { return(null); } return(aElement.Clone(aSchemaZoneElement) as SchemaElement); }
/// <summary> /// Add a new schema element zone to the specified parent schema element zone. /// </summary> /// <param name="parentZoneElement">The parent schema element zone to consider.</param> /// <param name="aElement">The schema element to consider.</param> public void AddElement( SchemaZoneElement parentZoneElement, SchemaElement aElement) { if ((parentZoneElement == null) | (aElement == null)) { return; } aElement.ParentZone = parentZoneElement; parentZoneElement.AddSubElement(aElement); }
/// <summary> /// Moves the specified schema elements to the specified parent schema element. /// </summary> /// <param name="elements">The schema elements to consider.</param> /// <param name="parentZoneElement">The parent schema element zone to consider.</param> public void MoveElements( List <SchemaElement> elements, SchemaZoneElement parentZoneElement) { if (elements == null) { return; } foreach (SchemaElement currentElement in elements) { MoveElement(currentElement, parentZoneElement); } }
// -------------------------------------------------- // ACCESSORS // -------------------------------------------------- #region Accessors /// <summary> /// Indicates whether this instance is a descendant of the specified parent schema element zone. /// </summary> /// <param name="parentZoneElement">The parent schema element zone to consider.</param> /// <returns>True if this instance is a descendant of the specified parent schema element.</returns> public bool IsDescendantOf( SchemaZoneElement parentZoneElement) { SchemaElement currentSchemaZoneElement = _parentZone; while (currentSchemaZoneElement != null) { if (currentSchemaZoneElement == parentZoneElement) { return(true); } currentSchemaZoneElement = currentSchemaZoneElement.ParentZone; } return(false); }
// -------------------------------------------------- // CLONING // -------------------------------------------------- #region Cloning /// <summary> /// Clones this instance. /// </summary> /// <param name="parent">The parent schema element group to consider.</param> /// <returns>Returns a cloned instance.</returns> public override object Clone(SchemaZoneElement parent, params string[] areas) { if (parent == null) { parent = ParentZone; } SchemaZoneElement element = base.Clone(parent, areas) as SchemaZoneElement; foreach (SchemaElement subElement in SubElements) { element.AddSubElement(subElement.Clone(element) as SchemaElement); } return(element); }
/// <summary> /// Add a new object to the specified parent schema element zone. /// </summary> /// <param name="parentZoneElement">The parent schema element zone to consider.</param> /// <returns>The created schema element.</returns> public SchemaElement CreateElement( SchemaZoneElement parentZoneElement) { if (parentZoneElement == null) { return(null); } SchemaElement element = new SchemaElement { ParentZone = parentZoneElement }; parentZoneElement.AddSubElement(element); return(element); }
/// <summary> /// Clones this instance. /// </summary> /// <param name="parent">The parent schema element zone to consider.</param> /// <returns>Returns a cloned instance.</returns> public virtual object Clone(SchemaZoneElement parent, params string[] areas) { if (parent == null) { parent = ParentZone; } SchemaZoneElement element = base.Clone(areas) as SchemaZoneElement; element.Entity = _entity; element.ParentZone = parent; if (parent != null) { parent.SubElements.Add(element); } return(element); }
/// <summary> /// MergeDbQuerys the specified schema elements to the specified parent schema element. /// </summary> /// <param name="elements">The schema elements to consider.</param> /// <param name="parentZoneElement">The parent schema element zone object to consider.</param> public List <SchemaElement> MergeDbQueryElements( List <SchemaElement> elements, SchemaZoneElement parentZoneElement = null) { List <SchemaElement> duplicatedElements = new List <SchemaElement>(); if (elements == null) { return(duplicatedElements); } foreach (SchemaElement currentElement in elements) { duplicatedElements.Add(MergeDbQueryElement(currentElement, parentZoneElement)); } return(duplicatedElements); }
/// <summary> /// Moves the specified schema element to the specified parent schema element. /// </summary> /// <param name="aElement">The schema element to consider.</param> /// <param name="parentZoneElement">The parent schema element zone to consider.</param> public bool MoveElement( SchemaElement aElement, SchemaZoneElement parentZoneElement) { if ((aElement == null) || (aElement.ParentZone == null) | (parentZoneElement == null)) { return(true); } if ((parentZoneElement == aElement) | ((aElement is SchemaZoneElement) && (parentZoneElement.IsDescendantOf((SchemaZoneElement)aElement)))) { return(false); } aElement.ParentZone.SubElements.Remove(aElement); aElement.ParentZone = parentZoneElement; if (!parentZoneElement.SubElements.Contains(parentZoneElement)) { parentZoneElement.SubElements.Add(aElement); } return(true); }