Ejemplo n.º 1
0
        // 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);
        }
Ejemplo n.º 2
0
        /// <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);
        }
Ejemplo n.º 3
0
        /// <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);
            }
        }
Ejemplo n.º 4
0
        // --------------------------------------------------
        // 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);
        }
Ejemplo n.º 5
0
        // --------------------------------------------------
        // 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);
        }
Ejemplo n.º 6
0
        /// <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);
        }
Ejemplo n.º 7
0
        /// <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);
        }
Ejemplo n.º 8
0
        /// <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);
        }
Ejemplo n.º 9
0
        /// <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);
        }