Beispiel #1
0
        internal void CheckFacets(CompiledFacets genFacets)
        {
            if (genFacets != null)
            {
                RestrictionFlags flags = genFacets.Flags;

                if ((flags & RestrictionFlags.Length) != 0)
                {
                    _length = genFacets.Length;
                }

                if ((flags & RestrictionFlags.MinLength) != 0)
                {
                    _minLength = genFacets.MinLength;
                }

                if ((flags & RestrictionFlags.MaxLength) != 0)
                {
                    _maxLength = genFacets.MaxLength;
                }

                if ((flags & RestrictionFlags.Enumeration) != 0)
                {
                    _allowedValues = genFacets.Enumeration;
                }
            }
        }
Beispiel #2
0
        internal void CheckFacets(CompiledFacets genFacets)
        {
            if (genFacets != null)
            {
                RestrictionFlags flags = genFacets.Flags;

                if ((flags & RestrictionFlags.MaxInclusive) != 0)
                {
                    this.MaxBound = (DateTime)genFacets.MaxInclusive;
                }

                if ((flags & RestrictionFlags.MaxExclusive) != 0)
                {
                    this.MaxBound = ((DateTime)genFacets.MaxExclusive).Subtract(_step);
                }

                if ((flags & RestrictionFlags.MinInclusive) != 0)
                {
                    this.MinBound = (DateTime)genFacets.MinInclusive;
                }

                if ((flags & RestrictionFlags.MinExclusive) != 0)
                {
                    this.MinBound = ((DateTime)genFacets.MinExclusive).Add(_step);
                }

                if ((flags & RestrictionFlags.Enumeration) != 0)
                {
                    _allowedValues = genFacets.Enumeration;
                }
            }
        }
Beispiel #3
0
        internal void CheckFacets(CompiledFacets genFacets)
        {
            if (genFacets != null)
            {
                RestrictionFlags flags = genFacets.Flags;

                if ((flags & RestrictionFlags.MaxInclusive) != 0)
                {
                    this.MaxBound = (float)genFacets.MaxInclusive;
                }

                if ((flags & RestrictionFlags.MaxExclusive) != 0)
                {
                    this.MaxBound = (float)genFacets.MaxExclusive - 1;
                }

                if ((flags & RestrictionFlags.MinInclusive) != 0)
                {
                    this.MinBound = (float)genFacets.MinInclusive;
                }

                if ((flags & RestrictionFlags.MinExclusive) != 0)
                {
                    this.MinBound = (float)genFacets.MinExclusive + 1;
                }

                if ((flags & RestrictionFlags.Enumeration) != 0)
                {
                    _allowedValues = genFacets.Enumeration;
                }
            }
        }
Beispiel #4
0
        internal void CheckFacets(CompiledFacets genFacets)
        {
            if (genFacets != null)
            {
                RestrictionFlags flags = genFacets.Flags;

                if ((flags & RestrictionFlags.MaxInclusive) != 0)
                {
                    this.MaxBound = (decimal)Convert.ChangeType(genFacets.MaxInclusive, typeof(decimal));
                }

                if ((flags & RestrictionFlags.MaxExclusive) != 0)
                {
                    this.MaxBound = (decimal)Convert.ChangeType(genFacets.MaxExclusive, typeof(decimal)) - 1;
                }

                if ((flags & RestrictionFlags.MinInclusive) != 0)
                {
                    this.MinBound = (decimal)Convert.ChangeType(genFacets.MinInclusive, typeof(decimal));
                }

                if ((flags & RestrictionFlags.MinExclusive) != 0)
                {
                    this.MinBound = (decimal)Convert.ChangeType(genFacets.MinExclusive, typeof(decimal)) + 1;
                }

                if ((flags & RestrictionFlags.Enumeration) != 0)
                {
                    _allowedValues = genFacets.Enumeration;
                }

                if ((flags & RestrictionFlags.TotalDigits) != 0)
                {
                    decimal totalDigitsValue = (decimal)Math.Pow(10, genFacets.TotalDigits) - 1;

                    if (totalDigitsValue <= this.MaxBound)
                    {                     //Use the lower of totalDigits value and maxInc/maxEx
                        this.MaxBound = totalDigitsValue;
                        this.MinBound = 0 - this.MaxBound;
                    }
                }

                if ((flags & RestrictionFlags.FractionDigits) != 0 && genFacets.FractionDigits > 0)
                {
                    if ((flags & RestrictionFlags.TotalDigits) != 0)
                    {
                        //if (T,F) is (6,3) the max value is not 999.999 but 99999.9d but we are going with the smaller range on the integral part to generate more varied fractional part.
                        int    range        = genFacets.TotalDigits - genFacets.FractionDigits;
                        double integralPart = Math.Pow(10, range) - 1;
                        double fractionPart = integralPart / Math.Pow(10, range);
                        this.MaxBound = (decimal)(integralPart + fractionPart);
                        this.MinBound = 0 - this.MaxBound;
                    }
                }
            }
        }
Beispiel #5
0
        internal static XmlValueGenerator CreateGenerator(XmlSchemaDatatype datatype, int listLength)
        {
            XmlTypeCode typeCode = datatype.TypeCode;

            object            restriction = datatype.GetType().InvokeMember("Restriction", BindingFlags.GetProperty | BindingFlags.NonPublic | BindingFlags.Instance, null, datatype, null);
            CompiledFacets    rFacets     = new CompiledFacets(restriction);
            XmlValueGenerator generator;

            if (datatype.Variety == XmlSchemaDatatypeVariety.Union)
            {
                generator = CreateUnionGenerator(datatype, rFacets, listLength);
            }
            else if (datatype.Variety == XmlSchemaDatatypeVariety.List)
            {
                generator = CreateListGenerator(datatype, rFacets, listLength);
            }
            else
            {
                switch (typeCode)
                {
                case XmlTypeCode.None:
                    generator = _anyGenerator;
                    break;

                case XmlTypeCode.Item:
                    generator = _anyGenerator;
                    break;

                case XmlTypeCode.AnyAtomicType:
                    generator = _anySimpleTypeGenerator;
                    break;

                case XmlTypeCode.String:
                    generator = new Generator_string(rFacets);
                    break;

                case XmlTypeCode.Boolean:
                    generator = new Generator_boolean();
                    break;

                case XmlTypeCode.Float:
                    generator = new Generator_float(rFacets);
                    break;

                case XmlTypeCode.Double:
                    generator = new Generator_double(rFacets);
                    break;

                case XmlTypeCode.AnyUri:
                    generator = new Generator_anyURI(rFacets);
                    break;

                case XmlTypeCode.Integer:
                    generator = new Generator_integer(rFacets);
                    break;

                case XmlTypeCode.Decimal:
                    generator = new Generator_decimal(rFacets);
                    break;

                case XmlTypeCode.NonPositiveInteger:
                    generator = new Generator_nonPositiveInteger(rFacets);
                    break;

                case XmlTypeCode.NegativeInteger:
                    generator = new Generator_negativeInteger(rFacets);
                    break;

                case XmlTypeCode.Long:
                    generator = new Generator_long(rFacets);
                    break;

                case XmlTypeCode.Int:
                    generator = new Generator_integer(rFacets);
                    break;

                case XmlTypeCode.Short:
                    generator = new Generator_short(rFacets);
                    break;

                case XmlTypeCode.Byte:
                    generator = new Generator_byte(rFacets);
                    break;

                case XmlTypeCode.NonNegativeInteger:
                    generator = new Generator_nonNegativeInteger(rFacets);
                    break;

                case XmlTypeCode.UnsignedLong:
                    generator = new Generator_unsignedLong(rFacets);
                    break;

                case XmlTypeCode.UnsignedInt:
                    generator = new Generator_unsignedInt(rFacets);
                    break;

                case XmlTypeCode.UnsignedShort:
                    generator = new Generator_unsignedShort(rFacets);
                    break;

                case XmlTypeCode.UnsignedByte:
                    generator = new Generator_unsignedByte(rFacets);
                    break;

                case XmlTypeCode.PositiveInteger:
                    generator = new Generator_positiveInteger(rFacets);
                    break;

                case XmlTypeCode.Duration:
                    generator = new Generator_duration(rFacets);
                    break;

                case XmlTypeCode.DateTime:
                    generator = new Generator_dateTime(rFacets);
                    break;

                case XmlTypeCode.Date:
                    generator = new Generator_date(rFacets);
                    break;

                case XmlTypeCode.GYearMonth:
                    generator = new Generator_gYearMonth(rFacets);
                    break;

                case XmlTypeCode.GYear:
                    generator = new Generator_gYear(rFacets);
                    break;

                case XmlTypeCode.GMonthDay:
                    generator = new Generator_gMonthDay(rFacets);
                    break;

                case XmlTypeCode.GDay:
                    generator = new Generator_gDay(rFacets);
                    break;

                case XmlTypeCode.GMonth:
                    generator = new Generator_gMonth(rFacets);
                    break;

                case XmlTypeCode.Time:
                    generator = new Generator_time(rFacets);
                    break;

                case XmlTypeCode.HexBinary:
                    generator = new Generator_hexBinary(rFacets);
                    break;

                case XmlTypeCode.Base64Binary:
                    generator = new Generator_base64Binary(rFacets);
                    break;

                case XmlTypeCode.QName:
                    generator = new Generator_QName(rFacets);
                    break;

                case XmlTypeCode.Notation:
                    generator = new Generator_Notation(rFacets);
                    break;

                case XmlTypeCode.NormalizedString:
                    generator = new Generator_string(rFacets);
                    break;

                case XmlTypeCode.Token:
                case XmlTypeCode.NmToken:
                    generator = new Generator_token(rFacets);
                    break;

                case XmlTypeCode.Language:
                    generator = new Generator_language(rFacets);
                    break;

                case XmlTypeCode.Name:
                    generator = new Generator_Name(rFacets);
                    break;

                case XmlTypeCode.NCName:
                    generator = new Generator_NCName(rFacets);
                    break;

                case XmlTypeCode.Id:
                    _g_ID.CheckFacets(rFacets);
                    generator = _g_ID;
                    break;

                case XmlTypeCode.Idref:
                    _g_IDREF.CheckFacets(rFacets);
                    generator = _g_IDREF;
                    break;

                default:
                    generator = _anyGenerator;
                    break;
                }
            }

            generator.SetDatatype(datatype);

            return(generator);
        }
Beispiel #6
0
 internal Generator_double(CompiledFacets rFacets) : this()
 {
     CheckFacets(rFacets);
 }
Beispiel #7
0
 internal Generator_dateTime(CompiledFacets rFacets) : this()
 {
     CheckFacets(rFacets);
 }
Beispiel #8
0
 internal Generator_hexBinary(CompiledFacets rFacets) : this()
 {
     base.CheckFacets(rFacets);
 }
Beispiel #9
0
        private static XmlValueGenerator CreateUnionGenerator(XmlSchemaDatatype dtype, CompiledFacets facets, int listLength)
        {
            XmlSchemaSimpleType[] memberTypes = (XmlSchemaSimpleType[])dtype.GetType().InvokeMember("types", BindingFlags.GetField | BindingFlags.NonPublic | BindingFlags.Instance, null, dtype, null);
            Generator_Union       union_genr  = new Generator_Union(facets);

            foreach (XmlSchemaSimpleType st1 in memberTypes)
            {
                union_genr.AddGenerator(XmlValueGenerator.CreateGenerator(st1.Datatype, listLength));
            }

            return(union_genr);
        }
Beispiel #10
0
 internal Generator_positiveInteger(CompiledFacets rFacets) : this()
 {
     CheckFacets(rFacets);
 }
Beispiel #11
0
 internal Generator_NCName(CompiledFacets rFacets) : this()
 {
     CheckFacets(rFacets);
 }
Beispiel #12
0
 internal Generator_anyURI(CompiledFacets rFacets) : this()
 {
     CheckFacets(rFacets);
 }
Beispiel #13
0
 internal Generator_language(CompiledFacets rFacets) : base(rFacets)
 {
 }
Beispiel #14
0
 internal Generator_token(CompiledFacets rFacets) : this()
 {
     CheckFacets(rFacets);
 }
Beispiel #15
0
 internal Generator_base64Binary(CompiledFacets rFacets) : this()
 {
     CheckFacets(rFacets);
 }
Beispiel #16
0
 internal Generator_short(CompiledFacets rFacets) : this()
 {
     CheckFacets(rFacets);
 }
Beispiel #17
0
        private static XmlValueGenerator CreateListGenerator(XmlSchemaDatatype dtype, CompiledFacets facets, int listLength)
        {
            XmlSchemaDatatype itemType  = (XmlSchemaDatatype)dtype.GetType().InvokeMember("itemType", BindingFlags.GetField | BindingFlags.NonPublic | BindingFlags.Instance, null, dtype, null);
            Generator_List    list_genr = new Generator_List(facets);

            list_genr.ListLength = listLength;
            list_genr.AddGenerator(XmlValueGenerator.CreateGenerator(itemType, listLength));
            return(list_genr);
        }
Beispiel #18
0
 internal Generator_unsignedByte(CompiledFacets rFacets) : this()
 {
     CheckFacets(rFacets);
 }
Beispiel #19
0
 internal Generator_gMonth(CompiledFacets rFacets) : base(rFacets)
 {
 }
Beispiel #20
0
 internal Generator_duration(CompiledFacets rFacets) : this()
 {
     CheckFacets(rFacets);
 }
Beispiel #21
0
 internal Generator_decimal(CompiledFacets rFacets) : this()
 {
     CheckFacets(rFacets);
 }
Beispiel #22
0
 internal Generator_gDay(CompiledFacets rFacets) : base(rFacets)
 {
 }
Beispiel #23
0
 internal Generator_time(CompiledFacets rFacets) : base(rFacets)
 {
 }