Example #1
0
        // -------------------------------
        // - Begin public methods region -
        // -------------------------------
        /// <summary>
        /// Try to map actual Attributes to Attribute specifications.
        /// </summary>
        /// <param name="attributeSet">The actual Attributes to map.</param>
        /// <param name="sortedAttributeListSpecification">The Attribute specifications to map to.</param>
        /// <returns>
        /// Indicates if all supplied actual Attributes and their direct and indirect
        /// Attribute childs have been mapped.
        /// </returns>
        public static bool Map(AttributeSet attributeSet, SortedAttributeListSpecification sortedAttributeListSpecification)
        {
            bool attributesMapped = true;

            foreach (Attribute attribute in attributeSet)
            {
                bool attributeMapped = Map(attribute, sortedAttributeListSpecification);
                attributesMapped = (attributesMapped && attributeMapped);
            }

            return (attributesMapped);
        }
Example #2
0
        // ------------------------------
        // - End private methods region -
        // ------------------------------
        #endregion



        #region - Public methods -
        // -------------------------------
        // - Begin public methods region -
        // -------------------------------

        /// <summary>
        /// Try to map actual Attributes to Attribute specifications.
        /// </summary>
        /// <param name="attributeSet">The actual Attributes to map.</param>
        /// <param name="sortedAttributeListSpecification">The Attribute specifications to map to.</param>
        /// <returns>
        /// Indicates if all supplied actual Attributes and their direct and indirect
        /// Attribute childs have been mapped.
        /// </returns>
        public static bool Map(AttributeSet attributeSet, SortedAttributeListSpecification sortedAttributeListSpecification)
        {
            bool attributesMapped = true;

            foreach (Attribute attribute in attributeSet)
            {
                bool attributeMapped = Map(attribute, sortedAttributeListSpecification);
                attributesMapped = (attributesMapped && attributeMapped);
            }

            return(attributesMapped);
        }
Example #3
0
        /// <summary>
        /// Try to map one Attribute to Attribute specifications.
        /// </summary>
        /// <param name="attribute">The actual Attribute to map.</param>
        /// <param name="sortedAttributeListSpecification">The Attribute specifications to map to.</param>
        /// <returns>
        /// Indicates if the supplied actual Attribute and it's direct and indirect
        /// Attribute childs have been mapped.
        /// </returns>
        public static bool Map(Attribute attribute, SortedAttributeListSpecification sortedAttributeListSpecification)
        {
            bool attributesMapped = true;

            //
            // Determine which attribute specification instances have the same tag and level.
            //

            AttributeData attributeData = new AttributeData();

            attribute.Data = attributeData;

            attributeData.Mapping = sortedAttributeListSpecification.GetAttributes(attribute.Tag.GroupNumber, attribute.Tag.ElementNumber);

            if (attributeData.Mapping.Count == 0)
            {
                attributesMapped = false;
            }

            //
            // If this attribute is a Sequence Attribute, also map its children.
            //

            if (attribute is SequenceAttribute)
            {
                SequenceAttribute sequenceAttribute = attribute as SequenceAttribute;

                SortedAttributeListSpecification sequenceItemSpecification = GetSequenceItemSpecification(attributeData.Mapping);

                foreach (SequenceItem sequenceItem in sequenceAttribute.SequenceItems)
                {
                    bool sequenceItemMapped = Map(sequenceItem, sequenceItemSpecification);

                    attributesMapped = (attributesMapped && sequenceItemMapped);
                }
            }

            attributeData.AttributesMapped = attributesMapped;

            return (attributesMapped);
        }
Example #4
0
        /// <summary>
        /// Try to map one Attribute to Attribute specifications.
        /// </summary>
        /// <param name="attribute">The actual Attribute to map.</param>
        /// <param name="sortedAttributeListSpecification">The Attribute specifications to map to.</param>
        /// <returns>
        /// Indicates if the supplied actual Attribute and it's direct and indirect
        /// Attribute childs have been mapped.
        /// </returns>
        public static bool Map(Attribute attribute, SortedAttributeListSpecification sortedAttributeListSpecification)
        {
            bool attributesMapped = true;

            //
            // Determine which attribute specification instances have the same tag and level.
            //

            AttributeData attributeData = new AttributeData();

            attribute.Data = attributeData;

            attributeData.Mapping = sortedAttributeListSpecification.GetAttributes(attribute.Tag.GroupNumber, attribute.Tag.ElementNumber);

            if (attributeData.Mapping.Count == 0)
            {
                attributesMapped = false;
            }

            //
            // If this attribute is a Sequence Attribute, also map its children.
            //

            if (attribute is SequenceAttribute)
            {
                SequenceAttribute sequenceAttribute = attribute as SequenceAttribute;

                SortedAttributeListSpecification sequenceItemSpecification = GetSequenceItemSpecification(attributeData.Mapping);

                foreach (SequenceItem sequenceItem in sequenceAttribute.SequenceItems)
                {
                    bool sequenceItemMapped = Map(sequenceItem, sequenceItemSpecification);

                    attributesMapped = (attributesMapped && sequenceItemMapped);
                }
            }

            attributeData.AttributesMapped = attributesMapped;

            return(attributesMapped);
        }
Example #5
0
        // --------------------------------
        // - Begin private methods region -
        // --------------------------------

        /// <summary>
        /// Gets the list of all possible Attribute specifications that can be used to map Attributes in a Sequence Item to.
        /// </summary>
        /// <param name="mapping">The mapping of the current Attribute.</param>
        /// <returns></returns>
        private static SortedAttributeListSpecification GetSequenceItemSpecification(List <AttributeSpecification> mapping)
        {
            SortedAttributeListSpecification sequenceItemSpecification = new SortedAttributeListSpecification();

            foreach (AttributeSpecification attributeSpecification in mapping)
            {
                if (attributeSpecification is SequenceAttributeSpecification)
                {
                    SequenceAttributeSpecification sequenceAttributeSpecification = attributeSpecification as SequenceAttributeSpecification;

                    List <AttributeSpecification> attributeSpecificationsInSequenceItem = sequenceAttributeSpecification.SortedAttributeList.GetAttributes();

                    foreach (AttributeSpecification attributeSpecificationInSequenceItem in attributeSpecificationsInSequenceItem)
                    {
                        sequenceItemSpecification.Add(attributeSpecificationInSequenceItem);
                    }
                }
            }

            return(sequenceItemSpecification);
        }
Example #6
0
        // --------------------------------
        // - Begin private methods region -
        // --------------------------------
        /// <summary>
        /// Gets the list of all possible Attribute specifications that can be used to map Attributes in a Sequence Item to.
        /// </summary>
        /// <param name="mapping">The mapping of the current Attribute.</param>
        /// <returns></returns>
        private static SortedAttributeListSpecification GetSequenceItemSpecification(List<AttributeSpecification> mapping)
        {
            SortedAttributeListSpecification sequenceItemSpecification = new SortedAttributeListSpecification();

            foreach (AttributeSpecification attributeSpecification in mapping)
            {
                if (attributeSpecification is SequenceAttributeSpecification)
                {
                    SequenceAttributeSpecification sequenceAttributeSpecification = attributeSpecification as SequenceAttributeSpecification;

                    List<AttributeSpecification> attributeSpecificationsInSequenceItem = sequenceAttributeSpecification.SortedAttributeList.GetAttributes();

                    foreach (AttributeSpecification attributeSpecificationInSequenceItem in attributeSpecificationsInSequenceItem)
                    {
                        sequenceItemSpecification.Add(attributeSpecificationInSequenceItem);
                    }
                }
            }

            return (sequenceItemSpecification);
        }