예제 #1
0
        internal static string ToSerializedValue(this FilterOperatorType value)
        {
            switch (value)
            {
            case FilterOperatorType.Equals:
                return("Equals");

            case FilterOperatorType.IsNull:
                return("IsNull");

            case FilterOperatorType.GreaterThan:
                return("GreaterThan");

            case FilterOperatorType.LessThan:
                return("LessThan");

            case FilterOperatorType.GreaterThanOrEqual:
                return("GreaterThanOrEqual");

            case FilterOperatorType.LessThanOrEqual:
                return("LessThanOrEqual");

            case FilterOperatorType.Like:
                return("Like");

            case FilterOperatorType.Not:
                return("Not");

            case FilterOperatorType.Between:
                return("Between");

            case FilterOperatorType.InList:
                return("InList");

            case FilterOperatorType.And:
                return("And");

            case FilterOperatorType.Or:
                return("Or");

            case FilterOperatorType.Cast:
                return("Cast");

            case FilterOperatorType.InView:
                return("InView");

            case FilterOperatorType.OfType:
                return("OfType");

            case FilterOperatorType.RelatedTo:
                return("RelatedTo");

            case FilterOperatorType.BitwiseAnd:
                return("BitwiseAnd");

            case FilterOperatorType.BitwiseOr:
                return("BitwiseOr");
            }
            return(null);
        }
예제 #2
0
 internal QueryFilterOperator(string token, FilterOperatorType type, IQueryEngineImplementation engine)
 {
     this.token             = token;
     this.type              = type;
     handlers               = new Dictionary <Type, Dictionary <Type, IFilterHandlerDelegate> >();
     m_EngineImplementation = engine;
 }
예제 #3
0
 public FilterOperator(FilterOperatorType FilterOperatorType, String Name, String Value, Shape Shape)
 {
     this._FilterOperatorType = FilterOperatorType;
     this._Name  = Name;
     this._Value = Value;
     this._Shape = Shape;
 }
예제 #4
0
 public FilterOperator(FilterOperatorType FilterOperatorType, String Name, String Value, String MinDistance, String MaxDistance)
 {
     this._FilterOperatorType = FilterOperatorType;
     this._Name        = Name;
     this._Value       = Value;
     this._MinDistance = MinDistance;
     this._MaxDistance = MaxDistance;
 }
예제 #5
0
 /// <summary>
 /// Является ли тип оператора фильтра сравнением двух заданных полей
 /// </summary>
 /// <param name="filterOperatorType"></param>
 public static bool IsFieldsComparison(this FilterOperatorType filterOperatorType)
 {
     return(filterOperatorType == FilterOperatorType.EqualsField ||
            filterOperatorType == FilterOperatorType.NotEqualsField ||
            filterOperatorType == FilterOperatorType.GreaterField ||
            filterOperatorType == FilterOperatorType.LessField ||
            filterOperatorType == FilterOperatorType.GreaterOrEqualsField ||
            filterOperatorType == FilterOperatorType.LessOrEqualsField);
 }
        /// <summary>Create from XML.</summary>
        public override void ReadXml(XmlReader reader)
        {
            // get the data source table and field
            string[] ds = reader.GetAttribute("field").Split(new char[] { '.' }, 2, StringSplitOptions.RemoveEmptyEntries);

            // set the operand
            this._operand = reader.GetAttribute("operand");

            // set the operator
            string             op   = reader.GetAttribute("operator");
            FilterOperatorType type = (FilterOperatorType)Enum.Parse(typeof(FilterOperatorType), op);

            this._op = FilterOperator.GetOperator(type);

            // create a new attribute & parent element entity
            QueryEngine.Attribute attr   = new QueryEngine.Attribute(ds[1], ds[1]);
            QueryEngine.Entity    parent = new QueryEngine.Entity(ds[0], ds[0]);
            attr.Parent = parent;
            this._attr  = attr;
        }
예제 #7
0
        /// <summary>
        /// Convert to stack type
        /// </summary>
        /// <param name="type"></param>
        /// <returns></returns>
        public static UaFilterOperator ToStackType(this FilterOperatorType type)
        {
            switch (type)
            {
            case FilterOperatorType.Equals:
                return(UaFilterOperator.Equals);

            case FilterOperatorType.IsNull:
                return(UaFilterOperator.IsNull);

            case FilterOperatorType.GreaterThan:
                return(UaFilterOperator.GreaterThan);

            case FilterOperatorType.LessThan:
                return(UaFilterOperator.LessThan);

            case FilterOperatorType.GreaterThanOrEqual:
                return(UaFilterOperator.GreaterThanOrEqual);

            case FilterOperatorType.LessThanOrEqual:
                return(UaFilterOperator.LessThanOrEqual);

            case FilterOperatorType.Like:
                return(UaFilterOperator.Like);

            case FilterOperatorType.Not:
                return(UaFilterOperator.Not);

            case FilterOperatorType.Between:
                return(UaFilterOperator.Between);

            case FilterOperatorType.InList:
                return(UaFilterOperator.InList);

            case FilterOperatorType.And:
                return(UaFilterOperator.And);

            case FilterOperatorType.Or:
                return(UaFilterOperator.Or);

            case FilterOperatorType.Cast:
                return(UaFilterOperator.Cast);

            case FilterOperatorType.InView:
                return(UaFilterOperator.InView);

            case FilterOperatorType.OfType:
                return(UaFilterOperator.OfType);

            case FilterOperatorType.RelatedTo:
                return(UaFilterOperator.RelatedTo);

            case FilterOperatorType.BitwiseAnd:
                return(UaFilterOperator.BitwiseAnd);

            case FilterOperatorType.BitwiseOr:
                return(UaFilterOperator.BitwiseOr);

            default:
                throw new NotSupportedException($"{type} not supported");
            }
        }
 /// <summary>Constructor</summary>
 private FilterOperator(FilterOperatorType type, string displayText)
 {
     this._value = type;
     this._text  = displayText;
 }
 /// <summary>Constructor</summary>
 private FilterOperator(FilterOperatorType type)
 {
     this._value = type;
 }
 /// <summary>Gets the instance operator by type.</summary>
 public static FilterOperator GetOperator(FilterOperatorType type)
 {
     return(FilterOperator._opList[type]);
 }
 /// <summary>Constructor</summary>
 public FilterExpression(Attribute a, FilterOperatorType type, string rhs) : this(a, FilterOperator.GetOperator(type), rhs)
 {
 }
예제 #12
0
        public static Expression ConcatExpressionsWithOperator(Expression left, Expression right, FilterOperatorType expressionOperator)
        {
            switch (expressionOperator)
            {
            case FilterOperatorType.Equal:
                return(Expression.Equal(left, right));

            case FilterOperatorType.NotEqual:
                return(Expression.NotEqual(left, right));

            case FilterOperatorType.LessThan:
                return(Expression.LessThan(left, right));

            case FilterOperatorType.GreaterThan:
                return(Expression.GreaterThan(left, right));

            case FilterOperatorType.LessThanOrEqual:
                return(Expression.LessThanOrEqual(left, right));

            case FilterOperatorType.GreaterThanOrEqual:
                return(Expression.GreaterThanOrEqual(left, right));

            case FilterOperatorType.In:
            {
                MethodInfo method = right.Type.GetMethod("Contains", new[] { typeof(int) });
                return(Expression.Call(right, method, left));
            }

            case FilterOperatorType.Contains:
            {
                MethodInfo method = typeof(string).GetMethod("Contains", new[] { typeof(string) });
                return(Expression.Call(left, method, right));
            }

            case FilterOperatorType.StartsWith:
            {
                MethodInfo method = typeof(string).GetMethod("StartsWith", new[] { typeof(string) });
                return(Expression.Call(left, method, right));
            }

            case FilterOperatorType.EndsWith:
            {
                MethodInfo method = typeof(string).GetMethod("EndsWith", new[] { typeof(string) });
                return(Expression.Call(left, method, right));
            }

            default:
                return(Expression.Equal(left, right));
            }
        }
예제 #13
0
 public void SetOperatorType(FilterOperatorType FilterOperatorType)
 {
     this._FilterOperatorType = FilterOperatorType;
 }