protected virtual bool CheckForValue(string src, FilterOperatorEnum @operator, string value)
        {
            switch (@operator)
            {
            case FilterOperatorEnum.StartsWith:
                return(src.StartsWith(value, StringComparison.InvariantCultureIgnoreCase));

            case FilterOperatorEnum.Equals:
                return(src.Equals(value, StringComparison.InvariantCultureIgnoreCase));

            case FilterOperatorEnum.NotEquals:
                return(!src.Equals(value, StringComparison.InvariantCultureIgnoreCase));

            case FilterOperatorEnum.EndsWith:
                return(src.EndsWith(value, StringComparison.InvariantCultureIgnoreCase));

            case FilterOperatorEnum.Regex:
                return(Regex.IsMatch(src, value, RegexOptions.CultureInvariant | RegexOptions.IgnoreCase));

            case FilterOperatorEnum.Contains:
                return(src.Contains(value, StringComparison.InvariantCultureIgnoreCase));
            }

            return(false);
        }
Example #2
0
        ///// <summary>
        ///// Initializes a new instance of the <see cref="Filter" /> class.
        ///// </summary>
        ///// <param name="columnName">Name of the column.</param>
        ///// <param name="value">The value.</param>
        //public Filter(string columnName, FilterOperatorEnum filterOperator)
        //    : this(columnName, null, filterOperator)
        //{

        //}

        /// <summary>
        /// Initializes a new instance of the <see cref="Filter" /> class.
        /// </summary>
        /// <param name="columnName">Name of the column.</param>
        /// <param name="value">The value.</param>
        /// <param name="filterOperator">The filter operator.</param>
        public Filter(string columnName, object value, FilterOperatorEnum filterOperator)
        {
            Check.Require(string.IsNullOrEmpty(columnName) == false);
            CheckValueTypeRegardingTheOperator(value, filterOperator);

            _ColumnName = columnName;
            _Operator   = filterOperator;
            CheckValueTypeRegardingTheOperator(value, this.Operator);
            _Value = value;
        }
Example #3
0
        public void FilterConstructorTest1()
        {
            string             columnName = vTestCaseTester.ColumnNames.FieldString;
            object             value      = "(Select * from TestCaseTester)";
            FilterOperatorEnum op         = FilterOperatorEnum.InSelect;
            Filter             target     = new Filter(columnName, value, op);

            Assert.AreEqual(target.ColumnName, columnName);
            Assert.AreEqual(target.Value, value);
            Assert.AreEqual(target.Operator, op);
        }
Example #4
0
        public void OperatorTest()
        {
            string             columnName     = vTestCaseTester.ColumnNames.FieldString;
            FilterOperatorEnum filterOperator = FilterOperatorEnum.Contains;
            Filter             target         = new Filter(columnName, "Ali", filterOperator);
            FilterOperatorEnum expected       = FilterOperatorEnum.Contains;
            FilterOperatorEnum actual;

            actual = target.Operator;
            Assert.AreEqual(expected, actual);
        }
Example #5
0
        public void ColumnNameTest()
        {
            string             columnName     = vTestCaseTester.ColumnNames.FieldString;
            FilterOperatorEnum filterOperator = FilterOperatorEnum.Like;
            Filter             target         = new Filter(columnName, "Ali", filterOperator);
            string             expected       = vTestCaseTester.ColumnNames.FieldString;
            string             actual;

            actual = target.ColumnName;
            Assert.AreEqual(expected, actual);
        }
Example #6
0
        public void ValueTest()
        {
            string             columnName     = vTestCaseTester.ColumnNames.FieldString;
            FilterOperatorEnum filterOperator = FilterOperatorEnum.EqualTo;
            Guid   g        = Guid.NewGuid();
            Filter target   = new Filter(columnName, g, filterOperator);
            object expected = g;
            object actual;

            actual = target.Value;
            Assert.AreEqual(expected, actual);
        }
Example #7
0
        public void GetFilterStringTest()
        {
            string               columnName     = vTestCaseTester.ColumnNames.FieldString;
            FilterOperatorEnum   filterOperator = FilterOperatorEnum.Like;
            Filter               target         = new Filter(columnName, "C1", filterOperator);
            ICollection <object> values         = new List <object>();
            string               expected       = "[" + vTestCaseTester.ColumnNames.FieldString + "] like " + Filter.ParameterPrefix + "0";
            string               actual;

            actual = target.GetFilterString(values);
            Assert.AreEqual(expected, actual);
        }
Example #8
0
        /// <summary>
        /// Checks the value type regarding the operator.
        /// </summary>
        /// <param name="value">The value.</param>
        /// <param name="filterOperator">The filter operator.</param>
        private static void CheckValueTypeRegardingTheOperator(object value, FilterOperatorEnum filterOperator)
        {
            switch (filterOperator)
            {
            case FilterOperatorEnum.NoFilter:
                break;

            case FilterOperatorEnum.Contains:
                Check.Require(value is string);
                break;

            case FilterOperatorEnum.DoesNotContain:
                Check.Require(value is string);
                break;

            case FilterOperatorEnum.StartsWith:
                Check.Require(value is string);
                break;

            case FilterOperatorEnum.EndsWith:
                Check.Require(value is string);
                break;

            case FilterOperatorEnum.EqualTo:
                Check.Require(value != null);
                break;

            case FilterOperatorEnum.NotEqualTo:
                Check.Require(value != null);
                break;

            case FilterOperatorEnum.GreaterThan:
                Check.Require(value != null);
                break;

            case FilterOperatorEnum.LessThan:
                Check.Require(value != null);
                break;

            case FilterOperatorEnum.GreaterThanOrEqualTo:
                Check.Require(value != null);
                break;

            case FilterOperatorEnum.LessThanOrEqualTo:
                Check.Require(value != null);
                break;

            case FilterOperatorEnum.IsEmpty:
                Check.Require(value == null);
                break;

            case FilterOperatorEnum.NotIsEmpty:
                Check.Require(value == null);
                break;

            case FilterOperatorEnum.IsNull:
                Check.Require(value == null);
                break;

            case FilterOperatorEnum.NotIsNull:
                Check.Require(value == null);
                break;

            case FilterOperatorEnum.Like:
                Check.Require(value is string);
                break;

            case FilterOperatorEnum.In:
                Check.Require(value is string || value is IEnumerable);
                break;

            case FilterOperatorEnum.InSelect:
                Check.Require(value is string);
                break;

            default:
                throw new NotImplementedException();
            }
        }
Example #9
0
        bool _FilterOperatorSingleRow;  // false for Top/Bottom N and Percent; otherwise true
        internal Filter(ReportDefn r, ReportLink p, XmlNode xNode)
            : base(r, p)
        {
            _FilterExpression = null;
            _FilterOperator   = FilterOperatorEnum.Unknown;
            _FilterValues     = null;

            // Loop thru all the child nodes
            foreach (XmlNode xNodeLoop in xNode.ChildNodes)
            {
                if (xNodeLoop.NodeType != XmlNodeType.Element)
                {
                    continue;
                }
                switch (xNodeLoop.Name)
                {
                case "FilterExpression":
                    _FilterExpression = new Expression(r, this, xNodeLoop, ExpressionType.Variant);
                    break;

                case "Operator":
                    _FilterOperator = Rdl.FilterOperator.GetStyle(xNodeLoop.InnerText);
                    if (_FilterOperator == FilterOperatorEnum.Unknown)
                    {
                        OwnerReport.rl.LogError(8, "Unknown Filter operator '" + xNodeLoop.InnerText + "'.");
                    }
                    break;

                case "FilterValues":
                    _FilterValues = new FilterValues(r, this, xNodeLoop);
                    break;

                default:
                    // don't know this element - log it
                    OwnerReport.rl.LogError(4, "Unknown Filter element '" + xNodeLoop.Name + "' ignored.");
                    break;
                }
            }
            if (_FilterExpression == null)
            {
                OwnerReport.rl.LogError(8, "Filter requires the FilterExpression element.");
            }
            if (_FilterValues == null)
            {
                OwnerReport.rl.LogError(8, "Filter requires the FilterValues element.");
                return;         // some of the filter operator checks require values
            }
            _FilterOperatorSingleRow = true;
            switch (_FilterOperator)
            {
            case FilterOperatorEnum.Like:
            case FilterOperatorEnum.Equal:
            case FilterOperatorEnum.NotEqual:
            case FilterOperatorEnum.GreaterThan:
            case FilterOperatorEnum.GreaterThanOrEqual:
            case FilterOperatorEnum.LessThan:
            case FilterOperatorEnum.LessThanOrEqual:
                if (_FilterValues.Items.Count != 1)
                {
                    OwnerReport.rl.LogError(8, "Filter Operator requires exactly 1 FilterValue.");
                }
                break;

            case FilterOperatorEnum.TopN:
            case FilterOperatorEnum.BottomN:
            case FilterOperatorEnum.TopPercent:
            case FilterOperatorEnum.BottomPercent:
                _FilterOperatorSingleRow = false;
                if (_FilterValues.Items.Count != 1)
                {
                    OwnerReport.rl.LogError(8, "Filter Operator requires exactly 1 FilterValue.");
                }
                break;

            case FilterOperatorEnum.In:
                break;

            case FilterOperatorEnum.Between:
                if (_FilterValues.Items.Count != 2)
                {
                    OwnerReport.rl.LogError(8, "Filter Operator Between requires exactly 2 FilterValues.");
                }
                break;

            default:
                OwnerReport.rl.LogError(8, "Valid Filter operator must be specified.");
                break;
            }
        }
Example #10
0
        FilterValues _FilterValues; // The values to compare to the FilterExpression.

        #endregion Fields

        #region Constructors

        internal Filter(ReportDefn r, ReportLink p, XmlNode xNode)
            : base(r, p)
        {
            _FilterExpression=null;
            _FilterOperator=FilterOperatorEnum.Unknown;
            _FilterValues=null;

            // Loop thru all the child nodes
            foreach(XmlNode xNodeLoop in xNode.ChildNodes)
            {
                if (xNodeLoop.NodeType != XmlNodeType.Element)
                    continue;
                switch (xNodeLoop.Name)
                {
                    case "FilterExpression":
                        _FilterExpression = new Expression(r, this, xNodeLoop, ExpressionType.Variant);
                        break;
                    case "Operator":
                        _FilterOperator = RDL.FilterOperator.GetStyle(xNodeLoop.InnerText);
                        if (_FilterOperator == FilterOperatorEnum.Unknown)
                            OwnerReport.rl.LogError(8, "Unknown Filter operator '" + xNodeLoop.InnerText + "'.");
                        break;
                    case "FilterValues":
                        _FilterValues = new FilterValues(r, this, xNodeLoop);
                        break;
                    default:
                        // don't know this element - log it
                        OwnerReport.rl.LogError(4, "Unknown Filter element '" + xNodeLoop.Name + "' ignored.");
                        break;
                }
            }
            if (_FilterExpression == null)
                OwnerReport.rl.LogError(8, "Filter requires the FilterExpression element.");
            if (_FilterValues == null)
            {
                OwnerReport.rl.LogError(8, "Filter requires the FilterValues element.");
                return;		// some of the filter operator checks require values
            }
            _FilterOperatorSingleRow = true;
            switch (_FilterOperator)
            {
                case FilterOperatorEnum.Like:
                case FilterOperatorEnum.Equal:
                case FilterOperatorEnum.NotEqual:
                case FilterOperatorEnum.GreaterThan:
                case FilterOperatorEnum.GreaterThanOrEqual:
                case FilterOperatorEnum.LessThan:
                case FilterOperatorEnum.LessThanOrEqual:
                    if (_FilterValues.Items.Count != 1)
                        OwnerReport.rl.LogError(8, "Filter Operator requires exactly 1 FilterValue.");
                    break;
                case FilterOperatorEnum.TopN:
                case FilterOperatorEnum.BottomN:
                case FilterOperatorEnum.TopPercent:
                case FilterOperatorEnum.BottomPercent:
                    _FilterOperatorSingleRow = false;
                    if (_FilterValues.Items.Count != 1)
                        OwnerReport.rl.LogError(8, "Filter Operator requires exactly 1 FilterValue.");
                    break;
                case FilterOperatorEnum.In:
                    break;
                case FilterOperatorEnum.Between:
                    if (_FilterValues.Items.Count != 2)
                        OwnerReport.rl.LogError(8, "Filter Operator Between requires exactly 2 FilterValues.");
                    break;
                default:
                    OwnerReport.rl.LogError(8, "Valid Filter operator must be specified.");
                    break;
            }
        }
        protected virtual bool CheckForValue(string src, FilterOperatorEnum @operator, string value)
        {
            switch (@operator)
            {
                case FilterOperatorEnum.StartsWith:
                    return src.StartsWith(value, StringComparison.InvariantCultureIgnoreCase);
                case FilterOperatorEnum.Equals:
                    return src.Equals(value, StringComparison.InvariantCultureIgnoreCase);
                case FilterOperatorEnum.NotEquals:
                    return !src.Equals(value, StringComparison.InvariantCultureIgnoreCase);
                case FilterOperatorEnum.EndsWith:
                    return src.EndsWith(value, StringComparison.InvariantCultureIgnoreCase);
                case FilterOperatorEnum.Regex:
                    return Regex.IsMatch(src, value, RegexOptions.CultureInvariant | RegexOptions.IgnoreCase);
                case FilterOperatorEnum.Contains:
                    return src.Contains(value, StringComparison.InvariantCultureIgnoreCase);
            }

            return false;
        }
Example #12
0
        /// <summary>
        /// Turns a guid array into a dynamic filter expression that openaccess can use
        /// </summary>
        public static string GenerateFilterExpression(this Guid[] elements, string fieldname, FilterOperatorEnum decision, bool wrapInBraces = true)
        {
            string filter = String.Empty;

            foreach (var c in elements)
            {
                filter += "{0}.Contains(\"{{{1}}}\") {2} ".Arrange(fieldname, c, decision.ToString());
            }

            if (String.IsNullOrEmpty(filter))
            {
                return(filter);
            }
            else
            {
                //Strip the end operator
                filter = filter.Substring(0, filter.Length - (decision.ToString().Length + 2));
                return((wrapInBraces) ? " (" + filter + ") " : filter);
            }
        }
Example #13
0
 // This is only override method to simplify programming
 /// <summary>
 /// Adds a new filter to filter expression
 /// </summary>
 /// <param name="columnName">column Name</param>
 /// <param name="value">value</param>
 public void AddFilter(string columnName, object value, FilterOperatorEnum filterOperator)
 {
     FiltersList.Add(new Filter(columnName, value, filterOperator));
 }
Example #14
0
 // This is only override method to simplify programming
 /// <summary>
 /// Adds a new filter to filter expression
 /// </summary>
 /// <param name="columnName">column Name</param>
 /// <param name="value">value</param>
 /// <param name="filterOperator">filter operator</param>
 public FilterExpression(string columnName, object value, FilterOperatorEnum filterOperator)
 {
     this.AddFilter(columnName, value, filterOperator);
 }