Example #1
0
        protected void AssertType(DataFieldType expected)
        {
            DataFieldType?nullable = this.Type;
            DataFieldType type     = expected;

            if ((((DataFieldType)nullable.GetValueOrDefault()) != type) || !nullable.HasValue)
            {
                throw new ArgumentException("The specified XML element is not a data-field of type '" + expected.ToString() + "'.");
            }
        }
Example #2
0
        /// <summary>
        /// Creates a strongly-typed data-field instance of the proper type from the
        /// specified data-field XML element.
        /// </summary>
        /// <param name="element">The data-field XML element to create a DataField
        /// instance from.</param>
        /// <returns>An instance of a class derived from the DataField class
        /// representing the specified data-field element.</returns>
        /// <exception cref="ArgumentNullException">The element parameter is
        /// null.</exception>
        /// <exception cref="ArgumentException">The specified XML element is not a
        /// valid data-field.</exception>
        private DataField FieldFromXml(XElement element)
        {
            element.ThrowIfNull("element");
            try
            {
                // If the element does not have a 'type' attribute, we can only
                // return a weakly-typed data-field.
                DataFieldType?type = GetDataFieldType(element);
                if (type.HasValue == false)
                {
                    return(new DataField(element));
                }
                switch (type.Value)
                {
                case DataFieldType.Boolean:
                    return(new BooleanField(element));

                case DataFieldType.Fixed:
                    return(new FixedField(element));

                case DataFieldType.TextSingle:
                    return(new TextField(element));

                case DataFieldType.TextPrivate:
                    return(new PasswordField(element));

                case DataFieldType.JidSingle:
                    return(new JidField(element));

                case DataFieldType.Hidden:
                    return(new HiddenField(element));

                case DataFieldType.TextMulti:
                    return(new TextMultiField(element));

                case DataFieldType.JidMulti:
                    return(new JidMultiField(element));

                case DataFieldType.ListMulti:
                    return(new ListMultiField(element));

                case DataFieldType.ListSingle:
                    return(new ListField(element));

                default:
                    throw new XmlException("Invalid 'type' attribute: " + type);
                }
            }
            catch (Exception e)
            {
                throw new ArgumentException("Invalid 'field' XML element.", e);
            }
        }
Example #3
0
 /// <summary>
 /// Sets the type of the data-field to the specified value.
 /// </summary>
 /// <param name="type">The value to set the type of the data-field to. Can be
 /// one of the values from the DataFieldType enumeration.</param>
 void SetType(DataFieldType?type)
 {
     if (!type.HasValue)
     {
         element.RemoveAttribute("type");
     }
     else
     {
         string value = TypeToAttributeValue(type.Value);
         element.SetAttribute("type", value);
     }
 }
Example #4
0
 private void SetType(DataFieldType?type)
 {
     if (!type.HasValue)
     {
         this.element.RemoveAttribute("type");
     }
     else
     {
         string str = this.TypeToAttributeValue(type.Value);
         this.element.SetAttribute("type", str);
     }
 }
Example #5
0
        private DataField FieldFromXml(XmlElement element)
        {
            DataField field;

            element.ThrowIfNull <XmlElement>("element");
            try
            {
                DataFieldType?dataFieldType = this.GetDataFieldType(element);
                if (!dataFieldType.HasValue)
                {
                    return(new DataField(element));
                }
                switch (dataFieldType.Value)
                {
                case DataFieldType.Boolean:
                    return(new BooleanField(element));

                case DataFieldType.Fixed:
                    return(new FixedField(element));

                case DataFieldType.Hidden:
                    return(new HiddenField(element));

                case DataFieldType.JidMulti:
                    return(new JidMultiField(element));

                case DataFieldType.JidSingle:
                    return(new JidField(element));

                case DataFieldType.ListMulti:
                    return(new ListMultiField(element));

                case DataFieldType.ListSingle:
                    return(new ListField(element));

                case DataFieldType.TextMulti:
                    return(new TextMultiField(element));

                case DataFieldType.TextSingle:
                    return(new TextField(element));

                case DataFieldType.TextPrivate:
                    return(new PasswordField(element));
                }
                throw new XmlException("Invalid 'type' attribute: " + dataFieldType);
            }
            catch (Exception exception)
            {
                throw new ArgumentException("Invalid 'field' XML element.", exception);
            }
            return(field);
        }
Example #6
0
        private DataFieldType?GetDataFieldType()
        {
            DataFieldType?nullable;

            try
            {
                string attribute = this.element.GetAttribute("type");
                if (string.IsNullOrEmpty(attribute))
                {
                    return(null);
                }
                nullable = new DataFieldType?(this.AttributeValueToType(attribute));
            }
            catch (Exception exception)
            {
                throw new XmlException("The 'type' attribute of the underlying XML element is invalid.", exception);
            }
            return(nullable);
        }