Beispiel #1
0
        private static void ParseQueryString(ExternalItemPath itemPath, IParametersTranslator paramsTranslator, NameValueCollection allParametersCollection, out NameValueCollection rsParameters, out NameValueCollection rcParameters, out NameValueCollection reportParameters, out DatasourceCredentialsCollection dsParameters, out Hashtable reverseLookup)
        {
            dsParameters     = null;
            reverseLookup    = null;
            rsParameters     = new NameValueCollection();
            rcParameters     = new NameValueCollection();
            reportParameters = new NameValueCollection();
            NameValueCollection nameValueCollection  = new NameValueCollection();
            NameValueCollection nameValueCollection2 = new NameValueCollection();
            ExternalItemPath    itemPath2            = null;

            if (allParametersCollection == null)
            {
                return;
            }
            ResolveServerParameters(paramsTranslator, allParametersCollection, rsParameters, rcParameters, nameValueCollection, nameValueCollection2, reportParameters, out reverseLookup, out itemPath2);
            if (itemPath2 != null && Localization.CatalogCultureCompare(itemPath.Value, itemPath2.Value) != 0)
            {
                rsParameters         = new NameValueCollection();
                rcParameters         = new NameValueCollection();
                nameValueCollection  = new NameValueCollection();
                nameValueCollection2 = new NameValueCollection();
                reportParameters     = new NameValueCollection();
                reverseLookup        = null;
                if (RSTrace.CatalogTrace.TraceInfo)
                {
                    string message = string.Format(CultureInfo.InvariantCulture, "Requested item path '{0}' doesn't match stored parameters path '{1}'.", itemPath.Value.MarkAsPrivate(), itemPath2.Value.MarkAsPrivate());
                    RSTrace.CatalogTrace.Trace(TraceLevel.Info, message);
                }
            }
            for (int i = 0; i < allParametersCollection.Count; i++)
            {
                string   text  = allParametersCollection.GetKey(i);
                string[] array = allParametersCollection.GetValues(i);
                if (array != null && text != null)
                {
                    if (StringSupport.EndsWith(text, ":isnull", ignoreCase: true, CultureInfo.InvariantCulture))
                    {
                        text  = text.Substring(0, text.Length - ":isnull".Length);
                        array = new string[1];
                    }
                    if (!TryToAddToCollection(text, array, "rs:", allowMultiValue: false, rsParameters) && !TryToAddToCollection(text, array, "rc:", allowMultiValue: false, rcParameters) && !TryToAddToCollection(text, array, "dsu:", allowMultiValue: false, nameValueCollection) && !TryToAddToCollection(text, array, "dsp:", allowMultiValue: false, nameValueCollection2))
                    {
                        TryToAddToCollection(text, array, "", allowMultiValue: true, reportParameters);
                    }
                }
            }
            dsParameters = new DatasourceCredentialsCollection(nameValueCollection, nameValueCollection2);
        }
Beispiel #2
0
        public static NameValueCollection ExtractReportParameters(NameValueCollection allParametersCollection, ref bool[] whichParamsAreShared, out NameValueCollection otherParameters)
        {
            NameValueCollection nameValueCollection = new NameValueCollection();

            otherParameters = new NameValueCollection();
            List <bool> list = new List <bool>();

            for (int i = 0; i < allParametersCollection.Count; i++)
            {
                string   text  = allParametersCollection.GetKey(i);
                string[] array = allParametersCollection.GetValues(i);
                if (array == null || text == null)
                {
                    continue;
                }
                if (StringSupport.EndsWith(text, ":isnull", ignoreCase: true, CultureInfo.InvariantCulture))
                {
                    text  = text.Substring(0, text.Length - ":isnull".Length);
                    array = new string[1];
                }
                if (StringSupport.EndsWith(text, ":isnull", ignoreCase: true, CultureInfo.InvariantCulture))
                {
                    text  = text.Substring(0, text.Length - ":isnull".Length);
                    array = new string[1];
                }
                if (StringSupport.StartsWith(text, "rs:", ignoreCase: true, CultureInfo.InvariantCulture) || StringSupport.StartsWith(text, "rc:", ignoreCase: true, CultureInfo.InvariantCulture) || StringSupport.StartsWith(text, "dsu:", ignoreCase: true, CultureInfo.InvariantCulture) || StringSupport.StartsWith(text, "dsp:", ignoreCase: true, CultureInfo.InvariantCulture))
                {
                    if (!TryToAddToCollection(text, array, null, allowMultiValue: false, otherParameters))
                    {
                        throw new InternalCatalogException("expected to add parameter to collection" + text.MarkAsUserContent());
                    }
                    continue;
                }
                if (!TryToAddToCollection(text, array, "", allowMultiValue: true, nameValueCollection))
                {
                    throw new InternalCatalogException("expected to add parameter to collection" + text.MarkAsUserContent());
                }
                if (whichParamsAreShared != null && whichParamsAreShared.Length != 0)
                {
                    list.Add(whichParamsAreShared[i]);
                }
            }
            if (whichParamsAreShared != null && whichParamsAreShared.Length != 0)
            {
                whichParamsAreShared = list.ToArray();
            }
            return(nameValueCollection);
        }