예제 #1
0
        public override CriteriaOperator GetCriteria()
        {
            BetweenOperator  BetweenFechas = new BetweenOperator("FechaEntrada", FechaDesde, FechaHasta);
            CriteriaOperator criteria      = CriteriaOperator.And(BetweenFechas);

            return(criteria);
        }
예제 #2
0
        public ActionResult Index()
        {
            #region --- Criteria Operator (parse), Group Operator, Binary Operator, Between Operator ---
            //1. binary with condition
            BinaryOperator          filter       = new BinaryOperator("Age", "23");
            XPCollection <Customer> dataCustomer = new XPCollection <Customer>(session, filter);

            BinaryOperator          filter1       = new BinaryOperator();
            XPCollection <Customer> dataCustomer1 = new XPCollection <Customer>(session, filter1);

            //2. Criteria Operator, Group Operator
            CriteriaOperator        filter2       = CriteriaOperator.Parse("Age < 20");
            CriteriaOperator        filter3       = CriteriaOperator.Parse("Age > 30");
            XPCollection <Customer> dataCustomer2 = new XPCollection <Customer>(session, GroupOperator.Or(filter2, filter3));



            CriteriaOperator        filter4       = CriteriaOperator.Parse("Age > 20");
            CriteriaOperator        filter5       = CriteriaOperator.Parse("Age < 30");
            XPCollection <Customer> dataCustomer3 = new XPCollection <Customer>(session, GroupOperator.And(filter4, filter5));

            //3. Between Operator
            CriteriaOperator        filter6       = new BetweenOperator("Age", 20, 30);
            XPCollection <Customer> dataCustomer4 = new XPCollection <Customer>(session, filter6);

            //4. Contain Operator ???
            //ContainsOperator filter7 = new ContainsOperator("Name","on");
            //XPCollection<Customer> dataCustomer5 = new XPCollection<Customer>(session, filter7);

            //5. In Operator
            //xpCollection1.Filter = new InOperator("Name", new string[] {"John", "Mike", "Nick"});

            #endregion
            return(View());
        }
    protected void btnOK_Click(object sender, EventArgs e)
    {
        if (int.Parse(cbLoaiphieu.Value.ToString()) == 0 && int.Parse(cbLoaibaocao.Value.ToString()) == 0) //nhập tổng hợp
        {
            showGrid(true, false, false, false);
        }
        if (int.Parse(cbLoaiphieu.Value.ToString()) == 1 && int.Parse(cbLoaibaocao.Value.ToString()) == 0)//bán tổng hợp
        {
            showGrid(false, true, false, false);
        }


        if (RadioButtonList1.SelectedIndex != 0 && tbTungay.Text != "" && tbDenngay.Text != "")
        {
            DateTime tungay  = DateTime.ParseExact(DateTime.ParseExact(tbTungay.Text, "dd/MM/yyyy", CultureInfo.InvariantCulture).ToString("yyyy/MM/dd"), "yyyy/MM/dd", CultureInfo.InvariantCulture);
            DateTime denngay = DateTime.ParseExact(DateTime.ParseExact(tbDenngay.Text, "dd/MM/yyyy", CultureInfo.InvariantCulture).ToString("yyyy/MM/dd"), "yyyy/MM/dd", CultureInfo.InvariantCulture);
            string   filter  = new BetweenOperator("ngaylapphieu", tungay, denngay).ToString();
            if (gvNhaptonghop.Visible)
            {
                gvNhaptonghop.FilterExpression = filter;
            }
            else
            {
                gvBantonghop.FilterExpression = filter;
            }
        }
    }
예제 #4
0
        public CriteriaOperator Visit(BetweenOperator theOperator)
        {
            UpdatePropertyName(theOperator.TestExpression);

            CriteriaOperator operandValue;

            if (ToValue(theOperator.BeginExpression, out operandValue))
            {
                theOperator.BeginExpression = operandValue;
            }
            else
            {
                theOperator.BeginExpression.Accept(this);
            }

            if (ToValue(theOperator.EndExpression, out operandValue))
            {
                theOperator.EndExpression = operandValue;
            }
            else
            {
                theOperator.EndExpression.Accept(this);
            }

            return(theOperator);
        }
예제 #5
0
        public override CriteriaOperator GetCriteria()
        {
            GenerateData();
            //CriteriaOperator criteria = new BinaryOperator("MyPropertyName", "MyValue");
            BetweenOperator  BetweenFechas = new BetweenOperator("CompraRepuestos.FechaEntrada", FechaDesde, FechaHasta);
            CriteriaOperator criteria      = CriteriaOperator.And(BetweenFechas);

            return(criteria);
        }
예제 #6
0
 public override CriteriaOperator Visit(BetweenOperator theOperator)
 {
     theOperator = (BetweenOperator)base.Visit(theOperator);
     if (IsNull(theOperator.BeginExpression) || IsNull(theOperator.EndExpression) ||
         IsNull(theOperator.TestExpression))
     {
         return(null);
     }
     return(theOperator);
 }
 protected void gvNhaptonghop_PreRender(object sender, EventArgs e)
 {
     if (RadioButtonList1.SelectedIndex != 0 && tbTungay.Text != "" && tbDenngay.Text != "")
     {
         DateTime tungay  = DateTime.ParseExact(DateTime.ParseExact(tbTungay.Text, "dd/MM/yyyy", CultureInfo.InvariantCulture).ToString("yyyy/MM/dd"), "yyyy/MM/dd", CultureInfo.InvariantCulture);
         DateTime denngay = DateTime.ParseExact(DateTime.ParseExact(tbDenngay.Text, "dd/MM/yyyy", CultureInfo.InvariantCulture).ToString("yyyy/MM/dd"), "yyyy/MM/dd", CultureInfo.InvariantCulture);
         string   filter  = new BetweenOperator("ngaylapphieu", tungay, denngay).ToString();
         gvNhaptonghop.FilterExpression = filter;
     }
 }
 object ICriteriaVisitor.Visit(BetweenOperator theOperator){
     Process(theOperator);
     var leftOperandValue = GetCustomFunctionOperandValue(theOperator.BeginExpression);
     if (!ReferenceEquals(leftOperandValue,null))
         theOperator.BeginExpression = leftOperandValue;
     var rightOperandValue = GetCustomFunctionOperandValue(theOperator.EndExpression);
     if (!ReferenceEquals(rightOperandValue,null))
         theOperator.EndExpression = rightOperandValue;
     return theOperator;
 }
        protected override object Visit(BetweenOperator theOperator)
        {
            string endString = theOperator.EndExpression.ToString();

            if (endString.EndsWith("#") && endString.StartsWith("#"))
            {
                endString = endString.TrimStart('#').TrimEnd('#');
                theOperator.EndExpression = new ConstantValue(DateTime.Parse(endString + " 23:59:59"));
            }
            return(base.Visit(theOperator));
        }
    public virtual CriteriaOperator Visit(BetweenOperator theOperator)
    {
        CriteriaOperator test  = theOperator.TestExpression.Accept <CriteriaOperator>(this);
        CriteriaOperator begin = theOperator.BeginExpression.Accept <CriteriaOperator>(this);
        CriteriaOperator end   = theOperator.EndExpression.Accept <CriteriaOperator>(this);

        if (object.ReferenceEquals(test, null) || object.ReferenceEquals(begin, null) || object.ReferenceEquals(end, null))
        {
            return(null);
        }
        return(new BetweenOperator(test, begin, end));
    }
        protected override void RaiseFilterPopupDate(DateFilterPopup filterPopup, List <FilterDateElement> list)
        {
            CriteriaOperator filter = new BinaryOperator(filterPopup.Column.FieldName, DateTime.Today, BinaryOperatorType.Greater);

            list.Add(new FilterDateElement(Localizer.Active.GetLocalizedString(StringId.FilterClauseGreater)
                                           , "", filter));
            filter = new BinaryOperator(filterPopup.Column.FieldName, DateTime.Today, BinaryOperatorType.Less);
            list.Add(new FilterDateElement(Localizer.Active.GetLocalizedString(StringId.FilterClauseLess)
                                           , "", filter));
            filter = new BetweenOperator(filterPopup.Column.FieldName, DateTime.Today, DateTime.Today);
            list.Add(new FilterDateElement(Localizer.Active.GetLocalizedString(StringId.FilterClauseBetween), "", filter));
            base.RaiseFilterPopupDate(filterPopup, list);
        }
        protected virtual CriteriaOperator VisitBetween(BetweenOperator theOperator)
        {
            CriteriaOperator beginExpression = this.AcceptOperator(theOperator.BeginExpression);
            CriteriaOperator endExpression   = this.AcceptOperator(theOperator.EndExpression);
            CriteriaOperator testExpression  = this.AcceptOperator(theOperator.TestExpression);

            if (object.ReferenceEquals(theOperator.BeginExpression, beginExpression) &&
                object.ReferenceEquals(theOperator.EndExpression, endExpression) &&
                object.ReferenceEquals(theOperator.TestExpression, testExpression))
            {
                return(theOperator);
            }
            return(new BetweenOperator(testExpression, beginExpression, endExpression));
        }
예제 #13
0
        public void ShouldBeValueBetweenTwoValues([Range(0, 5)] int value)
        {
            // Given
            var filter = new BetweenOperator(EntityType, IntField, 1, 4);
            var entity = new FilterTestEntity {
                IntField = value
            };

            // When
            var result = filter.IsSatisfiedBy(entity);

            // Then
            Assert.AreEqual(value >= 1 && value <= 4, result);
        }
예제 #14
0
        public void ShouldReturnTrueWhenRangeIsNotSpecify([Range(0, 5)] int value)
        {
            // Given
            var filter = new BetweenOperator(EntityType, IntField, null, null);
            var entity = new FilterTestEntity {
                IntField = value
            };

            // When
            var result = filter.IsSatisfiedBy(entity);

            // Then
            Assert.IsTrue(result);
        }
예제 #15
0
        public void ShouldBeValueBetweenInfinityAndEndValue([Range(0, 5)] int value)
        {
            // Given
            var filter = new BetweenOperator(EntityType, IntField, null, 3);
            var entity = new FilterTestEntity {
                IntField = value
            };

            // When
            var result = filter.IsSatisfiedBy(entity);

            // Then
            Assert.AreEqual(value <= 3, result);
        }
예제 #16
0
        public override CriteriaOperator GetCriteria()
        {
            //CriteriaOperator criteria = new BinaryOperator("MyPropertyName", "MyValue");

            CriteriaOperator criteria = new
                                        BinaryOperator("Automovil", Automovil);

            BetweenOperator  BetweenFechas = new BetweenOperator("FechaEntrada", FechaDesde, FechaHasta);
            CriteriaOperator criteria2     = CriteriaOperator.And(BetweenFechas);

            CriteriaOperator criteria3 = null;

            criteria3 = CriteriaOperator.And(criteria, criteria2);
            return(criteria3);
        }
        private static Condition Between(BetweenOperator betweenOperator)
        {
            OperandProperty opProperty = betweenOperator.TestExpression as OperandProperty;
            OperandValue    opValue    = betweenOperator.BeginExpression as OperandValue;
            OperandValue    opValue2   = betweenOperator.EndExpression as OperandValue;

            var listType = typeof(List <>).MakeGenericType(opValue.Value.GetType());
            var list     = Activator.CreateInstance(listType, 2);
            var method   = listType.GetMethod("Add");

            method.Invoke(list, new object[] { opValue.Value });
            method.Invoke(list, new object[] { opValue2.Value });

            return(new Condition(opProperty.PropertyName, Operator.IsBetween, list));
        }
    protected void gvBaocao_PreRender(object sender, EventArgs e)
    {
        DateTime tungay  = DateTime.ParseExact(DateTime.ParseExact(deTungay.Date.ToShortDateString(), "dd/MM/yyyy", CultureInfo.InvariantCulture).ToString("yyyy/MM/dd"), "yyyy/MM/dd", CultureInfo.InvariantCulture);
        DateTime denngay = DateTime.ParseExact(DateTime.ParseExact(deDenngay.Date.ToShortDateString(), "dd/MM/yyyy", CultureInfo.InvariantCulture).ToString("yyyy/MM/dd"), "yyyy/MM/dd", CultureInfo.InvariantCulture);
        string   filter  = new BetweenOperator("ngaylapphieu", tungay, denngay).ToString();

        gvBaocao.FilterExpression = filter;
        //gvBaocao.TotalSummary.Add(SummaryItemType.Sum, "tienlai").DisplayFormat = "c";
        //gvBaocao.GroupSummary.Add(SummaryItemType.Sum, "tienlai").ShowInGroupFooterColumn = "tienlai";
        //ASPxSummaryItem summaryItem = gvBaocao.TotalSummary["tienlai"];
        //if (summaryItem != null)
        //{
        //    txtTong.Text = gvBaocao.GetTotalSummaryValue(summaryItem).ToString();
        //}
    }
예제 #19
0
        object ICriteriaVisitor <object> .Visit(BetweenOperator theOperator)
        {
            Process(theOperator);
            var leftOperandValue = GetCustomFunctionOperandValue(theOperator.BeginExpression);

            if (!ReferenceEquals(leftOperandValue, null))
            {
                theOperator.BeginExpression = leftOperandValue;
            }
            var rightOperandValue = GetCustomFunctionOperandValue(theOperator.EndExpression);

            if (!ReferenceEquals(rightOperandValue, null))
            {
                theOperator.EndExpression = rightOperandValue;
            }
            return(theOperator);
        }
예제 #20
0
 object ICriteriaVisitor <object> .Visit(BetweenOperator theOperator)
 {
     Process(theOperator);
     if (!ReferenceEquals(theOperator.BeginExpression, null))
     {
         theOperator.BeginExpression.Accept(this);
     }
     if (!ReferenceEquals(theOperator.EndExpression, null))
     {
         theOperator.EndExpression.Accept(this);
     }
     if (!ReferenceEquals(theOperator.TestExpression, null))
     {
         theOperator.TestExpression.Accept(this);
     }
     return(null);
 }
예제 #21
0
        public object Visit(BetweenOperator theOperator) {
            UpdatePropertyName(theOperator.TestExpression);

            CriteriaOperator operandValue;

            if (ToValue(theOperator.BeginExpression, out operandValue))
                theOperator.BeginExpression = operandValue;
            else
                theOperator.BeginExpression.Accept(this);

            if (ToValue(theOperator.EndExpression, out operandValue))
                theOperator.EndExpression = operandValue;
            else
                theOperator.EndExpression.Accept(this);

            return theOperator;
        }
    protected void btSub_Click(object sender, EventArgs e)
    {
        DateTime tungay  = DateTime.ParseExact(DateTime.ParseExact(deTungay.Date.ToShortDateString(), "dd/MM/yyyy", CultureInfo.InvariantCulture).ToString("yyyy/MM/dd"), "yyyy/MM/dd", CultureInfo.InvariantCulture);
        DateTime denngay = DateTime.ParseExact(DateTime.ParseExact(deDenngay.Date.ToShortDateString(), "dd/MM/yyyy", CultureInfo.InvariantCulture).ToString("yyyy/MM/dd"), "yyyy/MM/dd", CultureInfo.InvariantCulture);
        string   filter  = new BetweenOperator("ngaylapphieu", tungay, denngay).ToString();

        gvBaocao.FilterExpression = filter;
        //string tungay, denngay;
        //tungay = deTungay.Date.ToShortDateString();
        //denngay = deDenngay.Date.ToShortDateString();
        //SqlDataSource1.SelectParameters.Add("tungay", tungay);
        //SqlDataSource1.SelectParameters.Add("denngay", denngay);
        //gvBaocao.DataSource = null;
        //gvBaocao.DataSourceID = null;
        //gvBaocao.DataSource = SqlDataSource1;

        //gvBaocao.DataBind();
        //DataSet ds = new DataSet();
        //using (SqlConnection con = new SqlConnection(ketnoi.kn))
        //{

        //    SqlCommand cmd = new SqlCommand("report_doanhthu", con);
        //    cmd.CommandType = CommandType.StoredProcedure;
        //    cmd.Parameters.AddWithValue("@tungay", tungay);
        //    cmd.Parameters.AddWithValue("@denngay", denngay);
        //    try
        //    {
        //        con.Open();
        //        SqlDataAdapter sa = new SqlDataAdapter(cmd);
        //        sa.Fill(ds);

        //    }
        //    catch (Exception)
        //    {

        //        //throw ex;

        //    }
        //}
        //gvBaocao.DataSource = ds.Tables[0];
        //gvBaocao.DataBind();
    }
예제 #23
0
        private void ShowSearchForm_Execute(object sender, PopupWindowShowActionExecuteEventArgs e)
        {
            List <CriteriaOperator> Criterias = new List <CriteriaOperator>();

            var item           = this.View.ObjectTypeInfo;
            var SearchTypeInfo = XafTypesInfo.Instance.FindTypeInfo(searchAttribute.SearchFormType);
            var members        = item.Members.Where(m => m.FindAttribute <SearchAttribute>() != null);

            foreach (var member in members)
            {
                var SearchParameters = member.FindAttribute <SearchAttribute>();
                if (SearchParameters.IsRange)
                {
                    var             FromValue       = SearchTypeInfo.FindMember($"From{member.Name}").GetValue(SearchFormObject);
                    var             ToValue         = SearchTypeInfo.FindMember($"To{member.Name}").GetValue(SearchFormObject);
                    BetweenOperator betweenOperator = new BetweenOperator(member.Name, FromValue, ToValue);
                    Criterias.Add(betweenOperator);
                }
                else
                {
                    var            SingleValue    = SearchTypeInfo.FindMember($"{member.Name}").GetValue(SearchFormObject);
                    BinaryOperator binaryOperator = new BinaryOperator(member.Name, SingleValue);
                    Criterias.Add(binaryOperator);
                }
            }
            var SearchCriteria = CriteriaOperator.Or(Criterias);

            ((ListView)View).CollectionSource.Criteria["SearchForm"] = SearchCriteria;
            SearchFormBase searchFormBase = (SearchFormBase)SearchFormObject;

            if (searchFormBase.SaveParameters)
            {
                var os      = this.Application.CreateObjectSpace();
                var Storage = os.CreateObject <SearchFormStorage>();
                Storage.UserName = SecuritySystem.CurrentUserName;
                Storage.ViewId   = this.View.Id;
                Storage.Criteria = SearchCriteria.ToString();
                os.CommitChanges();
            }
        }
예제 #24
0
 object ICriteriaVisitor.Visit(BetweenOperator theOperator)
 {
     return(string.Format("{0} is between {1} and {2}", theOperator.TestExpression.Accept(this).ToString(), theOperator.BeginExpression.Accept(this).ToString(), theOperator.EndExpression.Accept(this).ToString()));
 }
예제 #25
0
        public static IList <WeeklyInventory> GetThisWeeksInventroy(DateTime StartDate, DateTime EndDate, IObjectSpace space)
        {
            IList <WeeklyInventory> weeklyInventory = new List <WeeklyInventory>();

            // IObjectSpace space = AppHelper.Application.CreateObjectSpace();
            //get the list of locations
            IList <Location> locationList = space.GetObjects <Location>();
            bool             groupCheck   = false;

            foreach (Location loc in locationList)
            {
                //filter the measures by LDC and date
                if (loc.Name.Contains("IPS"))
                {
                    Console.Write('s');
                }
                WeeklyInventory WeekI = new WeeklyInventory();
                WeekI.Location = loc;

                XPCollection <Move> moves = loc.MoveFrom;

                // BetweenOperator betOp = new BetweenOperator("MoveDate", DateTime.Now.AddDays(-97), DateTime.Now.AddDays(-90));

                BetweenOperator betOp = new BetweenOperator("MoveDate", StartDate, EndDate);
                NotOperator     notOP = new NotOperator(new NullOperator("Appliance"));

                GroupOperator grpOP = new GroupOperator();
                grpOP.OperatorType = GroupOperatorType.And;
                grpOP.Operands.Add(betOp);
                grpOP.Operands.Add(notOP);

                moves.Filter = grpOP;
                //       moves.Filter = betOp;



                List <InventoryItem> invList = new List <InventoryItem>();

                //loc.MoveFrom[0].Appliance



                foreach (Move mov in moves)
                {
                    FastFileLineItem item = space.FindObject <FastFileLineItem>(new BinaryOperator("Move.Oid", mov.Oid.ToString()));

                    foreach (InventoryItem inv in invList)
                    {
                        if (item.HAPApplication != null && mov.Appliance.SageName == inv.Appliance.SageName && mov.LocationTo.Name == inv.LocationTo.Name &&
                            item.HAPApplication.BasicScheduledDate.ToString("dd/MM/yyyy") == inv.InstallDate.ToString("dd/MM/yyyy"))
                        {
                            inv.Quantity += mov.Quantity;
                            groupCheck    = true;
                        }
                        else if (item.ENBLIApplication != null && mov.Appliance.SageName == inv.Appliance.SageName && mov.LocationTo.Name == inv.LocationTo.Name &&
                                 item.ENBLIApplication.TAPSAssessmentDate.ToString("dd/MM/yyyy") == inv.InstallDate.ToString("dd/MM/yyyy"))
                        {
                            inv.Quantity += mov.Quantity;
                            groupCheck    = true;
                        }
                        else if (item.ENBLIApplication != null && mov.Appliance.SageName == inv.Appliance.SageName && mov.LocationTo.Name == inv.LocationTo.Name &&
                                 item.ENBLIApplication.ENBLIADate.ToString("dd/MM/yyyy") == inv.InstallDate.ToString("dd/MM/yyyy"))
                        {
                            inv.Quantity += mov.Quantity;
                            groupCheck    = true;
                        }
                    }

                    if (!groupCheck)
                    {
                        if (item.HAPApplication != null)
                        {
                            InventoryItem invItem = new InventoryItem();
                            invItem.Appliance   = mov.Appliance;
                            invItem.LocationTo  = mov.LocationTo;
                            invItem.Quantity    = mov.Quantity;
                            invItem.InstallDate = item.HAPApplication.BasicScheduledDate;
                            invList.Add(invItem);
                        }
                        else if (item.ENBLIApplication != null)
                        {
                            InventoryItem invItem = new InventoryItem();
                            invItem.Appliance  = mov.Appliance;
                            invItem.LocationTo = mov.LocationTo;
                            invItem.Quantity   = mov.Quantity;

                            if (item.ENBLIApplication.TAPSAssessmentDate != null && item.ENBLIApplication.TAPSAssessmentDate != DateTime.MinValue)
                            {
                                invItem.InstallDate = item.ENBLIApplication.TAPSAssessmentDate;
                            }
                            else
                            {
                                invItem.InstallDate = item.ENBLIApplication.ENBLIADate;
                            }


                            invList.Add(invItem);
                        }
                    }

                    groupCheck = false;
                }

                if (invList.Count > 0)
                {
                    WeekI.InventoryItemList = invList;
                    weeklyInventory.Add(WeekI);
                }
            }

            return(weeklyInventory);
        }
 CriteriaOperator ICriteriaVisitor <CriteriaOperator> .Visit(BetweenOperator theOperator)
 {
     return(this.VisitBetween(theOperator));
 }
예제 #27
0
 public override Object Visit(BetweenOperator theOperator)
 {
     return base.Visit(theOperator);
 }
예제 #28
0
 public object Visit(BetweenOperator theOperator)
 {
     return BooleanCriteriaStateObject.Logical;
 }
예제 #29
0
 public virtual object Visit(BetweenOperator theOperator)
 {
     Validate(theOperator.TestExpression);
     Validate(theOperator.EndExpression);
     Validate(theOperator.BeginExpression);
     return null;
 }
예제 #30
0
 public object Visit(BetweenOperator theOperator)
 {
     BooleanCriteriaState testExRes = Process(theOperator.TestExpression);
     BooleanCriteriaState beginExRes = Process(theOperator.BeginExpression);
     BooleanCriteriaState endExRes = Process(theOperator.EndExpression);
     if (testExRes == BooleanCriteriaState.Logical
         || beginExRes == BooleanCriteriaState.Logical
         || endExRes == BooleanCriteriaState.Logical) throw new ArgumentException(MustBeArithmetical);
     return BooleanCriteriaStateObject.Logical;
 }
 CriteriaOperator ICriteriaVisitor <CriteriaOperator> .Visit(BetweenOperator theOperator)
 {
     throw new NotImplementedException();
 }
 /// <contentfrom cref="ICriteriaVisitor.Visit(BetweenOperator)"/>
 public object Visit(BetweenOperator theOperator)
 {
     Process(theOperator.TestExpression);
     Process(theOperator.BeginExpression);
     Process(theOperator.EndExpression);
     return null;
 }
 /// <contentfrom cref="ICriteriaVisitor.Visit(BetweenOperator)"/>
 public object Visit(BetweenOperator theOperator)
 {
     theOperator.TestExpression = Process(theOperator.TestExpression);
     theOperator.BeginExpression = Process(theOperator.BeginExpression);
     theOperator.EndExpression = Process(theOperator.EndExpression);
     return theOperator;
 }
예제 #34
0
        public object Visit(BetweenOperator theOperator)
        {
            object left = Accept(theOperator.TestExpression);

            if (Compare(left, Accept(theOperator.BeginExpression), false) < 0)
            {
                return false;
            }

            if (Compare(left, Accept(theOperator.EndExpression), false) > 0)
            {
                return false;
            }

            return true;
        }
예제 #35
0
        /// <summary>
        /// Initializes the operator resolver.
        /// </summary>
        /// <returns>The operator resolver.</returns>
        private static OperatorResolver InitOperatorResolver()
        {
            Mock <OperatorResolver> opResolverMock = new Mock <OperatorResolver>();
            IExpressionFactory      exprFactory    =
                new ExpressionFactory(
                    ModelResolvers.ExprResolver,
                    ModelResolvers.RuleExprResolver,
                    ModelResolvers.JoinExprResolver,
                    opResolverMock.Object);

            JoinApplyMeasuresOperator joinApplyMeasuresOp = new JoinApplyMeasuresOperator(
                exprFactory,
                ModelResolvers.DsResolver);

            opResolverMock.Setup(o => o(It.IsAny <string>()))
            .Returns((string key) =>
            {
                IOperatorDefinition op;

                if (key.In("count", "min", "max", "median", "sum", "avg", "stddev_pop", "stddev_samp", "var_pop", "var_samp"))
                {
                    op = new AggrFunctionOperator(joinApplyMeasuresOp, ModelResolvers.DsResolver);
                }
                else if (key == "aggr")
                {
                    op = new AggrOperator();
                }
                else if (key.In("first_value", "last_value", "lag", "rank", "ratio_to_report", "lead"))
                {
                    op = new AnalyticFunctionOperator(joinApplyMeasuresOp, ModelResolvers.DsResolver);
                }
                else if (key.In("+", "-", "*", "/"))
                {
                    op = new ArithmeticOperator(joinApplyMeasuresOp);
                }
                else if (key == "between")
                {
                    op = new BetweenOperator(joinApplyMeasuresOp, ModelResolvers.DsResolver);
                }
                else if (key.In("and", "or", "xor", "not"))
                {
                    op = new BooleanOperator(joinApplyMeasuresOp, ModelResolvers.DsResolver);
                }
                else if (key == "calc")
                {
                    op = new CalcOperator(ModelResolvers.DsResolver);
                }
                else if (key == "check_datapoint")
                {
                    op = new CheckDatapointOperator(ModelResolvers.DsResolver, exprFactory);
                }
                else if (key.In("=", "<>", "<", "<=", ">", ">="))
                {
                    op = new ComparisonOperator(joinApplyMeasuresOp, ModelResolvers.DsResolver);
                }
                else if (key == "comp")
                {
                    op = new ComponentOperator(ModelResolvers.DsResolver, new ComponentTypeInference(ModelResolvers.DsResolver));
                }
                else if (key == "const")
                {
                    op = new ConstantOperator(ModelResolvers.DsResolver);
                }
                else if (key == "current_date")
                {
                    op = new CurrentDateOperator(ModelResolvers.DsResolver);
                }
                else if (key == "exists_in")
                {
                    op = new ExistsInOperator(ModelResolvers.DsResolver);
                }
                else if (key == "get")
                {
                    op = new GetOperator(new Mock <IDataModelProvider>().Object);                       // operator tests should mock IDataModel implementation
                }
                else if (key == "if")
                {
                    op = new IfThenElseOperator(joinApplyMeasuresOp, ModelResolvers.DsResolver);
                }
                else if (key.In("in", "not_in"))
                {
                    op = new InOperator(joinApplyMeasuresOp, ModelResolvers.DsResolver);
                }
                else if (key == "isnull")
                {
                    op = new IsNullOperator(joinApplyMeasuresOp, ModelResolvers.DsResolver);
                }
                else if (key == "join")
                {
                    op = new JoinOperator(ModelResolvers.DsResolver);
                }
                else if (key.In("keep", "drop"))
                {
                    op = new KeepDropOperator(ModelResolvers.DsResolver);
                }
                else if (key == "match_characters")
                {
                    op = new MatchCharactersOperator(joinApplyMeasuresOp, ModelResolvers.DsResolver);
                }
                else if (key == "#")
                {
                    op = new MembershipOperator();
                }
                else if (key.In("ceil", "floor", "abs", "exp", "ln", "sqrt", "mod", "round", "power", "log", "trunc"))
                {
                    op = new NumericOperator(joinApplyMeasuresOp, ModelResolvers.DsResolver);
                }
                else if (key == "nvl")
                {
                    op = new NvlOperator(joinApplyMeasuresOp);
                }
                else if (key == "opt")
                {
                    op = new OptionalOperator(ModelResolvers.DsResolver);
                }
                else if (key == "period_indicator")
                {
                    op = new PeriodIndicatorOperator(joinApplyMeasuresOp, ModelResolvers.DsResolver, exprFactory);
                }
                else if (key == "pivot")
                {
                    op = new PivotOperator(ModelResolvers.DsResolver);
                }
                else if (key == "ref")
                {
                    op = new ReferenceOperator();
                }
                else if (key == "rename")
                {
                    op = new RenameOperator(ModelResolvers.DsResolver);
                }
                else if (key.In("union", "intersect", "setdiff", "symdiff"))
                {
                    op = new SetOperator();
                }
                else if (key.In("||", "trim", "rtrim", "ltrim", "upper", "lower", "substr", "replace", "instr", "length"))
                {
                    op = new StringOperator(joinApplyMeasuresOp, ModelResolvers.DsResolver);
                }
                else if (key == "sub")
                {
                    op = new SubspaceOperator(ModelResolvers.DsResolver);
                }
                else if (key.In("fill_time_series", "flow_to_stock", "stock_to_flow", "timeshift", "time_agg"))
                {
                    op = new TimeOperator();
                }
                else if (key.In("plus", "minus"))
                {
                    op = new UnaryArithmeticOperator(joinApplyMeasuresOp);
                }
                else if (key == "unpivot")
                {
                    op = new UnpivotOperator(ModelResolvers.DsResolver);
                }
                // ---
                else if (key == "calcExpr")
                {
                    op = new CalcExprOperator(ModelResolvers.DsResolver);
                }
                else if (key == "collection")
                {
                    op = new CollectionOperator(ModelResolvers.DsResolver);
                }
                else if (key == "datasetClause")
                {
                    op = new DatasetClauseOperator();
                }
                else if (key == "group")
                {
                    op = new GroupOperator(ModelResolvers.DsResolver);
                }
                else if (key == "order")
                {
                    op = new OrderOperator(ModelResolvers.DsResolver);
                }
                else if (key == "partition")
                {
                    op = new PartitionOperator(ModelResolvers.DsResolver);
                }
                else if (key == "renameExpr")
                {
                    op = new RenameExprOperator(ModelResolvers.DsResolver);
                }
                else if (key == "subExpr")
                {
                    op = new SubspaceExprOperator();
                }
                else if (key == "when")
                {
                    op = new WhenOperator();
                }
                else
                {
                    throw new InvalidOperationException("Operator not found");
                }

                op.Symbol = key;
                return(op);
            });

            return(opResolverMock.Object);
        }
예제 #36
0
 protected virtual void Process(BetweenOperator theOperator)
 {
 }
예제 #37
0
        private void GenerateData()
        {
            BinaryOperator   BinarySolicitud = new BinaryOperator("CodSolicitud", 0, BinaryOperatorType.Greater);
            BetweenOperator  BetweenFechas   = new BetweenOperator("FechaEntrada", FechaDesde, FechaHasta);
            CriteriaOperator criteria        = CriteriaOperator.And(BetweenFechas, BinarySolicitud);

            ICollection <SolicitudReparacion> ListadoDeSolicitudes = ObjectSpace.GetObjects <SolicitudReparacion>(criteria);

            if (!ReferenceEquals(ListadoDeSolicitudes, null))
            {
                foreach (SolicitudReparacion ObjSolicitud in ListadoDeSolicitudes)
                {
                    decimal  total            = 0;
                    decimal  TotalAproximado  = 0;
                    string   TrabajoRealizado = "";
                    int      dias             = 0;
                    TimeSpan tiempoTranscurrido;

                    BinaryOperator               BinaryCompra   = new BinaryOperator("CompraRepuestos", ObjSolicitud);
                    CriteriaOperator             criteriaCompra = CriteriaOperator.And(BinaryCompra);
                    ICollection <CompraRepuesto> ListadoCompras = ObjectSpace.GetObjects <CompraRepuesto>(criteriaCompra);

                    BinaryOperator   BinarySalida   = new BinaryOperator("SalidaVehiculo", ObjSolicitud);
                    CriteriaOperator criteriaSalida = CriteriaOperator.And(BinarySalida);
                    ICollection <SolicitudSalidaVehiculo> ListadoSalidas = ObjectSpace.GetObjects <SolicitudSalidaVehiculo>(criteriaSalida);


                    BinaryOperator   BinaryAproximado   = new BinaryOperator("SolicitudRepuesto", ObjSolicitud);
                    CriteriaOperator criteriaAproximado = CriteriaOperator.And(BinaryAproximado);
                    ICollection <SolicitudRepuestos> ListadoAproximado = ObjectSpace.GetObjects <SolicitudRepuestos>(criteriaAproximado);


                    if (!ReferenceEquals(ListadoCompras, null))
                    {
                        if (!ReferenceEquals(ListadoCompras, null))
                        {
                            foreach (CompraRepuesto ComprasList in ListadoCompras)
                            {
                                total = total + ComprasList.Total;
                            }
                        }


                        if (!ReferenceEquals(ListadoSalidas, null))
                        {
                            foreach (SolicitudSalidaVehiculo SalidaList in ListadoSalidas)
                            {
                                TrabajoRealizado   = TrabajoRealizado + SalidaList.TrabajoRealizado;
                                tiempoTranscurrido = SalidaList.FechaSalida.Subtract(ObjSolicitud.FechaEntrada);
                                dias = tiempoTranscurrido.Days + 1;
                            }
                        }


                        if (!ReferenceEquals(ListadoAproximado, null))
                        {
                            foreach (SolicitudRepuestos AproximadoList in ListadoAproximado)
                            {
                                TotalAproximado += AproximadoList.Total;
                            }
                        }
                    }

                    if (total > 0 && dias > 0)
                    {
                        ObjSolicitud.RendimientoReal = total / dias;
                    }
                    else
                    {
                        ObjSolicitud.RendimientoReal = 0;
                    }

                    ObjSolicitud.CostoEjecucionReal       = total;
                    ObjSolicitud.CostoEjecucionAproximado = TotalAproximado;
                    ObjSolicitud.TrabajoRealizado         = TrabajoRealizado;
                }


                //guardando la data
                this.ObjectSpace.CommitChanges();
            }
        }
예제 #38
0
 object ICriteriaVisitor.Visit(BetweenOperator theOperator)
 {
     object val = Process(theOperator.TestExpression);
     if(Compare(val, Process(theOperator.BeginExpression)) < 0)
         return false;
     if(Compare(val, Process(theOperator.EndExpression)) > 0)
         return false;
     return true;
 }
예제 #39
0
 public CriteriaOperator Visit(BetweenOperator theOperator)
 {
     return((CriteriaOperator)(IsFullIndexed(theOperator.TestExpression)
         ? (object)new FunctionOperator(FullTextContainsFunction.FunctionName, theOperator.GetOperators())
         : theOperator));
 }
예제 #40
0
        public override CriteriaOperator GetCriteria()
        {
            CriteriaOperator criteriaClase          = new BinaryOperator("Clase", Clase);
            CriteriaOperator criteriaSubClase       = new BinaryOperator("SubClase", SubClase);
            CriteriaOperator criteriaAmbiente       = new BinaryOperator("Ambiente", Ambiente);
            CriteriaOperator criteriaEmpleado       = new BinaryOperator("Empleado", Empleado);
            CriteriaOperator criteriaCuentaContable = new BinaryOperator("CuentaContable", CuentaContable);
            CriteriaOperator criteriaFuente         = new BinaryOperator("Fuente", Fuente);

            //para filtrar los estados 1 y 2

            CriteriaOperator ProcesoDescargoFinal = null;

            //para filtrar los estados 1 y 2
            BinaryOperator BinaryEstado1 = new BinaryOperator("Estado", Estado.Disponible);
            BinaryOperator BinaryEstado2 = new BinaryOperator("Estado", Estado.Asignado);

            ProcesoDescargoFinal = CriteriaOperator.Or(BinaryEstado1, BinaryEstado2);



            if (!ReferenceEquals(EstadoFisico, null))
            {
                BinaryOperator ProcesoDescargo1 = new BinaryOperator("EstadoFisico", EstadoFisico, BinaryOperatorType.NotEqual);
                ProcesoDescargoFinal = CriteriaOperator.And(ProcesoDescargoFinal, ProcesoDescargo1);
            }

            if (!ReferenceEquals(OmitirAmbiente, null))
            {
                BinaryOperator ProcesoDescargo2 = new BinaryOperator("Ambiente", OmitirAmbiente, BinaryOperatorType.NotEqual);
                ProcesoDescargoFinal = CriteriaOperator.And(ProcesoDescargoFinal, ProcesoDescargo2);
            }


            BetweenOperator BetweenFechas = new BetweenOperator("FechaDeAdquisicion", FechaDesde, FechaHasta);

            string          dateTime       = "1980/01/01";
            DateTime        dt             = Convert.ToDateTime(dateTime);
            BetweenOperator BetweenFechas2 = new BetweenOperator("FechaDeAdquisicion", dt, FechaHasta);

            CriteriaOperator criteriaFinal = null;


            if (!ReferenceEquals(Clase, null))
            {
                if (ReferenceEquals(criteriaFinal, null))
                {
                    criteriaFinal = CriteriaOperator.And(criteriaClase);
                }
                else
                {
                    criteriaFinal = CriteriaOperator.And(criteriaClase, criteriaFinal);
                }
            }

            if (!ReferenceEquals(SubClase, null))
            {
                if (!ReferenceEquals(Clase, null))
                {
                    criteriaFinal = CriteriaOperator.And(criteriaSubClase, criteriaFinal);
                }
            }

            if (!ReferenceEquals(Ambiente, null))
            {
                if (ReferenceEquals(criteriaFinal, null))
                {
                    criteriaFinal = CriteriaOperator.And(criteriaAmbiente);
                }
                else
                {
                    criteriaFinal = CriteriaOperator.And(criteriaAmbiente, criteriaFinal);
                }
            }


            if (!ReferenceEquals(Empleado, null))
            {
                if (ReferenceEquals(criteriaFinal, null))
                {
                    criteriaFinal = CriteriaOperator.And(criteriaEmpleado);
                }
                else
                {
                    criteriaFinal = CriteriaOperator.And(criteriaEmpleado, criteriaFinal);
                }
            }


            if (!ReferenceEquals(CuentaContable, null))
            {
                if (ReferenceEquals(criteriaFinal, null))
                {
                    criteriaFinal = CriteriaOperator.And(criteriaCuentaContable);
                }
                else
                {
                    criteriaFinal = CriteriaOperator.And(criteriaCuentaContable, criteriaFinal);
                }
            }


            if (!ReferenceEquals(Fuente, null))
            {
                if (ReferenceEquals(criteriaFinal, null))
                {
                    criteriaFinal = CriteriaOperator.And(criteriaFuente);
                }
                else
                {
                    criteriaFinal = CriteriaOperator.And(criteriaFuente, criteriaFinal);
                }
            }



            int axoDesde = FechaDesde.Year;
            int axoHasta = FechaHasta.Year;

            if (axoDesde > 1 && axoHasta > 1)
            {
                criteriaFinal = CriteriaOperator.And(criteriaFinal, BetweenFechas);
            }
            else if (axoDesde == 1 && axoHasta > 1)
            {
                criteriaFinal = CriteriaOperator.And(criteriaFinal, BetweenFechas2);
            }


            if (Precio == Mayor600.Mayor)
            {
                BinaryOperator Valor = new BinaryOperator("ValorInicial", 600, BinaryOperatorType.GreaterOrEqual);
                criteriaFinal = CriteriaOperator.And(criteriaFinal, Valor);
            }
            else if (Precio == Mayor600.Menor)
            {
                BinaryOperator Valor = new BinaryOperator("ValorInicial", 600, BinaryOperatorType.Less);
                criteriaFinal = CriteriaOperator.And(criteriaFinal, Valor);
            }


            criteriaFinal = CriteriaOperator.And(criteriaFinal, ProcesoDescargoFinal);

            return(criteriaFinal);
        }
예제 #41
0
  Object yyparse (yyInput yyLex) {
	if (yyMax <= 0) yyMax = 256;			
	int yyState = 0;								   
	int [] yyStates = new int[yyMax];					
	Object yyVal = null;							   
	Object [] yyVals = new Object[yyMax];			
	int yyToken = -1;					
	int yyErrorFlag = 0;				
	int yyTop = 0;
	goto skip;
	yyLoop:
	yyTop++;
	skip:
	for(;; ++yyTop) {
	  if(yyTop >= yyStates.Length) {			
		int[] i = new int[yyStates.Length + yyMax];
		yyStates.CopyTo(i, 0);
		yyStates = i;
		Object[] o = new Object[yyVals.Length + yyMax];
		yyVals.CopyTo(o, 0);
		yyVals = o;
	  }
	  yyStates[yyTop] = yyState;
	  yyVals[yyTop] = yyVal;
	  yyDiscarded:	
	  for(;;) {
		int yyN;
		if ((yyN = yyDefRed[yyState]) == 0) {	
		  if(yyToken < 0)
			yyToken = yyLex.advance() ? yyLex.token() : 0;
		  if((yyN = yySindex[yyState]) != 0 && ((yyN += yyToken) >= 0)
			  && (yyN < yyTable.Length) && (yyCheck[yyN] == yyToken)) {
			yyState = yyTable[yyN];		
			yyVal = yyLex.value();
			yyToken = -1;
			if (yyErrorFlag > 0) -- yyErrorFlag;
			goto yyLoop;
		  }
		  if((yyN = yyRindex[yyState]) != 0 && (yyN += yyToken) >= 0
			  && yyN < yyTable.Length && yyCheck[yyN] == yyToken)
			yyN = yyTable[yyN];			
		  else
			switch(yyErrorFlag) {
			case 0:
			  yyerror("syntax error");
			  goto case 1;
			case 1: case 2:
			  yyErrorFlag = 3;
			  do {
				if((yyN = yySindex[yyStates[yyTop]]) != 0
					&& (yyN += Token.yyErrorCode) >= 0 && yyN < yyTable.Length
					&& yyCheck[yyN] == Token.yyErrorCode) {
				  yyState = yyTable[yyN];
				  yyVal = yyLex.value();
				  goto yyLoop;
				}
			  } while (--yyTop >= 0);
			  yyerror("irrecoverable syntax error");
			  goto yyDiscarded;
			case 3:
			  if (yyToken == 0)
				yyerror("irrecoverable syntax error at end-of-file");
			  yyToken = -1;
			  goto yyDiscarded;		
			}
		}
		int yyV = yyTop + 1 - yyLen[yyN];
		yyVal = yyV > yyTop ? null : yyVals[yyV];
		switch(yyN) {
case 1:
#line 54 "grammar.y"
  { result = new CriteriaOperator[0]; }
  break;
case 2:
#line 55 "grammar.y"
  { result = ((List<CriteriaOperator>)yyVals[-1+yyTop]).ToArray(); }
  break;
case 3:
#line 59 "grammar.y"
  { yyVal = new List<CriteriaOperator>(new CriteriaOperator[] {(CriteriaOperator)yyVals[0+yyTop]}); }
  break;
case 4:
#line 60 "grammar.y"
  { yyVal = yyVals[-2+yyTop]; ((List<CriteriaOperator>)yyVal).Add((CriteriaOperator)yyVals[0+yyTop]); }
  break;
case 5:
#line 64 "grammar.y"
  { yyVal = yyVals[0+yyTop]; }
  break;
case 6:
#line 65 "grammar.y"
  {
		OperandProperty prop2 = (OperandProperty)yyVals[-2+yyTop];
		OperandProperty prop4 = (OperandProperty)yyVals[0+yyTop];
		prop2.PropertyName = '<' + prop2.PropertyName + '>' + prop4.PropertyName;
		yyVal = prop2;
	}
  break;
case 7:
#line 74 "grammar.y"
  { yyVal = yyVals[0+yyTop]; }
  break;
case 8:
#line 75 "grammar.y"
  { yyVal = new OperandProperty("^"); }
  break;
case 9:
#line 79 "grammar.y"
  { yyVal = yyVals[0+yyTop]; }
  break;
case 10:
#line 80 "grammar.y"
  {
		OperandProperty prop1 = (OperandProperty)yyVals[-2+yyTop];
		OperandProperty prop3 = (OperandProperty)yyVals[0+yyTop];
		prop1.PropertyName += '.' + prop3.PropertyName;
		yyVal = prop1;
	}
  break;
case 11:
#line 89 "grammar.y"
  {
		AggregateOperand agg = (AggregateOperand)yyVals[0+yyTop];
		yyVal = JoinOperand.JoinOrAggreagate((OperandProperty)yyVals[-2+yyTop], null, agg.AggregateType, agg.AggregatedExpression);
	}
  break;
case 12:
#line 93 "grammar.y"
  {
		AggregateOperand agg = (AggregateOperand)yyVals[0+yyTop];
		yyVal = JoinOperand.JoinOrAggreagate((OperandProperty)yyVals[-5+yyTop], (CriteriaOperator)yyVals[-3+yyTop], agg.AggregateType, agg.AggregatedExpression);
	}
  break;
case 13:
#line 97 "grammar.y"
  {
		AggregateOperand agg = (AggregateOperand)yyVals[0+yyTop];
		yyVal = JoinOperand.JoinOrAggreagate((OperandProperty)yyVals[-4+yyTop], null, agg.AggregateType, agg.AggregatedExpression);
	}
  break;
case 14:
#line 101 "grammar.y"
  { yyVal = JoinOperand.JoinOrAggreagate((OperandProperty)yyVals[-3+yyTop], (CriteriaOperator)yyVals[-1+yyTop], Aggregate.Exists, null); }
  break;
case 15:
#line 102 "grammar.y"
  { yyVal = JoinOperand.JoinOrAggreagate((OperandProperty)yyVals[-2+yyTop], null, Aggregate.Exists, null); }
  break;
case 18:
#line 110 "grammar.y"
  { yyVal = new AggregateOperand((OperandProperty)null, (CriteriaOperator)null, Aggregate.Count, null); }
  break;
case 19:
#line 111 "grammar.y"
  { yyVal = new AggregateOperand((OperandProperty)null, (CriteriaOperator)null, Aggregate.Exists, null); }
  break;
case 20:
#line 112 "grammar.y"
  { yyVal = new AggregateOperand((OperandProperty)null, (CriteriaOperator)null, Aggregate.Count, null); }
  break;
case 21:
#line 113 "grammar.y"
  { yyVal = new AggregateOperand((OperandProperty)null, (CriteriaOperator)null, Aggregate.Exists, null); }
  break;
case 22:
#line 114 "grammar.y"
  { yyVal = new AggregateOperand((OperandProperty)null, (CriteriaOperator)yyVals[-1+yyTop], Aggregate.Min, null); }
  break;
case 23:
#line 115 "grammar.y"
  { yyVal = new AggregateOperand((OperandProperty)null, (CriteriaOperator)yyVals[-1+yyTop], Aggregate.Max, null); }
  break;
case 24:
#line 116 "grammar.y"
  { yyVal = new AggregateOperand((OperandProperty)null, (CriteriaOperator)yyVals[-1+yyTop], Aggregate.Avg, null); }
  break;
case 25:
#line 117 "grammar.y"
  { yyVal = new AggregateOperand((OperandProperty)null, (CriteriaOperator)yyVals[-1+yyTop], Aggregate.Sum, null); }
  break;
case 26:
#line 121 "grammar.y"
  { yyVal = yyVals[0+yyTop]; }
  break;
case 27:
#line 122 "grammar.y"
  {
						  string paramName = (string)yyVals[0+yyTop];
						  if(string.IsNullOrEmpty(paramName)) {
							OperandValue param = new OperandValue();
							resultParameters.Add(param);
							yyVal = param;
						  } else {
							bool paramNotFound = true;
							foreach(OperandValue v in resultParameters) {
							  OperandParameter p = v as OperandParameter;
							  if(ReferenceEquals(p, null))
								continue;
							  if(p.ParameterName != paramName)
								continue;
							  paramNotFound = false;
							  resultParameters.Add(p);
							  yyVal = p;
							  break;
							}
							if(paramNotFound) {
							  OperandParameter param = new OperandParameter(paramName);
							  resultParameters.Add(param);
							  yyVal = param;
							}
						  }
						}
  break;
case 28:
#line 148 "grammar.y"
  { yyVal = yyVals[0+yyTop]; }
  break;
case 29:
#line 149 "grammar.y"
  { yyVal = yyVals[0+yyTop]; }
  break;
case 30:
#line 150 "grammar.y"
  { yyVal = new BinaryOperator( (CriteriaOperator)yyVals[-2+yyTop], (CriteriaOperator)yyVals[0+yyTop], BinaryOperatorType.Multiply ); }
  break;
case 31:
#line 151 "grammar.y"
  { yyVal = new BinaryOperator( (CriteriaOperator)yyVals[-2+yyTop], (CriteriaOperator)yyVals[0+yyTop], BinaryOperatorType.Divide ); }
  break;
case 32:
#line 152 "grammar.y"
  { yyVal = new BinaryOperator( (CriteriaOperator)yyVals[-2+yyTop], (CriteriaOperator)yyVals[0+yyTop], BinaryOperatorType.Plus ); }
  break;
case 33:
#line 153 "grammar.y"
  { yyVal = new BinaryOperator( (CriteriaOperator)yyVals[-2+yyTop], (CriteriaOperator)yyVals[0+yyTop], BinaryOperatorType.Minus ); }
  break;
case 34:
#line 154 "grammar.y"
  { yyVal = new BinaryOperator( (CriteriaOperator)yyVals[-2+yyTop], (CriteriaOperator)yyVals[0+yyTop], BinaryOperatorType.Modulo ); }
  break;
case 35:
#line 155 "grammar.y"
  { yyVal = new BinaryOperator( (CriteriaOperator)yyVals[-2+yyTop], (CriteriaOperator)yyVals[0+yyTop], BinaryOperatorType.BitwiseOr ); }
  break;
case 36:
#line 156 "grammar.y"
  { yyVal = new BinaryOperator( (CriteriaOperator)yyVals[-2+yyTop], (CriteriaOperator)yyVals[0+yyTop], BinaryOperatorType.BitwiseAnd ); }
  break;
case 37:
#line 157 "grammar.y"
  { yyVal = new BinaryOperator( (CriteriaOperator)yyVals[-2+yyTop], (CriteriaOperator)yyVals[0+yyTop], BinaryOperatorType.BitwiseXor ); }
  break;
case 38:
#line 158 "grammar.y"
  {
								yyVal = new UnaryOperator( UnaryOperatorType.Minus, (CriteriaOperator)yyVals[0+yyTop] );
								try {
									if(yyVals[0+yyTop] is OperandValue) {
										OperandValue operand = (OperandValue)yyVals[0+yyTop];
										if(operand.Value is Int32) {
											operand.Value = -(Int32)operand.Value;
											yyVal = operand;
											break;
										} else if(operand.Value is Int64) {
											operand.Value = -(Int64)operand.Value;
											yyVal = operand;
											break;
										} else if(operand.Value is Double) {
											operand.Value = -(Double)operand.Value;
											yyVal = operand;
											break;
										} else if(operand.Value is Decimal) {
											operand.Value = -(Decimal)operand.Value;
											yyVal = operand;
											break;
										}  else if(operand.Value is Int16) {
											operand.Value = -(Int16)operand.Value;
											yyVal = operand;
											break;
										}  else if(operand.Value is SByte) {
											operand.Value = -(SByte)operand.Value;
											yyVal = operand;
											break;
										}
									}
								} catch {}
							}
  break;
case 39:
#line 191 "grammar.y"
  { yyVal = new UnaryOperator( UnaryOperatorType.Plus, (CriteriaOperator)yyVals[0+yyTop] ); }
  break;
case 40:
#line 192 "grammar.y"
  { yyVal = new UnaryOperator( UnaryOperatorType.BitwiseNot, (CriteriaOperator)yyVals[0+yyTop] ); }
  break;
case 41:
#line 193 "grammar.y"
  { yyVal = new BinaryOperator( (CriteriaOperator)yyVals[-2+yyTop], (CriteriaOperator)yyVals[0+yyTop], BinaryOperatorType.Equal); }
  break;
case 42:
#line 194 "grammar.y"
  { yyVal = new BinaryOperator( (CriteriaOperator)yyVals[-2+yyTop], (CriteriaOperator)yyVals[0+yyTop], BinaryOperatorType.NotEqual); }
  break;
case 43:
#line 195 "grammar.y"
  { yyVal = new BinaryOperator( (CriteriaOperator)yyVals[-2+yyTop], (CriteriaOperator)yyVals[0+yyTop], BinaryOperatorType.Greater); }
  break;
case 44:
#line 196 "grammar.y"
  { yyVal = new BinaryOperator( (CriteriaOperator)yyVals[-2+yyTop], (CriteriaOperator)yyVals[0+yyTop], BinaryOperatorType.Less); }
  break;
case 45:
#line 197 "grammar.y"
  { yyVal = new BinaryOperator( (CriteriaOperator)yyVals[-2+yyTop], (CriteriaOperator)yyVals[0+yyTop], BinaryOperatorType.GreaterOrEqual); }
  break;
case 46:
#line 198 "grammar.y"
  { yyVal = new BinaryOperator( (CriteriaOperator)yyVals[-2+yyTop], (CriteriaOperator)yyVals[0+yyTop], BinaryOperatorType.LessOrEqual); }
  break;
case 47:
#line 199 "grammar.y"
  { yyVal = new BinaryOperator( (CriteriaOperator)yyVals[-2+yyTop], (CriteriaOperator)yyVals[0+yyTop], BinaryOperatorType.Like); }
  break;
case 48:
#line 200 "grammar.y"
  { yyVal = new UnaryOperator(UnaryOperatorType.Not, new BinaryOperator( (CriteriaOperator)yyVals[-3+yyTop], (CriteriaOperator)yyVals[0+yyTop], BinaryOperatorType.Like)); }
  break;
case 49:
#line 201 "grammar.y"
  { yyVal = new UnaryOperator(UnaryOperatorType.Not, (CriteriaOperator)yyVals[0+yyTop]); }
  break;
case 50:
#line 202 "grammar.y"
  { yyVal = GroupOperator.And((CriteriaOperator)yyVals[-2+yyTop], (CriteriaOperator)yyVals[0+yyTop]); }
  break;
case 51:
#line 203 "grammar.y"
  { yyVal = GroupOperator.Or((CriteriaOperator)yyVals[-2+yyTop], (CriteriaOperator)yyVals[0+yyTop]); }
  break;
case 52:
#line 204 "grammar.y"
  { yyVal = yyVals[-1+yyTop]; }
  break;
case 53:
#line 205 "grammar.y"
  { yyVal = new UnaryOperator(UnaryOperatorType.IsNull, (CriteriaOperator)yyVals[-2+yyTop]); }
  break;
case 54:
#line 206 "grammar.y"
  { yyVal = new UnaryOperator(UnaryOperatorType.Not, new UnaryOperator(UnaryOperatorType.IsNull, (CriteriaOperator)yyVals[-3+yyTop])); }
  break;
case 55:
#line 207 "grammar.y"
  { yyVal = new InOperator((CriteriaOperator)yyVals[-2+yyTop], (IEnumerable<CriteriaOperator>)yyVals[0+yyTop]); }
  break;
case 56:
#line 208 "grammar.y"
  { yyVal = new BetweenOperator((CriteriaOperator)yyVals[-6+yyTop], (CriteriaOperator)yyVals[-3+yyTop], (CriteriaOperator)yyVals[-1+yyTop]); }
  break;
case 57:
#line 209 "grammar.y"
  { yyVal = new UnaryOperator(UnaryOperatorType.IsNull, (CriteriaOperator)yyVals[-1+yyTop]); }
  break;
case 58:
#line 210 "grammar.y"
  { yyVal = new FunctionOperator(FunctionOperatorType.IsNull, (CriteriaOperator)yyVals[-3+yyTop], (CriteriaOperator)yyVals[-1+yyTop]); }
  break;
case 59:
#line 211 "grammar.y"
  {  FunctionOperator fo = new FunctionOperator((FunctionOperatorType)yyVals[-1+yyTop], (IEnumerable<CriteriaOperator>)yyVals[0+yyTop]); lexer.CheckFunctionArgumentsCount(fo.OperatorType, fo.Operands.Count); yyVal = fo; }
  break;
case 60:
#line 212 "grammar.y"
  { yyVal = null; }
  break;
case 61:
#line 216 "grammar.y"
  { yyVal = yyVals[-1+yyTop]; }
  break;
case 62:
#line 217 "grammar.y"
  { yyVal = new List<CriteriaOperator>(); }
  break;
case 63:
#line 221 "grammar.y"
  {
							List<CriteriaOperator> lst = new List<CriteriaOperator>();
							lst.Add((CriteriaOperator)yyVals[0+yyTop]);
							yyVal = lst;
						}
  break;
case 64:
#line 226 "grammar.y"
  {
							List<CriteriaOperator> lst = (List<CriteriaOperator>)yyVals[-2+yyTop];
							lst.Add((CriteriaOperator)yyVals[0+yyTop]);
							yyVal = lst;
						}
  break;
#line default
		}
		yyTop -= yyLen[yyN];
		yyState = yyStates[yyTop];
		int yyM = yyLhs[yyN];
		if(yyState == 0 && yyM == 0) {
		  yyState = yyFinal;
		  if(yyToken < 0)
			yyToken = yyLex.advance() ? yyLex.token() : 0;
		  if(yyToken == 0)
			return yyVal;
		  goto yyLoop;
		}
		if(((yyN = yyGindex[yyM]) != 0) && ((yyN += yyState) >= 0)
			&& (yyN < yyTable.Length) && (yyCheck[yyN] == yyState))
		  yyState = yyTable[yyN];
		else
		  yyState = yyDgoto[yyM];
	 goto yyLoop;
	  }
	}
  }
 public object Visit(BetweenOperator theOperator){
     return IsFullIndexed(theOperator.TestExpression)
         ? (object) new FunctionOperator(FullTextContainsFunction.FunctionName, theOperator.GetOperators())
         : theOperator;
 }