private bool IsPowerViewMicroVersionedNamespace()
 {
     Global.Tracer.Assert(ListUtils.ContainsWithOrdinalComparer(NamespaceURI, m_validationNamespaceList), "Not rdl namespace: " + NamespaceURI);
     if (string.CompareOrdinal(NamespaceURI, "http://schemas.microsoft.com/sqlserver/reporting/2011/01/reportdefinition") != 0 && string.CompareOrdinal(NamespaceURI, "http://schemas.microsoft.com/sqlserver/reporting/2012/01/reportdefinition") != 0)
     {
         return(string.CompareOrdinal(NamespaceURI, "http://schemas.microsoft.com/sqlserver/reporting/2013/01/reportdefinition") == 0);
     }
     return(true);
 }
 private void ValidationCallBack(object sender, ValidationEventArgs args)
 {
     if (ListUtils.ContainsWithOrdinalComparer(base.NamespaceURI, m_validationNamespaceList))
     {
         RegisterErrorAndThrow(args.Message);
         return;
     }
     _ = base.NodeType;
     _ = 3;
 }
 private void ValidationCallBack(object sender, ValidationEventArgs args)
 {
     if (ListUtils.ContainsWithOrdinalComparer(base.NamespaceURI, base.m_validationNamespaceList))
     {
         this.RegisterErrorAndThrow(args.Message);
     }
     else
     {
         XmlNodeType nodeType = base.NodeType;
     }
 }
예제 #4
0
 internal static bool IsTargetServerAggregate(DataAggregateInfo agg, string aggregateName)
 {
     if (agg.AggregateType == DataAggregateInfo.AggregateTypes.Aggregate)
     {
         if (!string.Equals(agg.Name, aggregateName, StringComparison.Ordinal))
         {
             if (agg.DuplicateNames != null)
             {
                 return(ListUtils.ContainsWithOrdinalComparer(aggregateName, agg.DuplicateNames));
             }
             return(false);
         }
         return(true);
     }
     return(false);
 }
 public override bool Read()
 {
     try
     {
         if (CustomFlags.AfterCustomElement != this.m_custom)
         {
             base.Read();
             string message = default(string);
             if (!base.Validate(out message))
             {
                 this.RegisterErrorAndThrow(message);
             }
             if (this.m_itemType == ItemType.Rdl || this.m_itemType == ItemType.Rdlx)
             {
                 if (!this.RdlAdditionElementLocationValidation(out message))
                 {
                     this.RegisterErrorAndThrow(message);
                 }
                 if (!this.RdlAdditionAttributeLocationValidation(out message))
                 {
                     this.RegisterErrorAndThrow(message);
                 }
                 if (!this.ForceLaxSkippedValidation(out message))
                 {
                     this.RegisterErrorAndThrow(message);
                 }
             }
         }
         else
         {
             this.m_custom = CustomFlags.None;
         }
         if (CustomFlags.InCustomElement != this.m_custom)
         {
             while (!base.EOF && XmlNodeType.Element == base.NodeType && !ListUtils.ContainsWithOrdinalComparer(base.NamespaceURI, base.m_validationNamespaceList))
             {
                 this.Skip();
             }
         }
         return(!base.EOF);
     }
     catch (ArgumentException ex)
     {
         this.RegisterErrorAndThrow(ex.Message);
         return(false);
     }
 }
        private bool ForceLaxSkippedValidation(out string message)
        {
            bool result = true;

            message = null;
            if (RDLValidatingReader.m_processContent == XmlSchemaContentProcessing.Lax && m_reader.NodeType == XmlNodeType.EndElement && m_reader.SchemaInfo != null && m_reader.SchemaInfo.Validity == XmlSchemaValidity.NotKnown && ListUtils.ContainsWithOrdinalComparer(m_reader.NamespaceURI, m_validationNamespaceList))
            {
                result  = false;
                message = RDLValidatingReaderStrings.rdlValidationNoElementDecl(GetExpandedName(m_reader.LocalName, m_reader.NamespaceURI), m_reader.LocalName, m_reader.NamespaceURI, base.LineNumber.ToString(CultureInfo.InvariantCulture.NumberFormat));
            }
            return(result);
        }
        private bool RdlAdditionElementLocationValidation(out string message)
        {
            Pair <string, string>?pair = null;
            string text = null;
            bool   flag = false;

            message = null;
            if (ListUtils.ContainsWithOrdinalComparer(NamespaceURI, m_validationNamespaceList))
            {
                switch (NodeType)
                {
                case XmlNodeType.Element:
                {
                    text = GetExpandedName(LocalName, NamespaceURI);
                    bool flag2 = IsPowerViewMicroVersionedNamespace();
                    if ((m_itemType == ItemType.Rdl || m_itemType == ItemType.Rsd) && flag2)
                    {
                        message = RDLValidatingReaderStrings.rdlValidationInvalidNamespaceElement(text, NamespaceURI, base.LineNumber.ToString(CultureInfo.InvariantCulture.NumberFormat), base.LinePosition.ToString(CultureInfo.InvariantCulture.NumberFormat));
                        return(false);
                    }
                    if (m_rdlElementHierarchy.Count > 0)
                    {
                        pair = m_rdlElementHierarchy.Peek();
                    }
                    if (!pair.HasValue)
                    {
                        Global.Tracer.Assert(LocalName == "Report", "(this.LocalName == Constants.Report)");
                        Global.Tracer.Assert(NamespaceURI == "http://schemas.microsoft.com/sqlserver/reporting/2010/01/reportdefinition" || NamespaceURI == "http://schemas.microsoft.com/sqlserver/reporting/2016/01/reportdefinition", "(this.NamespaceURI == Constants.RDL2010NamespaceURI) || (this.NamespaceURI == Constants.RDL2016NamespaceURI)");
                    }
                    if (!IsEmptyElement)
                    {
                        m_rdlElementHierarchy.Push(new Pair <string, string>(text, NamespaceURI));
                    }
                    if (!flag2)
                    {
                        break;
                    }
                    string[] values = m_microversioningValidationStructureElements.GetValues(text);
                    if (values != null)
                    {
                        for (int i = 0; i < values.Length; i++)
                        {
                            if (pair.Value.First.Equals(values[i], StringComparison.Ordinal))
                            {
                                flag = true;
                                break;
                            }
                        }
                        if (!flag)
                        {
                            message = RDLValidatingReaderStrings.rdlValidationInvalidParent(Name, NamespaceURI, pair.Value.First, base.LineNumber.ToString(CultureInfo.InvariantCulture.NumberFormat), base.LinePosition.ToString(CultureInfo.InvariantCulture.NumberFormat));
                            return(false);
                        }
                    }
                    else if (!pair.Value.Second.Equals(NamespaceURI, StringComparison.Ordinal))
                    {
                        message = RDLValidatingReaderStrings.rdlValidationInvalidMicroVersionedElement(Name, pair.Value.First, base.LineNumber.ToString(CultureInfo.InvariantCulture.NumberFormat), base.LinePosition.ToString(CultureInfo.InvariantCulture.NumberFormat));
                        return(false);
                    }
                    break;
                }

                case XmlNodeType.EndElement:
                    m_rdlElementHierarchy.Pop();
                    break;
                }
            }
            return(true);
        }
예제 #8
0
        public bool Validate(out string message)
        {
            message = null;
            if (!ListUtils.ContainsWithOrdinalComparer(this.m_reader.NamespaceURI, this.m_validationNamespaceList))
            {
                return(true);
            }
            XmlSchemaComplexType xmlSchemaComplexType = null;
            bool      result    = true;
            ArrayList arrayList = new ArrayList();

            switch (this.m_reader.NodeType)
            {
            case XmlNodeType.Element:
                if (this.m_rdlElementStack == null)
                {
                    this.m_rdlElementStack = new RdlElementStack();
                }
                xmlSchemaComplexType = (this.m_reader.SchemaInfo.SchemaType as XmlSchemaComplexType);
                if (xmlSchemaComplexType != null)
                {
                    RDLValidatingReader.TraverseParticle(xmlSchemaComplexType.ContentTypeParticle, arrayList);
                }
                if (!this.m_reader.IsEmptyElement)
                {
                    if (xmlSchemaComplexType != null && 1 < arrayList.Count && RDLValidatingReader.CompareWithInvariantCulture("ReportItemsType", xmlSchemaComplexType.Name, false) != 0 && RDLValidatingReader.CompareWithInvariantCulture("MapLayersType", xmlSchemaComplexType.Name, false) != 0)
                    {
                        Hashtable hashtable2 = new Hashtable(arrayList.Count);
                        hashtable2.Add("_ParentName", this.m_reader.LocalName);
                        hashtable2.Add("_Type", xmlSchemaComplexType);
                        this.m_rdlElementStack.Add(hashtable2);
                    }
                    else
                    {
                        this.m_rdlElementStack.Add(null);
                    }
                }
                else if (xmlSchemaComplexType != null)
                {
                    for (int j = 0; j < arrayList.Count; j++)
                    {
                        XmlSchemaElement xmlSchemaElement2 = arrayList[j] as XmlSchemaElement;
                        if (xmlSchemaElement2.MinOccurs > 0m)
                        {
                            result  = false;
                            message = RDLValidatingReaderStrings.rdlValidationMissingChildElement(this.m_reader.LocalName, xmlSchemaElement2.Name, this.LineNumber.ToString(CultureInfo.InvariantCulture.NumberFormat), this.LinePosition.ToString(CultureInfo.InvariantCulture.NumberFormat));
                        }
                    }
                }
                if (0 < this.m_reader.Depth && this.m_rdlElementStack != null)
                {
                    Hashtable hashtable3 = this.m_rdlElementStack[this.m_reader.Depth - 1];
                    if (hashtable3 != null)
                    {
                        string text = (string)hashtable3[this.m_reader.LocalName];
                        if (text == null)
                        {
                            hashtable3.Add(this.m_reader.LocalName, this.m_reader.NamespaceURI);
                        }
                        else if (RDLValidatingReader.CompareWithInvariantCulture(text, this.m_reader.NamespaceURI, false) == 0)
                        {
                            result  = false;
                            message = RDLValidatingReaderStrings.rdlValidationInvalidElement(hashtable3["_ParentName"] as string, this.m_reader.LocalName, this.LineNumber.ToString(CultureInfo.InvariantCulture.NumberFormat), this.LinePosition.ToString(CultureInfo.InvariantCulture.NumberFormat));
                        }
                        else
                        {
                            string key = this.m_reader.LocalName + "$" + this.m_reader.NamespaceURI;
                            if (hashtable3.ContainsKey(key))
                            {
                                result  = false;
                                message = RDLValidatingReaderStrings.rdlValidationInvalidElement(hashtable3["_ParentName"] as string, this.m_reader.LocalName, this.LineNumber.ToString(CultureInfo.InvariantCulture.NumberFormat), this.LinePosition.ToString(CultureInfo.InvariantCulture.NumberFormat));
                            }
                            else
                            {
                                hashtable3.Add(key, this.m_reader.LocalName);
                            }
                        }
                    }
                }
                break;

            case XmlNodeType.EndElement:
                if (this.m_rdlElementStack != null)
                {
                    Hashtable hashtable = this.m_rdlElementStack[this.m_rdlElementStack.Count - 1];
                    if (hashtable != null)
                    {
                        xmlSchemaComplexType = (hashtable["_Type"] as XmlSchemaComplexType);
                        RDLValidatingReader.TraverseParticle(xmlSchemaComplexType.ContentTypeParticle, arrayList);
                        for (int i = 0; i < arrayList.Count; i++)
                        {
                            XmlSchemaElement xmlSchemaElement = arrayList[i] as XmlSchemaElement;
                            if (xmlSchemaElement.MinOccurs > 0m && !hashtable.ContainsKey(xmlSchemaElement.Name))
                            {
                                result  = false;
                                message = RDLValidatingReaderStrings.rdlValidationMissingChildElement(this.m_reader.LocalName, xmlSchemaElement.Name, this.LineNumber.ToString(CultureInfo.InvariantCulture.NumberFormat), this.LinePosition.ToString(CultureInfo.InvariantCulture.NumberFormat));
                            }
                        }
                        this.m_rdlElementStack[this.m_rdlElementStack.Count - 1] = null;
                    }
                    this.m_rdlElementStack.RemoveAt(this.m_rdlElementStack.Count - 1);
                }
                break;
            }
            return(result);
        }