コード例 #1
0
        private string ProcessOperandProperty(OperandProperty operandProperty, string alias)
        {
            var operandPropertyName = operandProperty.PropertyName;

            if (operandPropertyName.StartsWith(ConcatOperandOperator.OPERAND_PREFIX))
            {
                return("CONCAT_SMART(" +
                       operandPropertyName
                       .Remove(ConcatOperandOperator.OPERAND_PREFIX)
                       .Split(ConcatOperandOperator.PROPERTY_DELIMETER)
                       .ToString(x => alias + "." + x, ", ") +
                       ")");
            }


            if (operandPropertyName.StartsWith(FirstNbytesOperandOperator.OPERAND_PREFIX))
            {
                var query = operandPropertyName.Remove(FirstNbytesOperandOperator.OPERAND_PREFIX)
                            .Split(FirstNbytesOperandOperator.DELIMETER);

                if (query.Length == 2)
                {
                    return("FIRST_NBYTES({0}.{1}, {2})".FillWith(alias, query[0], query[1]));
                }
            }

            return(alias + "." + operandPropertyName);
        }
コード例 #2
0
 protected override void Process(OperandProperty theOperand)
 {
     base.Process(theOperand);
     theOperand.PropertyName =
         CaptionHelper.GetFullMemberCaption(XafTypesInfo.Instance.FindTypeInfo(objectType),
                                            theOperand.PropertyName);
 }
コード例 #3
0
		protected override void Process(OperandProperty operand) {
			base.Process(operand);
			IMemberInfo memberInfo = objectTypeInfo.FindMember(operand.PropertyName);
			if(memberInfo.MemberTypeInfo.IsDomainComponent) {
				operand.PropertyName = operand.PropertyName + "." + memberInfo.MemberTypeInfo.KeyMember.Name;
			}
		}
コード例 #4
0
        void DefaultNewRow(int _RowHandle)
        {
            var x = (XPLiteObject)detailsGV.GetRow(_RowHandle);
            //x?.SetMemberValue(parms.DetailsKeyName, masterKeyObject);

            var left = new OperandProperty(parms.DetailsKeyName).PropertyName;

            switch (parms.KeyType)
            {
            case KeyTypeEnum.Int:
                x?.SetMemberValue(left, ((int)masterKeyObject));
                break;

            case KeyTypeEnum.Long:
                x?.SetMemberValue(left, ((long)masterKeyObject));
                break;

            case KeyTypeEnum.String:
                x?.SetMemberValue(left, $"'{masterKeyObject.ToString()}'");
                break;

            case KeyTypeEnum.Object:
                var defaultObj = ((XPBaseObject)masterKeyObject).This;
                x?.SetMemberValue(left, defaultObj);

                break;

            default:
                break;
            }
        }
    public override String[] GetUsersInRole(String roleName)
    {
        if (String.IsNullOrEmpty(roleName))
        {
            throw new ProviderException("Role name cannot be empty or null.");
        }
        if (!RoleExists(roleName))
        {
            throw new ProviderException("Role does not exist.");
        }

        string[] users;

        using (Session session = XpoHelper.GetNewSession()) {
            XPView xpvUsers = new XPView(session, typeof(XpoUser),
                                         new CriteriaOperatorCollection()
            {
                OperandProperty.Parse("UserName")
            },
                                         new GroupOperator(
                                             GroupOperatorType.And,
                                             new BinaryOperator("ApplicationName", ApplicationName, BinaryOperatorType.Equal),
                                             new ContainsOperator("Roles", new BinaryOperator("RoleName", roleName, BinaryOperatorType.Equal))));

            List <String> usersList = new List <String>();
            for (int i = 0; i < xpvUsers.Count; i++)
            {
                usersList.Add(xpvUsers[i][0].ToString());
            }
            users = usersList.ToArray();
        }

        return(users);
    }
    public override String[] FindUsersInRole(String roleName, String userNameToMatch)
    {
        String[] users;

        if (!RoleExists(roleName))
        {
            throw new ProviderException("Role does not exist.");
        }

        using (Session session = XpoHelper.GetNewSession()) {
            CriteriaOperator theCriteria = CriteriaOperator.Parse("ApplicationName = ? and contains(UserName, ?) and Roles[RoleName = ?]", ApplicationName, userNameToMatch, roleName);
            XPView           xpvUsers    = new XPView(session, typeof(XpoUser), new CriteriaOperatorCollection()
            {
                OperandProperty.Parse("UserName")
            }, theCriteria);

            List <String> usersList = new List <String>();
            for (int i = 0; i < xpvUsers.Count; i++)
            {
                usersList.Add(xpvUsers[i][0].ToString());
            }
            users = usersList.ToArray();
        }

        return(users);
    }
    public override String[] GetRolesForUser(String username)
    {
        if (String.IsNullOrEmpty(username))
        {
            throw new ProviderException("User name cannot be empty or null.");
        }

        String[] roles;

        using (Session session = XpoHelper.GetNewSession()) {
            XPView xpvRoles = new XPView(session, typeof(XpoRole),
                                         new CriteriaOperatorCollection()
            {
                OperandProperty.Parse("RoleName")
            },
                                         new GroupOperator(
                                             GroupOperatorType.And,
                                             new BinaryOperator("ApplicationName", ApplicationName, BinaryOperatorType.Equal),
                                             new ContainsOperator("Users", new BinaryOperator("UserName", username, BinaryOperatorType.Equal))));
            List <String> rolesList = new List <String>();
            for (int i = 0; i < xpvRoles.Count; i++)
            {
                rolesList.Add(xpvRoles[i][0].ToString());
            }
            roles = rolesList.ToArray();
        }

        return(roles);
    }
コード例 #8
0
        private void RetrieveLines(int journalId)
        {
            TransJournal journal = unitOfWork1.FindObject <TransJournal>(CriteriaOperator.Parse($" JournalId = {journalId}"));


            journalLinesGV.InitNewRow += (s, e) =>
            {
                var gv = (s as GridView);
                ((TransJournalLine)gv.GetRow(e.RowHandle)).JournalId = journal;
            };
            journalLinesXPC.LoadingEnabled = false;
            CriteriaOperator filter = new OperandProperty("JournalId") == new OperandValue(journalId);

            journalLinesXPC.Criteria = filter;

            journalLinesXPC.LoadingEnabled = true;
            journalLinesXPC.Load();
            //Rebind to journal header
            if (journalLinesXPC != null && this.textEdit4.DataBindings.Count == 0)
            {
                this.textEdit4.DataBindings.Add(new Binding("EditValue", this.journalXPC, "Decription", true));
                this.textEdit3.DataBindings.Add(new Binding("EditValue", this.journalXPC, "LocationId.LocationName", true));
                this.textEdit2.DataBindings.Add(new Binding("EditValue", this.journalXPC, "TransDate", true));
                this.textEdit1.DataBindings.Add(new Binding("EditValue", this.journalXPC, "ShiftId.ShiftName", true));
            }
        }
コード例 #9
0
 protected override void Process(OperandProperty theOperand)
 {
     base.Process(theOperand);
     theOperand.PropertyName =
         CaptionHelper.GetFullMemberCaption(XafTypesInfo.Instance.FindTypeInfo(objectType),
                                            theOperand.PropertyName);
 }
コード例 #10
0
        private static Condition Binary(BinaryOperator binaryOperator)
        {
            OperandProperty opProperty = binaryOperator.LeftOperand as OperandProperty;
            OperandValue    opValue    = binaryOperator.RightOperand as OperandValue;

            if (ReferenceEquals(binaryOperator, null) || ReferenceEquals(opValue, null))
            {
                return(null);
            }

            switch (binaryOperator.OperatorType)
            {
            case BinaryOperatorType.Equal:
                return(new Condition(opProperty.PropertyName, Operator.Equals, opValue.Value));

            case BinaryOperatorType.NotEqual:
                return(new Condition(opProperty.PropertyName, Operator.DoesntEquals, opValue.Value));

            case BinaryOperatorType.Greater:
                return(new Condition(opProperty.PropertyName, Operator.IsGreaterThan, opValue.Value));

            case BinaryOperatorType.Less:
                return(new Condition(opProperty.PropertyName, Operator.IsLessThan, opValue.Value));

            case BinaryOperatorType.LessOrEqual:
                return(new Condition(opProperty.PropertyName, Operator.IsLessThanOrEqualto, opValue.Value));

            case BinaryOperatorType.GreaterOrEqual:
                return(new Condition(opProperty.PropertyName, Operator.IsGreaterThanOrEqualto, opValue.Value));

            default:
                throw new FilterException(string.Format(Resource.UnsupportedOperatorError, binaryOperator.OperatorType, "binary"));
            }
        }
コード例 #11
0
        private static Condition Function(FunctionOperator functionOperator)
        {
            if (ReferenceEquals(functionOperator, null))
            {
                return(null);
            }

            OperandProperty opProperty = functionOperator.Operands.Count == 3
                ? functionOperator.Operands[1] as OperandProperty : functionOperator.Operands[0] as OperandProperty;

            OperandValue opValue = functionOperator.Operands.Count > 1
                ? functionOperator.Operands.Count == 3
                        ? functionOperator.Operands[2] as OperandValue
                        : functionOperator.Operands[1] as OperandValue
                : null;

            switch (functionOperator.OperatorType)
            {
            case FunctionOperatorType.Contains:
                return(new Condition(opProperty.PropertyName, Operator.Contains, opValue.Value));

            case FunctionOperatorType.StartsWith:
                return(new Condition(opProperty.PropertyName, Operator.StartsWith, opValue.Value));

            case FunctionOperatorType.EndsWith:
                return(new Condition(opProperty.PropertyName, Operator.EndsWith, opValue.Value));

            case FunctionOperatorType.IsNullOrEmpty:
                return(new Condition(opProperty.PropertyName, Operator.IsNullOrEmpty));

            default:
                throw new FilterException(string.Format(Resource.UnsupportedOperatorError, functionOperator.OperatorType, "function"));
            }
        }
コード例 #12
0
        protected override object Visit(OperandProperty theOperand)
        {
            IFieldProjectStrategy projectionStrategy = ServiceManager.Instance.GetService <IFieldProjectStrategy>();

            theOperand.PropertyName = projectionStrategy.UnProject(theOperand.PropertyName);
            return(base.Visit(theOperand));
        }
コード例 #13
0
    static Dictionary <string, FilterItem> CreateStandardFilters()
    {
        var result = new Dictionary <string, FilterItem>();
        var status = new OperandProperty("is_enable");

        result.CreateItem("is_enable", (CriteriaOperator)(status == new OperandValue(DataListUtil.EnumStatus.Disabled)));
        return(result);
    }
コード例 #14
0
        private static FunctionOperator createOperandProperty(string property, FunctionOperatorType operatorType)
        {
            CriteriaOperatorCollection operands        = new CriteriaOperatorCollection();
            OperandProperty            propertyOperand = new OperandProperty(property);

            operands.Add(propertyOperand);
            return(new FunctionOperator(operatorType, operands));
        }
コード例 #15
0
 public override CriteriaOperator Visit(OperandProperty theOperand)
 {
     if (PropertiesToremove.Contains(theOperand.PropertyName))
     {
         return(null);
     }
     return(theOperand);
 }
コード例 #16
0
ファイル: XpoCriteriaFixer.cs プロジェクト: windygu/Xafology
 protected override CriteriaOperator Visit(OperandProperty theOperand)
 {
     if (theOperand.PropertyName.EndsWith("!"))
     {
         return(new OperandProperty(theOperand.PropertyName.Substring(0, theOperand.PropertyName.Length - 1)));
     }
     return(base.Visit(theOperand));
 }
コード例 #17
0
 public AggregateOperand(OperandProperty fCollectionProperty, CriteriaOperator fCondition,
                         CriteriaOperator fAggregatedExpression, Aggregate fAggregateType)
 {
     CollectionProperty   = fCollectionProperty;
     Condition            = fCondition;
     AggregatedExpression = fAggregatedExpression;
     AggregateType        = fAggregateType;
 }
        public static CriteriaOperator GetCriteriaByText(string text, string columnName, GroupOperatorType groupOperatorType)
        {
            var ids          = text.Split(';');
            var operandProp  = new OperandProperty(columnName);
            var criteriaList = Enumerable.Range(0, ids.Length).Select(s => new FunctionOperator(FunctionOperatorType.Contains, operandProp, ids[s]));
            var criteria     = new GroupOperator(groupOperatorType, criteriaList);

            return(criteria);
        }
コード例 #19
0
 protected override void Process(OperandProperty theOperand) {
     if (AggregateLevel == 0 && !theOperand.PropertyName.EndsWith("!")) {
         string probeLookupFieldName = theOperand.PropertyName + '!';
         if (existingLookupFieldNames.Contains(probeLookupFieldName)) {
             theOperand.PropertyName = probeLookupFieldName;
         }
     }
     base.Process(theOperand);
 }
コード例 #20
0
 protected void Page_Load(object sender, EventArgs e)
 {
     ASPxGridView1.DataBind();
     if (!IsPostBack && !IsCallback)
     {
         ASPxGridView1.GroupBy(ASPxGridView1.Columns["TimeSpan"]);
         CriteriaOperator filter = new OperandProperty("TimeSpan") == new OperandValue(new TimeSpan(1, 0, 0));
         ASPxGridView1.FilterExpression = filter.ToString();
     }
 }
        private CriteriaOperator GetGroupFilter(IEnumerable <GridViewGroupInfo> groupInfoList)
        {
            CriteriaOperator groupFilter = null;

            foreach (GridViewGroupInfo groupInfo in groupInfoList)
            {
                groupFilter &= new OperandProperty(groupInfo.FieldName) == new OperandValue(groupInfo.KeyValue);
            }
            return(groupFilter);
        }
コード例 #22
0
    static Dictionary <string, FilterItem> CreateEmployeeStandardFilters()
    {
        var result = new Dictionary <string, FilterItem>();
        var status = new OperandProperty("Status");

        result.CreateItem("All", null);
        result.CreateItem("Salaried", (CriteriaOperator)(status == new OperandValue(EmployeeStatus.Salaried)));
        result.CreateItem("Commission", (CriteriaOperator)(status == new OperandValue(EmployeeStatus.Commission)));
        result.CreateItem("Contract", (CriteriaOperator)(status == new OperandValue(EmployeeStatus.Contract)));
        return(result);
    }
コード例 #23
0
    static Dictionary <string, FilterItem> CreateCustomerStandardFilters()
    {
        var result = new Dictionary <string, FilterItem>();
        var state  = new OperandProperty("BillingAddress.State");

        result.CreateItem("All", null);
        result.CreateItem("Illinois", (CriteriaOperator)(state == "IL"));
        result.CreateItem("California", (CriteriaOperator)(state == "CA"));
        result.CreateItem("Arizona", (CriteriaOperator)(state == "AR"));
        result.CreateItem("Georgia", (CriteriaOperator)(state == "GA"));
        return(result);
    }
    public virtual CriteriaOperator Visit(AggregateOperand theOperand)
    {
        OperandProperty  operand    = theOperand.CollectionProperty.Accept(this) as OperandProperty;
        CriteriaOperator condition  = theOperand.Condition.Accept(this) as CriteriaOperator;
        CriteriaOperator expression = theOperand.AggregatedExpression.Accept(this) as CriteriaOperator;

        if (object.ReferenceEquals(condition, null) || object.ReferenceEquals(expression, null) || object.ReferenceEquals(operand, null))
        {
            return(null);
        }
        return(new AggregateOperand(operand, expression, theOperand.AggregateType, condition));
    }
コード例 #25
0
    static Dictionary <string, FilterItem> CreateTaskStandardFilters()
    {
        var result = new Dictionary <string, FilterItem>();
        var date   = new OperandProperty("DueDate");
        var status = new OperandProperty("Status");

        result.CreateItem("All", null);
        result.CreateItem("Pending", date <= DateTime.Now.Date & status != new OperandValue(EmployeeTaskStatus.Completed));
        result.CreateItem("Deferred", (CriteriaOperator)(status == new OperandValue(EmployeeTaskStatus.Deferred)));
        result.CreateItem("Completed", (CriteriaOperator)(status == new OperandValue(EmployeeTaskStatus.Completed)));
        return(result);
    }
コード例 #26
0
 private void FreeJoinCompositeCriteria_Execute(object sender, SimpleActionExecuteEventArgs e)
 {
     Session          session      = (this.Application.CreateObjectSpace() as XPObjectSpace).Session;
     CriteriaOperator joinCriteria =
         new OperandProperty("^.EmployeeID") == new OperandProperty("EmployeeID");
     JoinOperand joinOperand =
         new JoinOperand("Orders", joinCriteria, Aggregate.Count, new OperandProperty("EmployeeID"));
     BinaryOperator criteria =
         new BinaryOperator(joinOperand, new OperandValue(50), BinaryOperatorType.Greater);
     XPCollection <Employee> employees =
         new XPCollection <Employee>(session, criteria);
 }
コード例 #27
0
    static Dictionary <string, FilterItem> CreateProductStandardFilters()
    {
        var result   = new Dictionary <string, FilterItem>();
        var category = new OperandProperty("Category");
        var name     = new OperandProperty("Name");

        result.CreateItem("All", null);
        result.CreateItem("Video Players", (CriteriaOperator)(category == "VideoPlayers"));
        result.CreateItem("Plasma TVs", category == "Televisions" & new FunctionOperator(FunctionOperatorType.Contains, name, "Plasma"));
        result.CreateItem("LCD TVs", category == "Televisions" & new FunctionOperator(FunctionOperatorType.Contains, name, "LCD"));
        return(result);
    }
コード例 #28
0
        public FilteringModule()
        {
            this.InitializeComponent();
            grid.ExpandAllGroups();

            var orderDate = new OperandProperty("UnboundOrderDate");
            var unitPrice = new OperandProperty("UnitPrice");
            var today     = DateTime.Today;
            var nextMonth = today.AddMonths(1);
            var filter    = orderDate >= new DateTime(today.Year, today.Month, 1) & orderDate < new DateTime(nextMonth.Year, nextMonth.Month, 1);

            grid.FilterCriteria = filter;
        }
コード例 #29
0
 protected override object Visit(OperandProperty theOperand)
 {
     if (_entityType.GetProperties().All(p => p.Name != theOperand.PropertyName))
     {
         var mappings = GridViewExtension.GetColumnFieldMapping(_entityType.Name);
         if (mappings != null && mappings.Any(m => m.FieldNameMapping == theOperand.PropertyName))
         {
             var mapping = mappings.First(m => m.FieldNameMapping == theOperand.PropertyName);
             theOperand.PropertyName = mapping.FiledClrPath;
         }
     }
     return(base.Visit(theOperand));
 }
コード例 #30
0
        protected override CriteriaOperator Visit(OperandProperty theOperand)
        {
            var column = table.GetColumn(theOperand.PropertyName);

            if (column != null)
            {
                return(new QueryOperand(table.GetColumn(theOperand.PropertyName), alias));
            }
            else
            {
                return(null);
            }
        }
コード例 #31
0
ファイル: OidMap.cs プロジェクト: xafdelta/xafdelta
        /// <summary>
        /// Finds the application object by replication key.
        /// </summary>
        /// <param name="classType">Type of the class.</param>
        /// <param name="reference">The reference.</param>
        /// <param name="objectSpace">The object space.</param>
        /// <returns>Application object</returns>
        private static object findApplicationObjectByReplicationKey(Type classType,
                                                                    IObjectReference reference, IObjectSpace objectSpace)
        {
            object result     = null;
            var    modelClass = XafDeltaModule.XafApp.FindModelClass(classType);

            if (modelClass != null && reference.ReplicationKey != null)
            {
                var replicationKeyMember             = ExtensionsHelper.GetReplicationKeyMember(modelClass.TypeInfo);
                var replicationKeyIsCaseInsensitive  = modelClass.ReplicationKeyIsCaseInsensitive();
                var replicationKeyIsSpaceInsensitive = modelClass.ReplicationKeyIsSpaceInsensitive();
                if (replicationKeyMember != null)
                {
                    CriteriaOperator opLeft  = new OperandProperty(replicationKeyMember.Name);
                    CriteriaOperator opRight = new OperandValue(reference.ReplicationKey);

                    if (replicationKeyIsCaseInsensitive)
                    {
                        opLeft  = new FunctionOperator(FunctionOperatorType.Upper, opLeft);
                        opRight = new FunctionOperator(FunctionOperatorType.Upper, opRight);
                    }

                    if (replicationKeyIsSpaceInsensitive)
                    {
                        opLeft = new FunctionOperator(FunctionOperatorType.Replace, opLeft,
                                                      new OperandValue(" "), new OperandValue(String.Empty));
                        opRight = new FunctionOperator(FunctionOperatorType.Replace, opRight,
                                                       new OperandValue(" "), new OperandValue(String.Empty));
                    }

                    var keyCriteria = new BinaryOperator(opLeft, opRight, BinaryOperatorType.Equal);
                    if (replicationKeyMember.MemberInfo.IsAliased)
                    {
                        var list = objectSpace.CreateCollection(modelClass.TypeInfo.Type);

                        result = (from c in list.Cast <object>()
                                  let objKeyValue = replicationKeyMember.MemberInfo.GetValue(c)
                                                    where keysMatches(objKeyValue, reference.ReplicationKey,
                                                                      replicationKeyIsCaseInsensitive, replicationKeyIsSpaceInsensitive)
                                                    select c).FirstOrDefault();
                    }
                    else
                    {
                        result = objectSpace.FindObject(classType, keyCriteria, true);
                    }
                }
            }
            return(result);
        }
コード例 #32
0
        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));
        }
コード例 #33
0
ファイル: main.cs プロジェクト: staherianYMCA/test
        static void Main(string[] args)
        {
            try
            {
                DevExpress.Xpo.Metadata.ReflectionClassInfo.SuppressSuspiciousMemberInheritanceCheck = true;

                XpoDefault.ConnectionString = MSSqlConnectionProvider.GetConnectionString(".", "sa", "123", "testdb");

                using (var session = new Session())
                {
                    var testDetailWithPolymorphicAssociations = session.GetObjectByKey <TestDetailWithPolymorphicAssociations>(2);

                    var criteria = new OperandProperty("MasterType") == new OperandValue("X");
                    var collectionOfTestDetailWithPolymorphicAssociations = new XPCollection <TestDetailWithPolymorphicAssociations>(session, criteria);
                    foreach (var item in collectionOfTestDetailWithPolymorphicAssociations)
                    {
                        Debug.WriteLine($"{{Id:{item.Id}, MasterType:\"{item.MasterType}\", TestMasterX.Id:{item.TestMasterX.Id}, Val:\"{item.Val}\"}}");
                    }

                    var collectionOfTestMasterX = new XPCollection <TestMasterX>(session);
                    foreach (var item in collectionOfTestMasterX)
                    {
                        Debug.WriteLine($"{{Id:{item.Id}, Val:\"{item.Val}\"}}");
                        foreach (TestDetailWithPolymorphicAssociations _item_ in item.TestDetailWithPolymorphicAssociations)
                        {
                            Debug.WriteLine($"{{Id:{_item_.Id}, MasterType:\"{_item_.MasterType}\", TestMasterX.Id:{_item_.TestMasterX.Id}, Val:\"{_item_.Val}\"}}");
                        }
                    }

                    var testMasterX = new TestMasterX(session);
                    testMasterX.Save();
                    testMasterX.Val = testMasterX.Id.ToString();
                    testDetailWithPolymorphicAssociations            = new TestDetailWithPolymorphicAssociations(session);
                    testDetailWithPolymorphicAssociations.MasterType = "X";
                    testDetailWithPolymorphicAssociations.Val        = $"{testDetailWithPolymorphicAssociations.MasterType}({testMasterX.Id})";
                    testMasterX.TestDetailWithPolymorphicAssociations.Add(testDetailWithPolymorphicAssociations);
                    testMasterX.Save();
                }
            }
            catch (CannotLoadObjectsException eException)
            {
                Console.WriteLine(eException.GetType().FullName + Environment.NewLine + "Message: " + eException.Message + Environment.NewLine + (eException.InnerException != null && !string.IsNullOrEmpty(eException.InnerException.Message) ? "InnerException.Message" + eException.InnerException.Message + Environment.NewLine : string.Empty) + "StackTrace:" + Environment.NewLine + eException.StackTrace);
            }
            catch (Exception eException)
            {
                Console.WriteLine(eException.GetType().FullName + Environment.NewLine + "Message: " + eException.Message + Environment.NewLine + (eException.InnerException != null && !string.IsNullOrEmpty(eException.InnerException.Message) ? "InnerException.Message" + eException.InnerException.Message + Environment.NewLine : string.Empty) + "StackTrace:" + Environment.NewLine + eException.StackTrace);
            }
        }
コード例 #34
0
ファイル: OidMap.cs プロジェクト: xafdelta/xafdelta
        /// <summary>
        /// Finds the application object by replication key.
        /// </summary>
        /// <param name="classType">Type of the class.</param>
        /// <param name="reference">The reference.</param>
        /// <param name="objectSpace">The object space.</param>
        /// <returns>Application object</returns>
        private static object findApplicationObjectByReplicationKey(Type classType, 
            IObjectReference reference, IObjectSpace objectSpace)
        {
            object result = null;
            var modelClass = XafDeltaModule.XafApp.FindModelClass(classType);
            if (modelClass != null && reference.ReplicationKey != null)
            {
                var replicationKeyMember = ExtensionsHelper.GetReplicationKeyMember(modelClass.TypeInfo);
                var replicationKeyIsCaseInsensitive = modelClass.ReplicationKeyIsCaseInsensitive();
                var replicationKeyIsSpaceInsensitive = modelClass.ReplicationKeyIsSpaceInsensitive();
                if (replicationKeyMember != null)
                {

                    CriteriaOperator opLeft = new OperandProperty(replicationKeyMember.Name);
                    CriteriaOperator opRight = new OperandValue(reference.ReplicationKey);

                    if (replicationKeyIsCaseInsensitive)
                    {
                        opLeft = new FunctionOperator(FunctionOperatorType.Upper, opLeft);
                        opRight = new FunctionOperator(FunctionOperatorType.Upper, opRight);
                    }

                    if (replicationKeyIsSpaceInsensitive)
                    {
                        opLeft = new FunctionOperator(FunctionOperatorType.Replace, opLeft,
                            new OperandValue(" "), new OperandValue(String.Empty));
                        opRight = new FunctionOperator(FunctionOperatorType.Replace, opRight,
                            new OperandValue(" "), new OperandValue(String.Empty));
                    }

                    var keyCriteria = new BinaryOperator(opLeft, opRight, BinaryOperatorType.Equal);
                    if(replicationKeyMember.MemberInfo.IsAliased)
                    {
                        var list = objectSpace.CreateCollection(modelClass.TypeInfo.Type);

                        result = (from c in list.Cast<object>()
                                  let objKeyValue = replicationKeyMember.MemberInfo.GetValue(c)
                                  where keysMatches(objKeyValue, reference.ReplicationKey,
                                    replicationKeyIsCaseInsensitive, replicationKeyIsSpaceInsensitive)
                                  select c).FirstOrDefault();
                    }
                    else
                        result = objectSpace.FindObject(classType, keyCriteria, true);
                }
            }
            return result;
        }
コード例 #35
0
 /// <summary>
 /// Преобразование указанного значения в строку формата Variant
 /// </summary>
 /// <param name="value">Значение</param>
 /// <returns>Строка, представляющее значение в формате Variant</returns>
 /// <exception cref="ArgumentException">Значение не поддерживает интерфейс IConvertible</exception>
 public static string ValueToString(object value)
 {
     if (value == null) return null;
     string typeString, valueString;
     if (value is IConvertible)
     {
         typeString = Type.GetTypeCode(value.GetType()).ToString();
         valueString = Convert.ToString(value, CultureInfo.InvariantCulture);
     }
     else
         throw new ArgumentException();
     object t = new OperandProperty(typeString);
     object v = new OperandValue(valueString);
     return string.Concat(t.ToString(), ":", v.ToString());
 }
コード例 #36
0
 protected override object Visit(OperandProperty theOperand)
 {
     return base.Visit(theOperand);
 }
コード例 #37
0
ファイル: Evaluator.cs プロジェクト: eolandezhang/Diagram
 public object Visit(OperandProperty theOperand)
 {
     return BooleanCriteriaStateObject.Value;
 }
コード例 #38
0
ファイル: Evaluator.cs プロジェクト: eolandezhang/Diagram
 object IClientCriteriaVisitor.Visit(OperandProperty theOperand)
 {
     EvaluatorProperty property = PropertyCache[theOperand];
     object objectResult = contexts[property.UpDepth].GetPropertyValue(property);
     if(objectResult == null)
         return null;
     #if !SL
     IList list = objectResult as IList;
     if(list == null) {
         IListSource listSource = objectResult as IListSource;
         if(listSource != null) {
             if(listSource.ContainsListCollection)
                 list = listSource.GetList();
         }
     }
     if(list != null && list is ITypedList) {
         switch(list.Count) {
             case 0:
                 return null;
             default:
                 throw new ArgumentException("single row expected at '" + theOperand.PropertyName + "', provided: " + list.Count.ToString());
             case 1:
                 return list[0];
         }
     }
     #endif
     return objectResult;
 }
コード例 #39
0
        private static CriteriaOperator ProcessSimpleNullExpression(OperandProperty property, ExpressionType expressionType)
        {
            if (expressionType == ExpressionType.Equal)
                return property.IsNull();

            if (expressionType == ExpressionType.NotEqual)
                return property.IsNotNull();

            throw new Exception("Cannot supply null value to operator " + expressionType);
        }
コード例 #40
0
        /// <summary>
        /// Получение выражения запроса
        /// </summary>
        /// <param name="fieldRef"></param>
        /// <returns></returns>
        public override CriteriaOperator GetExpression()
        {
            var fieldRef = new OperandProperty(FilterColumn.Property);
            if (Value.BCheckBoxNull.HasValue)
            {
                if (!Value.BCheckBoxNull.Value)
                {
                    return new UnaryOperator(UnaryOperatorType.IsNull, new OperandProperty(FilterColumn.Property));
                }
                else
                {
                    return new UnaryOperator(UnaryOperatorType.Not, new UnaryOperator(UnaryOperatorType.IsNull, new OperandProperty(FilterColumn.Property)));
                }
            }
            if (Value.SelectedTab == 0)
            {
                DateTime? obj = Value.DateTimeEdit1Value;
                if (!obj.HasValue)
                    return null;
                Operators op = (Operators)comboBox1.Items[Value.ComboBox1SelectedIndex];

                return BuildQueryExpression(op, fieldRef, obj.Value);
            }
            else if (Value.SelectedTab == 1)
            {
                DateTime? o1 = Value.DateTimeEdit2Value;
                DateTime? o2 = Value.DateTimeEdit3Value;
                if (o1.HasValue)
                {
                    if (o2.HasValue)
                    {
                        Operators op1 = Operators.Invert((Operators)comboBox2.Items[Value.ComboBox2SelectedIndex]);
                        Operators op2 = (Operators)comboBox3.Items[Value.ComboBox3SelectedIndex];

                        return new GroupOperator(GroupOperatorType.And,
                            BuildQueryExpression(op1, fieldRef, o1.Value),
                            BuildQueryExpression(op2, fieldRef, o2.Value));
                    }
                    else
                    {
                        // введено только первое значение
                        Operators op = Operators.Invert((Operators)comboBox2.Items[Value.ComboBox2SelectedIndex]);

                        return BuildQueryExpression(op, fieldRef, o1.Value);
                    }
                }
                else if (o2 != null)
                {
                    // введено только второе значение
                    Operators op = (Operators)comboBox3.Items[Value.ComboBox3SelectedIndex];

                    return BuildQueryExpression(op, fieldRef, o2.Value);
                }
                else
                {
                    // ничего не введено
                    return null;
                }
            }
            else if (Value.SelectedTab == 2)
            {
                DateTime? obj = null;
                switch (Value.ComboBoxConditionSelectedIndex)
                {
                    case 0:
                        // сегодня
                        DateTime today = DateTime.Today;
                        obj = today;
                        break;
                    case 1:
                        // первое число
                        DateTime first = new DateTime(DateTime.Today.Year, DateTime.Today.Month, 1);
                        obj = first;
                        break;
                    case 2:
                        // последнее число
                        DateTime last = new DateTime(DateTime.Today.Year, DateTime.Today.Month, 1);
                        last = last.AddMonths(1).AddDays(-1);
                        obj = last;
                        break;
                }
                if (!obj.HasValue)
                    return null;
                if (Value.EditShiftYearValue.HasValue)
                    obj = obj.Value.AddYears(Value.EditShiftYearValue.Value);
                if (Value.EditShiftMonthValue.HasValue)
                    obj = obj.Value.AddMonths(Value.EditShiftMonthValue.Value);
                if (Value.EditShiftDayValue.HasValue)
                    obj = obj.Value.AddDays(Value.EditShiftDayValue.Value);
                Operators op = (Operators)comboBoxOperators2.Items[Value.ComboBoxOperators2SelectedIndex];

                return BuildQueryExpression(op, fieldRef, obj.Value);
            }
            else if (Value.SelectedTab == 3)
            {
                DateTime? obj = Value.ExactDateTimeEditValue;
                if (!obj.HasValue)
                    return null;
                Operators op = (Operators)operatorsComboBox.Items[Value.ComboBox4SelectedIndex];

                return new BinaryOperator(fieldRef, new OperandValue(obj.Value), op.GetOperators()[0]);
            }
            else
            {
                return null;
            }
        }
コード例 #41
0
ファイル: Evaluator.cs プロジェクト: eolandezhang/Diagram
 public virtual object Visit(OperandProperty theOperand)
 {
     if(theOperand.PropertyName.IndexOf('.') < 0
     #if !SL
         && Properties.Find(theOperand.PropertyName, false) == null
     #endif
         && !EvaluatorProperty.GetIsThisProperty(theOperand.PropertyName)) {
         throw new InvalidPropertyPathException(string.Format(CultureInfo.InvariantCulture, FilteringExceptionsText.ExpressionEvaluatorInvalidPropertyPath, theOperand.ToString()));
     }
     return null;
 }
コード例 #42
0
 private static OperandProperty AddKeyProperty(ITypeInfo pti, OperandProperty op)
 {
     return new OperandProperty(op.PropertyName + "." + pti.KeyMember.Name);
 }
コード例 #43
0
        private string ProcessOperandProperty(OperandProperty operandProperty, string alias)
        {
            var operandPropertyName = operandProperty.PropertyName;

            if (operandPropertyName.StartsWith(ConcatOperandOperator.OPERAND_PREFIX))
            {
                return "CONCAT_SMART(" +
                    operandPropertyName
                        .Remove(ConcatOperandOperator.OPERAND_PREFIX)
                        .Split(ConcatOperandOperator.PROPERTY_DELIMETER)
                        .ToString(x => alias + "." + x, ", ") +
                ")";
            }

            if (operandPropertyName.StartsWith(FirstNbytesOperandOperator.OPERAND_PREFIX))
            {
                var query = operandPropertyName.Remove(FirstNbytesOperandOperator.OPERAND_PREFIX)
                                .Split(FirstNbytesOperandOperator.DELIMETER);

                if (query.Length == 2)
                {
                    return "FIRST_NBYTES({0}.{1}, {2})".FillWith(alias, query[0], query[1]);
                }
            }

            return alias + "." + operandPropertyName;
        }
コード例 #44
0
ファイル: NHWhereGenerator.cs プロジェクト: aries544/eXpand
 protected override string FormatOperandProperty(OperandProperty operand)
 {
     return operand.PropertyName;
 }
コード例 #45
0
 public object Visit(OperandProperty theOperand){
     return theOperand;
 }
コード例 #46
0
        protected CriteriaOperator GetFilterCriterion(ComboBoxEdit pi, BaseEdit e, bool IsField, string FieldName)
        {
            if (this.IsFilterExist(pi, e))
            {
                OperandProperty opLeft = new OperandProperty(this.column.FieldName);
                int num = this.OperationNumber(pi.SelectedItem);
                if (num < 0)
                {
                    return null;
                }
                switch (((ExpressionOperators) this.operators[0, num]))
                {
                    case ExpressionOperators.Equals:
                        return (CriteriaOperator) (opLeft == this.GetRightOperand(e, IsField, FieldName));

                    case ExpressionOperators.NotEquals:
                        return (CriteriaOperator) (opLeft != this.GetRightOperand(e, IsField, FieldName));

                    case ExpressionOperators.Greater:
                        return (CriteriaOperator) (opLeft > this.GetRightOperand(e, IsField, FieldName));

                    case ExpressionOperators.GreaterOrEqual:
                        return (CriteriaOperator) (opLeft >= this.GetRightOperand(e, IsField, FieldName));

                    case ExpressionOperators.Less:
                        return (CriteriaOperator) (opLeft < this.GetRightOperand(e, IsField, FieldName));

                    case ExpressionOperators.LessOrEqual:
                        return (CriteriaOperator) (opLeft <= this.GetRightOperand(e, IsField, FieldName));

                    case ExpressionOperators.Blanks:
                        return opLeft.IsNull();

                    case ExpressionOperators.NonBlanks:
                        return opLeft.IsNotNull();

                    case ExpressionOperators.Like:
                        return new BinaryOperator(opLeft, this.PatchLikeOperand(this.GetRightOperand(e, IsField, FieldName)), BinaryOperatorType.Like);
                    //暂时未处理
                    //case ExpressionOperators.NotLike:
                    //    return CriteriaOperator.op_LogicalNot(new BinaryOperator(opLeft, this.PatchLikeOperand(this.GetRightOperand(e, IsField, FieldName)), BinaryOperatorType.Like));
                }
            }
            return null;
        }
コード例 #47
0
 public override Object Visit(OperandProperty operand)
 {
     string result = operand.PropertyName;
     if (!String.IsNullOrWhiteSpace(operand.PropertyName))
     {
         result = currentTableName + "." + operand.PropertyName;
     }
     return new CriteriaToStringVisitResult(result);
 }
コード例 #48
0
ファイル: Evaluator.cs プロジェクト: eolandezhang/Diagram
 public static EvaluatorProperty Create(OperandProperty property)
 {
     return new EvaluatorProperty(property.PropertyName);
 }
コード例 #49
0
 /// <summary>
 /// Построить выражение
 /// </summary>
 /// <param name="op">Оператор</param>
 /// <param name="fieldRef">Поле</param>
 /// <param name="o">Значение</param>
 /// <returns></returns>
 protected CriteriaOperator BuildQueryExpression(Operators op, OperandProperty fieldRef, DateTime o)
 {
     if (op == Operators.NotEqual)
     {
         return new BinaryOperator(new FunctionOperator(FunctionOperatorType.GetDate, fieldRef), new OperandValue(o), BinaryOperatorType.NotEqual);
     }
     else if (op.Binary)
     {
         return new GroupOperator(op.Or ? GroupOperatorType.Or : GroupOperatorType.And,
             new BinaryOperator(new FunctionOperator(FunctionOperatorType.GetDate, fieldRef), new OperandValue(o), op.GetOperators()[0]),
             new BinaryOperator(new FunctionOperator(FunctionOperatorType.GetDate, fieldRef), new OperandValue(o), op.GetOperators()[1])
             );
     }
     else
     {
         return new BinaryOperator(new FunctionOperator(FunctionOperatorType.GetDate, fieldRef), new OperandValue(o), op.GetOperators()[0]);
     }
 }
コード例 #50
0
ファイル: Evaluator.cs プロジェクト: eolandezhang/Diagram
 public EvaluatorProperty this[OperandProperty property]
 {
     get {
         EvaluatorProperty result;
         if(!store.TryGetValue(property, out result)) {
             result = EvaluatorProperty.Create(property);
             store.Add(property, result);
         }
         return result;
     }
 }
コード例 #51
0
ファイル: grammar.cs プロジェクト: eolandezhang/Diagram
  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;
	  }
	}
  }
コード例 #52
0
 public object Visit(OperandProperty theOperand)
 {
     return evaluatorCore.Visit(theOperand);
 }
コード例 #53
0
 /// <summary>
 /// Получить выражение фильтра
 /// </summary>
 /// <param name="fieldRef">Ссылка на поле запроса</param>
 /// <returns>Выражение фильтра</returns>
 public override CriteriaOperator GetExpression()
 {
     if (Value.Nulls.HasValue)
     {
         if (Value.Nulls.Value)
         {
             return new UnaryOperator(UnaryOperatorType.IsNull, new OperandProperty(FilterColumn.Property));
         }
         else
         {
             return new UnaryOperator(UnaryOperatorType.Not, new UnaryOperator(UnaryOperatorType.IsNull, new OperandProperty(FilterColumn.Property)));
         }
     }
     else
     {
         string filter = GetFilterText();
         if (string.IsNullOrEmpty(filter))
             return null;
         else
         {
             CriteriaOperator field = new OperandProperty(FilterColumn.Property);
             if (!Value.CaseSensitive)
             {
                 return new BinaryOperator(new FunctionOperator(FunctionOperatorType.Upper, field), new OperandValue(filter.ToUpper()), BinaryOperatorType.Like);
             }
             else
             {
                 return new BinaryOperator(field, new OperandValue(filter), BinaryOperatorType.Like);
             }
         }
     }
 }
コード例 #54
0
        /// <summary>
        /// Получение выражения запроса
        /// </summary>
        /// <param name="fieldRef"></param>
        /// <returns></returns>
        public override CriteriaOperator GetExpression()
        {
            var fieldRef = new OperandProperty(FilterColumn.Property);
            if (Value.BCheckBoxNull.HasValue)
            {
                if (!Value.BCheckBoxNull.Value)
                {
                    return new UnaryOperator(UnaryOperatorType.IsNull, new OperandProperty(FilterColumn.Property));
                }
                else
                {
                    return new UnaryOperator(UnaryOperatorType.Not, new UnaryOperator(UnaryOperatorType.IsNull, new OperandProperty(FilterColumn.Property)));
                }
            }
            else
            {
                if (Value.BCheckedListBox == null) return null;
                var type = Type;
                if (type.IsGenericType && type.GetGenericTypeDefinition().FullName == "System.Nullable`1" && type.GenericTypeArguments[0].IsEnum)
                {
                    type = type.GenericTypeArguments[0];
                }
                EnumDescriptor ed = new EnumDescriptor(type);
                List<string> items = new List<string>();
                for (int i = 0; i < Value.BCheckedListBox.Length; i++)
                {
                    if (Value.BCheckedListBox[i])
                    {
                        items.Add((string)checkedListBox1.Items[i]);
                    }
                }
                if (items.Count == 0) return null;

                int val = 0;
                bool flags = false;
                bool flag_none = false;

                // Определение на флаговый атрибут
                Type enumType = type.UnderlyingSystemType;
                Object[] attrs = enumType.GetCustomAttributes(typeof(FlagsAttribute), false);
                if (attrs.Length > 0)
                {
                    flags = true;
                }

                // Используется ли значение "никакой" в фильтре флага
                if (flags)
                {
                    foreach (var enumValue in Enum.GetValues(type))
                    {
                        if ((int)enumValue == 0)
                        {
                            flag_none = true;
                            break;
                        }
                    }
                }

                CriteriaOperator[] values = null;

                if (flag_none)
                {
                    // Для значения "никакой" используется обычное условие равенства фильтруемого поля нулю
                    values = new CriteriaOperator[1];
                    values[0] = new BinaryOperator(fieldRef, new OperandValue(0), BinaryOperatorType.Equal);
                }
                else
                {
                    if (!flags)
                    {
                        values = new CriteriaOperator[items.Count];
                    }
                    else
                    {
                        values = new CriteriaOperator[1];
                    }
                    for (int i = 0; i < items.Count; i++)
                    {
                        object enumVal = null;
                        foreach (var enumValue in Enum.GetValues(type))
                        {
                            if (ed.GetCaption(enumValue) == items[i])
                            {
                                enumVal = enumValue;
                                break;
                            }
                        }
                        if (flags)
                        {
                            val |= (int)enumVal;
                        }
                        else
                            values[i] = new BinaryOperator(fieldRef, new OperandValue(enumVal), BinaryOperatorType.Equal);
                    }
                    if (flags)
                    {
                        values[0] = new BinaryOperator(fieldRef, new OperandValue(val), BinaryOperatorType.Equal);
                    }
                }

                return GroupOperator.Or(values);
            }
        }