static string GetPreconditionOperandString(OperandValue operand, string @operator, List <string> parameterNames)
        {
            if (operand.Trait == null)
            {
                if (operand.Enum != null)
                {
                    return($"{operand.Enum.name}.{operand.Value}");
                }

                if (parameterNames.Contains(operand.Parameter))
                {
                    return($"stateData.GetTraitBasedObjectId({operand.Parameter}Index)");
                }

                return(operand.Value);
            }

            var precondition = $"{operand.Trait.name}Buffer[{operand.Parameter}Object.{operand.Trait.name}Index]";

            if (!string.IsNullOrEmpty(operand.TraitProperty.Name))
            {
                precondition += $".{operand.TraitProperty.Name}";

                var operandPropertyType = operand.TraitProperty.Type;
                if (IsListType(operandPropertyType))
                {
                    if (IsComparisonOperator(@operator))
                    {
                        precondition += ".Length";
                    }
                }
            }

            return(precondition);
        }
        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"));
            }
        }
        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"));
            }
        }
Example #4
0
 /// <summary>
 /// 重新设定表达式,
 /// 如果是LIKE表达式,自动在前后加上%%
 /// </summary>
 /// <param name="operandValue">需要被设定的表达式</param>
 private void resetOperandValue(CriteriaOperator critalOperator)
 {
     if (critalOperator is GroupOperator)
     {
         //多个表达式连接在一起的
         GroupOperator groupOperator = critalOperator as GroupOperator;
         foreach (CriteriaOperator cOperator in groupOperator.Operands)
         {
             resetOperandValue(cOperator);
         }
     }
     else if (critalOperator is UnaryOperator)
     {
         //一元表达式,例如NOT,一元表示下还可能包括二元表达式
         UnaryOperator unaryOperator = critalOperator as UnaryOperator;
         resetOperandValue(unaryOperator.Operand);
     }
     //二元表达式,需要被格式化的表达式
     else if (critalOperator is BinaryOperator)
     {
         BinaryOperator binaryOperator = critalOperator as BinaryOperator;
         if (binaryOperator.OperatorType == BinaryOperatorType.Like)
         {
             OperandValue operandValue = binaryOperator.RightOperand as OperandValue;
             if (operandValue.Value is string)
             {
                 if (((string)operandValue.Value).IndexOf("%") < 0)
                 {
                     ((OperandValue)((BinaryOperator)critalOperator).RightOperand).Value = "%" + operandValue.Value.ToString() + "%";
                 }
             }
         }
     }
 }
        private ActionScope InitializeScope(int formID, int actionID, Dictionary <int, string> operandID_Value)
        {
            FormInstance       formInstance = new FormMetaBLL().GetFormMetaDescriptions(formID);
            BaseActionInstance action       = formInstance.GetEventAction(actionID);

            if (action == null)
            {
                throw new FormGenerationException(string.Format(
                                                      "Action not found in form actions (ActionID = {0}, FormID = {1})",
                                                      actionID,
                                                      formInstance.Form.FormID
                                                      ));
            }

            List <OperandValue> operandValues = new List <OperandValue>();

            foreach (int operandID in operandID_Value.Keys)
            {
                string            serializedValue = operandID_Value[operandID];
                PropertyValueType valueType       = formInstance.GetOperandValueType(operandID);
                OperandValue      operand         = new OperandValue(operandID, valueType, serializedValue);
                operandValues.Add(operand);
            }

            return(new ActionScope(action, formInstance, operandValues));
        }
    protected void grid_CustomJSProperties(object sender, ASPxGridViewClientJSPropertiesEventArgs e)
    {
        var grid             = sender as ASPxGridView;
        var filterExpression = ((GridViewDataColumn)grid.Columns["BirthDate"]).FilterExpression;

        if (!string.IsNullOrEmpty(filterExpression))
        {
            var      co    = (GroupOperator)CriteriaOperator.Parse(filterExpression);
            DateTime start = new DateTime();
            DateTime end   = new DateTime();
            foreach (BinaryOperator op in co.Operands)
            {
                OperandValue val = (OperandValue)op.RightOperand;
                if (op.OperatorType == BinaryOperatorType.GreaterOrEqual)
                {
                    start = (DateTime)val.Value;
                }
                else if (op.OperatorType == BinaryOperatorType.Less)
                {
                    end = ((DateTime)val.Value).AddDays(-1);
                }
                else if (op.OperatorType == BinaryOperatorType.LessOrEqual)
                {
                    end = (DateTime)val.Value;
                }
            }
            var dates = new Dates();
            dates.DateFrom          = start;
            dates.DateTo            = end;
            e.Properties["cpDates"] = dates;
        }
    }
Example #7
0
 public override void Visit(OperandValue theOperand)
 {
     if (theOperand.Value == null)
     {
         isCriteriaOperatorValid = false;
     }
 }
Example #8
0
        private static FunctionOperator createOperandValue(object requiredValue, FunctionOperatorType operatorType)
        {
            CriteriaOperatorCollection operands = new CriteriaOperatorCollection();
            OperandValue operandValue           = new OperandValue(requiredValue);

            operands.Add(operandValue);
            return(new FunctionOperator(operatorType, operands));
        }
 public CriteriaOperator Visit(OperandValue theOperand)
 {
     if (theOperand.Value == null)
     {
         return(null);
     }
     return(theOperand);
 }
Example #10
0
 protected override CriteriaOperator Visit(OperandValue theOperand)
 {
     if (theOperand.Value is DevExpress.Xpo.IXPSimpleObject)
     {
         object key = ((DevExpress.Xpo.IXPSimpleObject)theOperand.Value).Session.GetKeyValue(theOperand.Value);
         return(new OperandValue(key));
     }
     return(base.Visit(theOperand));
 }
		protected override void Process(OperandValue operand) {
			base.Process(operand);
			if(operand.Value != null) {
				ITypeInfo valueTypeInfo = typesInfo.FindTypeInfo(operand.Value.GetType());
				if((valueTypeInfo != null) && valueTypeInfo.IsDomainComponent) {
					operand.Value = valueTypeInfo.KeyMember.GetValue(operand.Value);
				}
			}
		}
        protected virtual CriteriaOperator VisitValue(OperandValue theOperand)
        {
            var constantValue = theOperand as ConstantValue;

            if (!ReferenceEquals(constantValue, null))
            {
                Values.Add(constantValue.Value.ToString());
            }
            return(theOperand);
        }
        protected override object Visit(OperandValue theOperand)
        {

            if (theOperand.Value != null)
            {
                var ti = GetPersistentTypeInfo(theOperand);
                if (ti != null)
                    return new OperandValue(ti.KeyMember.GetValue(theOperand.Value));
            }
            return base.Visit(theOperand);
        }
Example #14
0
        public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            BinaryOperator op = values[0] as BinaryOperator;

            if (object.ReferenceEquals(op, null))
            {
                return(null);
            }
            OperandValue operandValue = op.RightOperand as OperandValue;

            return(operandValue.Value);
        }
        object IValueConverter.Convert(object value, Type targetType, object parameter, string language)
        {
            BinaryOperator op = value as BinaryOperator;

            if (object.ReferenceEquals(op, null))
            {
                return(0d);
            }
            OperandValue operandValue = op.RightOperand as OperandValue;

            return(operandValue.Value);
        }
Example #16
0
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            BinaryOperator binaryOperator = value as BinaryOperator;

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

            OperandValue rightOperand = binaryOperator.RightOperand as OperandValue;

            return(rightOperand.Value);
        }
        private string ProcessOperandValue(OperandValue operandValue)
        {
            var parameterName  = "param" + AggregatedParameters.Count;
            var parameterValue = operandValue.Value;

            if (parameterValue == null)
            {
                return("null");
            }

            AggregatedParameters.Add(parameterName, parameterValue);

            return(":" + parameterName);
        }
Example #18
0
        string ICriteriaVisitor <string> .Visit(OperandValue theOperand)
        {
            var c   = theOperand as ConstantValue;
            var str = ReferenceEquals(c, null)
                ? theOperand.LegacyToString()
                : SqlExpressionHelper.GetCorrectStringValue(c.Value);

            if (string.IsNullOrEmpty(str))
            {
                return(str);
            }

            return(_isNeedUpper ? string.Format("upper({0})", str) : str);
        }
Example #19
0
        /// <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);
        }
        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));
        }
        void PatchOperator(OperandValue opr, DateTime date, string range, bool isFirst)
        {
            if (((object)opr) == null)
            {
                return;
            }
            switch (range)
            {
            case "Day": opr.Value = date.AddDays(isFirst ? 1 : -1); break;

            case "Week": opr.Value = date.AddDays(isFirst ? 7 : -7); break;

            case "Month": opr.Value = date.AddMonths(isFirst ? 1 : -1); break;
            }
        }
Example #22
0
        protected string GetDisplayText(OperandProperty firstOperand, CriteriaOperator op)
        {
            OperandValue v = op as OperandValue;

            if (!ReferenceEquals(v, null))
            {
                return(node.OwnerControl.FilterColumns.GetValueScreenText(firstOperand, v.Value));
            }
            OperandProperty p = op as OperandProperty;

            if (!ReferenceEquals(p, null))
            {
                return(GetDisplayText(p));
            }
            return(CriteriaOperator.ToString(op));
        }
        object GetFilterValueByColumn(GridColumn column)
        {
            BinaryOperator bo = column.FilterInfo.FilterCriteria as BinaryOperator;

            if (ReferenceEquals(bo, null))
            {
                return(null);
            }
            OperandValue value = bo.RightOperand as OperandValue;

            if (ReferenceEquals(value, null))
            {
                return(null);
            }
            return(value.Value);
        }
Example #24
0
        private void ProjectSearchLookUpEdit_EditValueChanged(object sender, EventArgs e)
        {
            if (ProjectSearchLookUpEdit.EditValue == null)
            {
                return;
            }

            Guid projectId = projectId = (Guid)ProjectSearchLookUpEdit.EditValue;;

            if (projectId == Guid.Empty)
            {
                return;
            }


            // iteration reload data
            ProjectIterationSearchLookUpEdit.ReloadData(new BinaryOperator("ProjectId", projectId));

            // iteration reload data
            ProjectModuleSearchLookUpEdit.ReloadData(new BinaryOperator("ProjectId", projectId));
            // owner reload data
            EventHandler <EventArgs <Guid> > handler = OnProjectChange;

            if (handler != null)
            {
                handler(OwnerIdLookUpEdit, new EventArgs <Guid>(projectId));
            }

            EntityBindingSource.Current.AsDyanmic().ProjectId = projectId;

            CriteriaOperator theOperator = Context.GetFilter("ProjectIterationId");

            if (theOperator == null)
            {
                return;
            }
            if (!(theOperator is BinaryOperator))
            {
                return;
            }
            OperandValue operandValue = ((BinaryOperator)theOperator).RightOperand as OperandValue;

            if (operandValue.Value is Guid)
            {
                EntityBindingSource.Current.AsDyanmic().ProjectIterationId = operandValue.Value;
            }
        }
Example #25
0
        private void ExtractOne(Dictionary <string, object> dict, CriteriaOperator op)
        {
            BinaryOperator opBinary = op as BinaryOperator;

            if (ReferenceEquals(opBinary, null))
            {
                return;
            }
            OperandProperty opProperty = opBinary.LeftOperand as OperandProperty;
            OperandValue    opValue    = opBinary.RightOperand as OperandValue;

            if (ReferenceEquals(opBinary, null) || ReferenceEquals(opValue, null))
            {
                return;
            }
            dict.Add(opProperty.PropertyName, opValue.Value);
        }
Example #26
0
        protected override void Process(OperandValue theOperand)
        {
            base.Process(theOperand);

            if (theOperand.Value != null)
            {
                ITypeInfo typeInfo = XafTypesInfo.Instance.FindTypeInfo(theOperand.Value.GetType());
                if (typeInfo != null)
                {
                    if (typeInfo.DefaultMember != null)
                    {
                        theOperand.Value = typeInfo.DefaultMember.GetValue(theOperand.Value).ToString();
                        return;
                    }
                }
                theOperand.Value = theOperand.Value.ToString();
            }
        }
Example #27
0
        public ContainsFunction(string propertyName, OperandValue operandValue)
        {
            OperatorType = FunctionOperatorType.Custom;
            Operands.Clear();
            Operands.Add(new OperandValue(ContainsFunctionName));
            Operands.Add(new OperandProperty(propertyName));
//            string[] strings = operandValue.Value.ToString().Split(' ');
//            string value = "";
//            for (int i = 0; i < strings.Length; i++)
//            {
//                strings[i] = strings[i].Trim() + " NEAR ";
//                value += strings[i];
//            }
//            value = value.Substring(0, value.LastIndexOf(" NEAR "));
//            operandValue.Value=value;
            operandValue.Value = "\"" + operandValue.Value + "\"";
            Operands.Add(operandValue);
        }
Example #28
0
        /// <summary>
        /// Metodo que ternona los parametros de entrada del
        /// SP
        /// </summary>
        /// <param name="list"></param>
        /// <returns></returns>
        private OperandValue[] GetOperands(object[] list)
        {
            if (list != null && list.Length > 0)
            {
                var            parametersLegth = list.Length;
                OperandValue[] parameters      = new OperandValue[parametersLegth];

                for (int parameter = 0; parameter < parametersLegth; parameter++)
                {
                    parameters[parameter] = new OperandValue(list[parameter]);
                }
                return(parameters);
            }
            else
            {
                return(null);
            }
        }
        protected override void Process(OperandValue theOperand)
        {
            base.Process(theOperand);

            if (theOperand.Value != null)
            {
                ITypeInfo typeInfo = XafTypesInfo.Instance.FindTypeInfo(theOperand.Value.GetType());
                if (typeInfo != null)
                {
                    if (typeInfo.DefaultMember != null)
                    {
                        theOperand.Value = typeInfo.DefaultMember.GetValue(theOperand.Value).ToString();
                        return;
                    }
                }
                theOperand.Value = theOperand.Value.ToString();
            }
        }
Example #30
0
        public ContainsFunction(string propertyName, OperandValue operandValue)
        {
            OperatorType = FunctionOperatorType.Custom;
            Operands.Clear();
            Operands.Add(new OperandValue(ContainsFunctionName));
            Operands.Add(new OperandProperty(propertyName));
//            string[] strings = operandValue.Value.ToString().Split(' ');
//            string value = "";
//            for (int i = 0; i < strings.Length; i++)
//            {
//                strings[i] = strings[i].Trim() + " NEAR ";
//                value += strings[i];
//            }
//            value = value.Substring(0, value.LastIndexOf(" NEAR "));
//            operandValue.Value=value;
            operandValue.Value = "\"" + operandValue.Value + "\"";
            Operands.Add(operandValue);
        }
        public OperandSelectorPopup(SerializedProperty property, IList <ParameterDefinition> parameters, bool allowParameter, bool allowTrait, Action <SerializedProperty> onExpectedTypeChanged = null, Type expectedType = null, string expectedUnknownType = default)
        {
            m_Property = property;

            m_EditingOperand = new OperandValue()
            {
                Parameter       = property.FindPropertyRelative("m_Parameter").stringValue,
                Trait           = property.FindPropertyRelative("m_Trait").objectReferenceValue as TraitDefinition,
                TraitPropertyId = property.FindPropertyRelative("m_TraitPropertyId").intValue,
                Enum            = property.FindPropertyRelative("m_Enum").objectReferenceValue as EnumDefinition,
                Value           = property.FindPropertyRelative("m_Value").stringValue
            };

            m_Parameters            = parameters;
            m_OnExpectedTypeChanged = onExpectedTypeChanged;

            m_AllowParameter = allowParameter;
            m_AllowTrait     = allowTrait;

            m_ExpectedType        = expectedType;
            m_ExpectedUnknownType = expectedUnknownType;

            if (allowParameter || expectedType == null || expectedType == typeof(UnityEngine.GameObject))
            {
                m_ParameterValues = m_Parameters.Select(param => param.Name).ToList();
            }
            else if (m_AllowTrait)
            {
                m_ParameterValues = m_Parameters.Where(param => param.RequiredTraits.Any()).Select(param => param.Name).ToList();
            }
            else
            {
                m_ParameterValues = new List <string>();

                // Add only parameters that allow valid fields selection
                foreach (var parameter in parameters)
                {
                    if (parameter.RequiredTraits.Any(t => t.Properties.Any(IsValidField)))
                    {
                        m_ParameterValues.Add(parameter.Name);
                    }
                }
            }
        }
Example #32
0
        private void SetContextProject()
        {
            if (EntityBindingSource.Current == null)
            {
                return;
            }
            CriteriaOperator theOperator = Context.GetFilter("ProjectId");

            if (theOperator == null)
            {
                return;
            }
            if (!(theOperator is BinaryOperator))
            {
                return;
            }
            OperandValue operandValue = ((BinaryOperator)theOperator).RightOperand as OperandValue;

            if (operandValue.Value is Guid)
            {
                ((Katrin.Domain.Impl.ProjectTask)EntityBindingSource.Current).ProjectId = (Guid)operandValue.Value;
            }
        }
Example #33
0
        private void SetContextProject()
        {
            if (EntityBindingSource.Current == null)
            {
                return;
            }
            CriteriaOperator theOperator = Context.GetFilter("ProjectId");

            if (theOperator == null)
            {
                return;
            }
            if (!(theOperator is BinaryOperator))
            {
                return;
            }
            OperandValue operandValue = ((BinaryOperator)theOperator).RightOperand as OperandValue;

            if (operandValue.Value is Guid)
            {
                EntityBindingSource.Current.AsDyanmic().ProjectId = operandValue.Value;
            }
        }
Example #34
0
        /// <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;
        }
Example #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());
 }
Example #36
0
 public object Visit(OperandValue theOperand) {
     /* Nothing special to do here.. */
     return theOperand;
 }
Example #37
0
 public Term(OperandValue e)
 {
   _functor = e.Value;
   fType = e.FType;
 }
Example #38
0
 public virtual object Visit(OperandValue theOperand)
 {
     return null;
 }
 /// <contentfrom cref="ICriteriaVisitor.Visit(OperandValue)"/>
 public object Visit(OperandValue theOperand)
 {
     return theOperand;
 }
 /// <contentfrom cref="ISecurityRule.GetSelectMemberExpression" />
 public bool GetSelectMemberExpression(DevExpress.Xpo.SecurityContext context, XPClassInfo classInfo, XPMemberInfo memberInfo, out CriteriaOperator expression)
 {
     CriteriaOperator subExpression;
     expression = null;
     foreach (ISecurityRule rule in rules)
         if (rule.GetSelectMemberExpression(context, classInfo, memberInfo, out subExpression))
         {
             if (ReferenceEquals(expression, null))
                 expression = subExpression;
             else if (!CriteriaOperator.CriterionEquals(expression, subExpression))
             {
                 expression = new OperandValue(null);
                 return true;
             }
         }
     return !ReferenceEquals(expression, null);
 }
Example #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;
	  }
	}
  }
Example #42
0
 object ICriteriaVisitor.Visit(OperandValue theOperand)
 {
     object value = theOperand.Value;
     if (value == null)
         return nullString;
     TypeCode tc = Type.GetTypeCode(value.GetType());
     switch (tc)
     {
         case TypeCode.DBNull:
         case TypeCode.Empty:
             return nullString;
         case TypeCode.Boolean:
             return ((bool)value) ? "1" : "0";
         case TypeCode.Char:
             return "'" + (char)value + "'";
         case TypeCode.DateTime:
             DateTime datetimeValue = (DateTime)value;
             string dateTimeFormatPattern;
             if (datetimeValue.TimeOfDay == TimeSpan.Zero)
             {
                 dateTimeFormatPattern = "yyyyMMdd";
             }
             else if (datetimeValue.Millisecond == 0)
             {
                 dateTimeFormatPattern = "yyyyMMdd HH:mm:ss";
             }
             else
             {
                 dateTimeFormatPattern = "yyyyMMdd HH:mm:ss.fff";
             }
             return "Cast('" + datetimeValue.ToString(dateTimeFormatPattern, CultureInfo.InvariantCulture) + "' as datetime)";
         case TypeCode.String:
             return AsString(value);
         case TypeCode.Decimal:
             return FixNonFixedText(((Decimal)value).ToString(CultureInfo.InvariantCulture));
         case TypeCode.Double:
             return FixNonFixedText(((Double)value).ToString("r", CultureInfo.InvariantCulture));
         case TypeCode.Single:
             return FixNonFixedText(((Single)value).ToString("r", CultureInfo.InvariantCulture));
         case TypeCode.Byte:
         case TypeCode.SByte:
         case TypeCode.Int16:
         case TypeCode.UInt16:
         case TypeCode.Int32:
         case TypeCode.UInt32:
         case TypeCode.Int64:
             if (value is Enum)
                 return Convert.ToInt64(value).ToString();
             return value.ToString();
         case TypeCode.UInt64:
             if (value is Enum)
                 return Convert.ToUInt64(value).ToString();
             return value.ToString();
         case TypeCode.Object:
         default:
             if (value is Guid)
             {
                 return "Cast('" + ((Guid)value).ToString() + "' as Guid)";
             }
             else if (value is TimeSpan)
             {
                 return FixNonFixedText(((TimeSpan)value).TotalSeconds.ToString("r", CultureInfo.InvariantCulture));
             }
             else
             {
                 throw new ArgumentException(value.ToString());
             }
     }
 }
        // Подготовка параметров для добавления или обновления записи
        private void PrepareParameters(bool edit)
        {
            List<int> setValues = new List<int>(); setValues.Add(0);
            int groupIndex = 0, bitIndex = 0;
            foreach (DBColumn column in table.Columns)
            {
                // Ключ
                if (column.IsKey && keyProcessed.Contains(column.Name)) continue;   // processed key

                // Переданное значение
                OperandValue value = null;
                for (int i = 0; i < Root.Operands.Count; i++)
                    if (Root.Operands[i] is QueryOperand && ((QueryOperand)Root.Operands[i]).ColumnName == column.Name)
                    {
                        value = Root.Parameters[i];
                        break;
                    }

                // Поле readonly
                bool hasValue = !ReferenceEquals(value, null);
                if (edit && table.ColumnIsReadOnly(column))                        // readonly
                    if (hasValue) throw new OracleConnectionProviderException(
                        string.Format("Table '{0}.{1}', column '{2}' is readonly", schemaName, tableName, column.Name));
                    else continue;

                // Значение по умолчанию
                if (ReferenceEquals(value, null))
                    value = new OperandValue(null);

                // Обход bug ORA-1460 (см. OracleConnectionProviderEx.CreateParameter)
                if (column.ColumnType == DBColumnType.ByteArray && value.Value == null) value.Value = new byte[0];

                // Параметр
                string parameter = AddParameter(value, column.Name);
                if (parametersVars.Length > 0) parametersVars.Append(", ");
                parametersVars.Append(parameter);

                // Биты редактирования полей
                if (edit && !column.IsKey)
                {
                    if (hasValue) setValues[groupIndex] += Convert.ToInt32(Math.Pow(2, bitIndex));
                    bitIndex++;
                    if (bitIndex == OracleTemplater.MaxBitsInNumber) { setValues.Add(0); groupIndex++; bitIndex = 0; }
                }
            }
            if (edit)
            {
                for (groupIndex = 0; groupIndex < setValues.Count; groupIndex++)
                {
                    string parameter = AddParameter(new OperandValue(setValues[groupIndex]),
                        OracleTemplater.SetValueFlagsParameter + (groupIndex == 0 ? string.Empty : groupIndex.ToString()), false);
                    if (parametersVars.Length > 0) parametersVars.Append(", ");
                    parametersVars.Append(parameter);
                }
            }
        }
 /// <summary>Добавить параметр</summary>
 /// <param name="value">Значение</param>
 /// <param name="columnName">Название колонки, если это простой вызов процедуры</param>
 /// <param name="formatName">Признак необходимости форматирования названия параметра</param>
 /// <returns>Название параметра</returns>
 private string AddParameter(OperandValue value, string columnName, bool formatName = true)
 {
     string name = whereCondition == null && columnName != null ?
         (formatName ? formatterSequred.FormatProcedureParameter(columnName) : columnName) :
         ":p" + commandParamsNames.Count.ToString();
     value = identitiesByTag.ConsolidateParameter(value);
     commandParamsNames.Add(name);
     commandParams.Add(value);
     return name;
 }
 /// <contentfrom cref="ICriteriaVisitor.Visit(OperandValue)"/>
 object ICriteriaVisitor.Visit(OperandValue theOperand)
 {
     return AddParameter(theOperand, null);
 }
 public override Object Visit(OperandValue operand)
 {
     if (operand is OperandParameter)
     {
         if (operand.Value is DateTime)
         {
             return new CriteriaToStringVisitResult("DateTime'" + ((DateTime)operand.Value).ToString("yyyy-MM-dd HH:mm:ss.fffff") + "'");
         }
         else
         {
             return new CriteriaToStringVisitResult(ValueToString(operand.Value));
         }
     }
     else if ((operand.Value != null))
     {
         if (operand.Value.GetType().IsEnum)
         {
             return new CriteriaToStringVisitResult(
                 String.Format("Cast({0} as {1})", ValueToString(System.Convert.ToInt64(operand.Value)), operand.Value.GetType().FullName));
         }
         else if (operand.Value is Guid)
         {
             return new CriteriaToStringVisitResult(string.Format(CultureInfo.InvariantCulture, "'{0}'", operand.Value));
         }
     }
     return base.Visit(operand);
 }
Example #47
0
 object ICriteriaVisitor.Visit(OperandValue theOperand)
 {
     object operandValue = theOperand.Value;
     return operandValue;
 }
Example #48
0
 public object Visit(OperandValue theOperand)
 {
     return BooleanCriteriaStateObject.Value;
 }
 /// <inheritdoc />
 public override string GetNextParameterName(OperandValue parameter)
 {
     return parent.GetNextParameterName(parameter);
 }
        private string ProcessOperandValue(OperandValue operandValue)
        {
            var parameterName = "param" + AggregatedParameters.Count;
            var parameterValue = operandValue.Value;

            if (parameterValue == null)
            {
                return "null";
            }

            AggregatedParameters.Add(parameterName, parameterValue);

            return ":" + parameterName;
        }
 public void ToStringTestNonLegacy()
 {
     CriteriaOperator opa = new OperandValue() & new OperandValue(true) & 'q' & new DateTime(2006, 12, 02) & "q" & 1m & 1d & 1f & new OperandValue((byte)1) & new OperandValue((sbyte)1) & (short)1 & new OperandValue((ushort)1) & 1 & new OperandValue(1u) & 1L & new OperandValue(1uL) & Guid.Empty & TimeSpan.Zero;
     string tostr = opa.ToString();
     Assert.AreEqual("? And True And 'q'c And #2006-12-02# And 'q' And 1.0m And 1.0 And 1.0f And 1b And 1sb And 1s And 1us And 1 And 1u And 1L And 1uL And {00000000-0000-0000-0000-000000000000} And #00:00:00#", tostr);
     Assert.AreEqual(opa, CriteriaOperator.Parse(tostr));
 }
Example #52
0
        object ICriteriaVisitor.Visit(OperandValue theOperand)
        {
            object value = theOperand.Value;

            if (value == null)
            {
                return(nullString);
            }
            TypeCode tc = Type.GetTypeCode(value.GetType());

            switch (tc)
            {
            case TypeCode.DBNull:
            case TypeCode.Empty:
                return(nullString);

            case TypeCode.Boolean:
                return(((bool)value) ? "1" : "0");

            case TypeCode.Char:
                return("'" + (char)value + "'");

            case TypeCode.DateTime:
                DateTime datetimeValue = (DateTime)value;
                string   dateTimeFormatPattern;
                if (datetimeValue.TimeOfDay == TimeSpan.Zero)
                {
                    dateTimeFormatPattern = "yyyyMMdd";
                }
                else if (datetimeValue.Millisecond == 0)
                {
                    dateTimeFormatPattern = "yyyyMMdd HH:mm:ss";
                }
                else
                {
                    dateTimeFormatPattern = "yyyyMMdd HH:mm:ss.fff";
                }
                return("Cast('" + datetimeValue.ToString(dateTimeFormatPattern, CultureInfo.InvariantCulture) + "' as datetime)");

            case TypeCode.String:
                return(AsString(value));

            case TypeCode.Decimal:
                return(FixNonFixedText(((Decimal)value).ToString(CultureInfo.InvariantCulture)));

            case TypeCode.Double:
                return(FixNonFixedText(((Double)value).ToString("r", CultureInfo.InvariantCulture)));

            case TypeCode.Single:
                return(FixNonFixedText(((Single)value).ToString("r", CultureInfo.InvariantCulture)));

            case TypeCode.Byte:
            case TypeCode.SByte:
            case TypeCode.Int16:
            case TypeCode.UInt16:
            case TypeCode.Int32:
            case TypeCode.UInt32:
            case TypeCode.Int64:
                if (value is Enum)
                {
                    return(Convert.ToInt64(value).ToString());
                }
                return(value.ToString());

            case TypeCode.UInt64:
                if (value is Enum)
                {
                    return(Convert.ToUInt64(value).ToString());
                }
                return(value.ToString());

            case TypeCode.Object:
            default:
                if (value is Guid)
                {
                    return("Cast('" + ((Guid)value).ToString() + "' as Guid)");
                }
                else if (value is TimeSpan)
                {
                    return(FixNonFixedText(((TimeSpan)value).TotalSeconds.ToString("r", CultureInfo.InvariantCulture)));
                }
                else
                {
                    throw new ArgumentException(value.ToString());
                }
            }
        }
Example #53
0
 public object Visit(OperandValue theOperand)
 {
     return evaluatorCore.Visit(theOperand);
 }