Exemplo n.º 1
0
        /// <summary>
        /// Common procedure to retrieve a parameter of any type; will return a TVariant object
        /// </summary>
        /// <returns>void</returns>
        public TVariant Get(String parameterId, int column, int depth, eParameterFit exact)
        {
            TParameter element = GetParameter(parameterId, column, depth, exact);

            if (element != null)
            {
                return(element.value);
            }

            return(new TVariant());
        }
Exemplo n.º 2
0
        /// <summary>
        /// Get the value of a parameter
        /// </summary>
        /// <param name="parameterId"></param>
        /// <param name="column"></param>
        /// <param name="depth"></param>
        /// <param name="exact"></param>
        /// <returns></returns>
        protected string Get(String parameterId, int column, int depth, eParameterFit exact)
        {
            string ReturnValue;

            ReturnValue = FParameters.Get(parameterId, column, depth, exact).ToString();

            if (ReturnValue == "NOTFOUND")
            {
                ReturnValue = "";
            }

            return(ReturnValue);
        }
Exemplo n.º 3
0
        /// <summary>
        /// Remove a variable; it will not exist anymore
        ///
        /// </summary>
        /// <returns>void</returns>
        public void RemoveVariable(String AParameterId, int AColumn, int ADepth, eParameterFit AExact)
        {
            TParameter element;

            element = GetParameter(AParameterId, AColumn, ADepth, AExact);

            while (element != null)
            {
                Fparameters.Remove(element);

                element = GetParameter(AParameterId, AColumn, ADepth, AExact);
            }
        }
Exemplo n.º 4
0
        /// <summary>
        /// get an untyped reference to an object of TRptGrpValue
        /// </summary>
        /// <returns>an untyped reference to an object of TRptGrpValue
        /// </returns>
        public System.Object GetGrpValue(String parameterId, int column, int depth, eParameterFit exact)
        {
            System.Object ReturnValue;
            TParameter    element;

            ReturnValue = null;
            element     = GetParameter(parameterId, column, depth, exact);

            if ((element != null) && (element.pRptGroup != null))
            {
                ReturnValue = element.pRptGroup;
            }

            return(ReturnValue);
        }
Exemplo n.º 5
0
        /// <summary>
        /// Test if a value other than NOTFOUND would be returned
        /// </summary>
        /// <param name="parameterId"></param>
        /// <param name="column"></param>
        /// <param name="depth"></param>
        /// <param name="exact">determines how strictly a match has to fit the request; can be eExact, eBestFit, eAllColumnFit, eBestFitEvenLowerLevel</param>
        /// <returns>true if the parameter exists in the current collection
        /// </returns>
        public Boolean Exists(String parameterId, int column, int depth, eParameterFit exact)
        {
            Boolean    ReturnValue;
            TParameter element;

            ReturnValue = false;
            element     = GetParameter(parameterId, column, depth, exact);

            if (element != null)
            {
                ReturnValue = ((!element.value.IsNil()));
            }

            return(ReturnValue);
        }
Exemplo n.º 6
0
        /// <summary>
        /// Procedure to copy all parameters of one column from another parameter list;
        /// The column is first emptied in this parameter list, before the copying takes place.
        ///
        /// </summary>
        /// <returns>void</returns>
        public void Copy(TParameterList AOtherList, int column, int depth, eParameterFit exact, int ADestColumn)
        {
            TParameter element;

            System.Int32 Counter;

            if (ADestColumn == -1)
            {
                ADestColumn = column;
            }

            // remove all parameters in column
            Counter = 0;

            while (Counter < Fparameters.Count)
            {
                element = (TParameter)Fparameters[Counter];

                if (element.column == ADestColumn)
                {
                    Fparameters.RemoveAt(Counter);
                }
                else
                {
                    Counter = Counter + 1;
                }
            }

            // copy parameters from other list
            foreach (TParameter element2 in AOtherList.Fparameters)
            {
                if (element2.column == column)
                {
                    Add(element2.name, element2.value, ADestColumn, element2.level, element2.subreport);
                }
            }
        }
Exemplo n.º 7
0
        /// <summary>
        /// Common procedure to retrieve a parameter of any type; will return a TParameter object
        ///
        /// </summary>
        /// <returns>void</returns>
        public TParameter GetParameter(String parameterId, int column, int depth, eParameterFit exact)
        {
            int subreport = -1;

            TParameter ReturnValue   = null;
            TParameter columnFit     = null;
            TParameter commonFit     = null;
            TParameter allColumnFit  = null;
            TParameter bestLevelFit  = null;
            TParameter lowerLevelFit = null;
            TParameter anyFit        = null;
            int        closestLevel  = -1;
            int        lowerLevel    = 20;

            if (parameterId != "CurrentSubReport")
            {
                subreport = GetOrDefault("CurrentSubReport", -1, new TVariant(-1)).ToInt();
            }

/* Perhaps I'll get more speed if I remove this..
 *          // just to be careful: if curly brackets were used by accident in the xml file, remove them
 *          if (parameterId[0] == '{')
 *          {
 *              TLogging.Log(
 *                  "deprecated: " + parameterId +
 *                  "; make sure your report xml file is correct, you might be using a variable with brackets in a function call to exists or isnull");
 *              parameterId = parameterId.Substring(1, parameterId.Length - 2);
 *
 *              if ((parameterId[0] == '{') || (parameterId[0] == '#'))
 *              {
 *                  parameterId = parameterId.Substring(1, parameterId.Length - 2);
 *              }
 *          }
 */
            foreach (TParameter element in Fparameters)
            {
                if (((element.subreport == subreport) || (element.subreport == -1)) && StringHelper.IsSame(element.name, parameterId))
                {
                    // is there an exact match?
                    if ((element.level == depth) && (element.column == column))
                    {
                        return(element);
                    }

                    // there is a global match
                    if (((element.level == -1) || (element.level == -2)) && (element.column == -1))
                    {
                        commonFit = element;
                    }

                    // there is a match for all data columns (ALLCOLUMNS)
                    if ((element.level == depth) && (element.column == ReportingConsts.ALLCOLUMNS))
                    {
                        allColumnFit = element;
                    }

                    // has the exact column and is valid for all lines (1) or (2)
                    if (((element.level == -1) || (element.level == -2)) && (element.column == column))
                    {
                        columnFit = element;
                    }

                    // has the exact column or an column = 1 and the next line above
                    if (((element.column == -1) || (element.column == column)) && (element.level > closestLevel) && (element.level <= depth))
                    {
                        bestLevelFit = element;
                        closestLevel = element.level;
                    }

                    // has the exact column or an column = 1 and a lower line
                    if (((element.column == -1) || (element.column == column)) && (element.level < lowerLevel) && (element.level > depth))
                    {
                        lowerLevelFit = element;
                        lowerLevel    = element.level;
                    }

                    // we are looking for any occurrence
                    if ((depth == -1) && (column == -1))
                    {
                        anyFit = element;
                    }
                } // if
            }     // foreach

            if (exact == eParameterFit.eExact)
            {
                // no exact fitting element was found
                return(null);
            }

            if (exact == eParameterFit.eAllColumnFit)
            {
                if (allColumnFit != null)
                {
                    ReturnValue = allColumnFit;
                }

                return(ReturnValue);
            }

            if (columnFit != null)
            {
                return(columnFit);
            }

            if (bestLevelFit != null)
            {
                return(bestLevelFit);
            }

            if (commonFit != null)
            {
                return(commonFit);
            }

            if ((lowerLevelFit != null) && (exact == eParameterFit.eBestFitEvenLowerLevel))
            {
                return(lowerLevelFit);
            }

            if ((ReturnValue == null) && (exact == eParameterFit.eBestFit) && (anyFit != null))
            {
                return(anyFit);
            }

            return(ReturnValue);
        }
Exemplo n.º 8
0
        /// <summary>
        /// Common procedure to retrieve a parameter of any type; will return a TParameter object
        ///
        /// </summary>
        /// <returns>void</returns>
        public TParameter GetParameter(String parameterId, int column = -1, int depth = -1, eParameterFit exact = eParameterFit.eBestFit)
        {
            TParameter ReturnValue   = null;
            TParameter columnFit     = null;
            TParameter commonFit     = null;
            TParameter allColumnFit  = null;
            TParameter bestLevelFit  = null;
            TParameter lowerLevelFit = null;
            TParameter anyFit        = null;
            int        closestLevel  = -1;
            int        lowerLevel    = 20;

            foreach (TParameter element in Fparameters)
            {
                if (StringHelper.IsSame(element.name, parameterId))
                {
                    // is there an exact match?
                    if ((element.level == depth) && (element.column == column))
                    {
                        return(element);
                    }

                    // there is a global match
                    if (((element.level == -1) || (element.level == -2)) && (element.column == -1))
                    {
                        commonFit = element;
                    }

                    // there is a match for all data columns (ALLCOLUMNS)
                    if ((element.level == depth) && (element.column == TParameter.ALLCOLUMNS))
                    {
                        allColumnFit = element;
                    }

                    // has the exact column and is valid for all lines (1) or (2)
                    if (((element.level == -1) || (element.level == -2)) && (element.column == column))
                    {
                        columnFit = element;
                    }

                    // has the exact column or an column = 1 and the next line above
                    if (((element.column == -1) || (element.column == column)) && (element.level > closestLevel) && (element.level <= depth))
                    {
                        bestLevelFit = element;
                        closestLevel = element.level;
                    }

                    // has the exact column or an column = 1 and a lower line
                    if (((element.column == -1) || (element.column == column)) && (element.level < lowerLevel) && (element.level > depth))
                    {
                        lowerLevelFit = element;
                        lowerLevel    = element.level;
                    }

                    // we are looking for any occurrence
                    if ((depth == -1) && (column == -1))
                    {
                        anyFit = element;
                    }
                } // if
            }     // foreach

            if (exact == eParameterFit.eExact)
            {
                // no exact fitting element was found
                return(null);
            }

            if (exact == eParameterFit.eAllColumnFit)
            {
                if (allColumnFit != null)
                {
                    ReturnValue = allColumnFit;
                }

                return(ReturnValue);
            }

            if (columnFit != null)
            {
                return(columnFit);
            }

            if (bestLevelFit != null)
            {
                return(bestLevelFit);
            }

            if (commonFit != null)
            {
                return(commonFit);
            }

            if ((lowerLevelFit != null) && (exact == eParameterFit.eBestFitEvenLowerLevel))
            {
                return(lowerLevelFit);
            }

            if ((ReturnValue == null) && (exact == eParameterFit.eBestFit) && (anyFit != null))
            {
                return(anyFit);
            }

            return(ReturnValue);
        }
Exemplo n.º 9
0
        /// <summary>
        /// Common procedure to retrieve a parameter of any type; will return a TParameter object
        ///
        /// </summary>
        /// <returns>void</returns>
        public TParameter GetParameter(String parameterId, int column, int depth, eParameterFit exact)
        {
            int subreport = -1;

            TParameter ReturnValue = null;
            TParameter columnFit = null;
            TParameter commonFit = null;
            TParameter allColumnFit = null;
            TParameter bestLevelFit = null;
            TParameter lowerLevelFit = null;
            TParameter anyFit = null;
            int closestLevel = -1;
            int lowerLevel = 20;

            if (parameterId != "CurrentSubReport")
            {
                subreport = GetOrDefault("CurrentSubReport", -1, new TVariant(-1)).ToInt();
            }

/* Perhaps I'll get more speed if I remove this..
 *          // just to be careful: if curly brackets were used by accident in the xml file, remove them
 *          if (parameterId[0] == '{')
 *          {
 *              TLogging.Log(
 *                  "deprecated: " + parameterId +
 *                  "; make sure your report xml file is correct, you might be using a variable with brackets in a function call to exists or isnull");
 *              parameterId = parameterId.Substring(1, parameterId.Length - 2);
 *
 *              if ((parameterId[0] == '{') || (parameterId[0] == '#'))
 *              {
 *                  parameterId = parameterId.Substring(1, parameterId.Length - 2);
 *              }
 *          }
 */
            foreach (TParameter element in Fparameters)
            {
                if (((element.subreport == subreport) || (element.subreport == -1)) && StringHelper.IsSame(element.name, parameterId))
                {
                    // is there an exact match?
                    if ((element.level == depth) && (element.column == column))
                    {
                        return element;
                    }

                    // there is a global match
                    if (((element.level == -1) || (element.level == -2)) && (element.column == -1))
                    {
                        commonFit = element;
                    }

                    // there is a match for all data columns (ALLCOLUMNS)
                    if ((element.level == depth) && (element.column == ReportingConsts.ALLCOLUMNS))
                    {
                        allColumnFit = element;
                    }

                    // has the exact column and is valid for all lines (1) or (2)
                    if (((element.level == -1) || (element.level == -2)) && (element.column == column))
                    {
                        columnFit = element;
                    }

                    // has the exact column or an column = 1 and the next line above
                    if (((element.column == -1) || (element.column == column)) && (element.level > closestLevel) && (element.level <= depth))
                    {
                        bestLevelFit = element;
                        closestLevel = element.level;
                    }

                    // has the exact column or an column = 1 and a lower line
                    if (((element.column == -1) || (element.column == column)) && (element.level < lowerLevel) && (element.level > depth))
                    {
                        lowerLevelFit = element;
                        lowerLevel = element.level;
                    }

                    // we are looking for any occurance
                    if ((depth == -1) && (column == -1))
                    {
                        anyFit = element;
                    }
                } // if
            } // foreach

            if (exact == eParameterFit.eExact)
            {
                // no exact fitting element was found
                return null;
            }

            if (exact == eParameterFit.eAllColumnFit)
            {
                if (allColumnFit != null)
                {
                    ReturnValue = allColumnFit;
                }

                return ReturnValue;
            }

            if (columnFit != null)
            {
                return columnFit;
            }

            if (bestLevelFit != null)
            {
                return bestLevelFit;
            }

            if (commonFit != null)
            {
                return commonFit;
            }

            if ((lowerLevelFit != null) && (exact == eParameterFit.eBestFitEvenLowerLevel))
            {
                return lowerLevelFit;
            }

            if ((ReturnValue == null) && (exact == eParameterFit.eBestFit) && (anyFit != null))
            {
                return anyFit;
            }

            return ReturnValue;
        }
Exemplo n.º 10
0
        /// <summary>
        /// get an untyped reference to an object of TRptGrpValue
        /// </summary>
        /// <returns>an untyped reference to an object of TRptGrpValue
        /// </returns>
        public System.Object GetGrpValue(String parameterId, int column, int depth, eParameterFit exact)
        {
            System.Object ReturnValue;
            TParameter element;
            ReturnValue = null;
            element = GetParameter(parameterId, column, depth, exact);

            if ((element != null) && (element.pRptGroup != null))
            {
                ReturnValue = element.pRptGroup;
            }

            return ReturnValue;
        }
Exemplo n.º 11
0
        /// <summary>
        /// Common procedure to retrieve a parameter of any type; will return a TVariant object
        /// </summary>
        /// <returns>void</returns>
        public TVariant Get(String parameterId, int column, int depth, eParameterFit exact)
        {
            TParameter element = GetParameter(parameterId, column, depth, exact);

            if (element != null)
            {
                return element.value;
            }

            return new TVariant();
        }
Exemplo n.º 12
0
        /// <summary>
        /// Test if a value other than NOTFOUND would be returned
        /// </summary>
        /// <param name="parameterId"></param>
        /// <param name="column"></param>
        /// <param name="depth"></param>
        /// <param name="exact">determines how strictly a match has to fit the request; can be eExact, eBestFit, eAllColumnFit, eBestFitEvenLowerLevel</param>
        /// <returns>true if the parameter exists in the current collection
        /// </returns>
        public Boolean Exists(String parameterId, int column, int depth, eParameterFit exact)
        {
            Boolean ReturnValue;
            TParameter element;

            ReturnValue = false;
            element = GetParameter(parameterId, column, depth, exact);

            if (element != null)
            {
                ReturnValue = ((!element.value.IsNil()));
            }

            return ReturnValue;
        }
Exemplo n.º 13
0
        /// <summary>
        /// Remove a variable; it will not exist anymore
        ///
        /// </summary>
        /// <returns>void</returns>
        public void RemoveVariable(String AParameterId, int AColumn, int ADepth, eParameterFit AExact)
        {
            TParameter element;

            element = GetParameter(AParameterId, AColumn, ADepth, AExact);

            while (element != null)
            {
                Fparameters.Remove(element);

                element = GetParameter(AParameterId, AColumn, ADepth, AExact);
            }
        }
Exemplo n.º 14
0
        /// <summary>
        /// Procedure to copy all parameters of one column from another parameter list;
        /// The column is first emptied in this parameter list, before the copying takes place.
        ///
        /// </summary>
        /// <returns>void</returns>
        public void Copy(TParameterList AOtherList, int column, int depth, eParameterFit exact, int ADestColumn)
        {
            TParameter element;

            System.Int32 Counter;

            if (ADestColumn == -1)
            {
                ADestColumn = column;
            }

            // remove all parameters in column
            Counter = 0;

            while (Counter < Fparameters.Count)
            {
                element = (TParameter)Fparameters[Counter];

                if (element.column == ADestColumn)
                {
                    Fparameters.RemoveAt(Counter);
                }
                else
                {
                    Counter = Counter + 1;
                }
            }

            // copy parameters from other list
            foreach (TParameter element2 in AOtherList.Fparameters)
            {
                if (element2.column == column)
                {
                    Add(element2.name, element2.value, ADestColumn, element2.level, element2.subreport);
                }
            }
        }
Exemplo n.º 15
0
        /// <summary>
        /// Get the value of a parameter
        /// </summary>
        /// <param name="parameterId"></param>
        /// <param name="column"></param>
        /// <param name="depth"></param>
        /// <param name="exact"></param>
        /// <returns></returns>
        protected string Get(String parameterId, int column, int depth, eParameterFit exact)
        {
            string ReturnValue;

            ReturnValue = FParameters.Get(parameterId, column, depth, exact).ToString();

            if (ReturnValue == "NOTFOUND")
            {
                ReturnValue = "";
            }

            return ReturnValue;
        }