Ejemplo n.º 1
0
 private void _RecurseExpression(IDataExpression exp, IDictionary <string, object> nameValuePairs, ref int totalUpdated)
 {
     if (totalUpdated < nameValuePairs.Count)
     {
         if (exp is ValueExpression)
         {
             var valueExp = exp as ValueExpression;
             if (!valueExp.Name.IsNullOrEmpty() && nameValuePairs.ContainsKey(valueExp.Name))
             {
                 valueExp.Value = nameValuePairs[valueExp.Name];
                 totalUpdated++;
             }
         }
         if (exp is ICompositeExpression)
         {
             var compoundExp = exp as ICompositeExpression;
             if (!compoundExp.Expressions.IsNullOrEmpty())
             {
                 foreach (var childExp in compoundExp.Expressions)
                 {
                     _RecurseExpression(childExp, nameValuePairs, ref totalUpdated);
                 }
             }
         }
     }
 }
Ejemplo n.º 2
0
        // ------------------------------------------
        // EVALUATION
        // ------------------------------------------

        #region Evaluation

        // Expression

        /// <summary>
        /// Evaluates the specified data expression.
        /// </summary>
        /// <param name="expression">The data expression to consider.</param>
        /// <param name="scriptVariableSet">The script variable set to consider.</param>
        /// <param name="log">The log to consider.</param>
        /// <returns>Literal or script value according to the specified default mode.</returns>
        public object Evaluate(
            IDataExpression expression,
            IScriptVariableSet scriptVariableSet = null,
            IBdoLog log = null)
        {
            int index;
            int scriptwordBeginIndex;

            var script = expression?.Text ?? string.Empty;

            switch (expression?.Kind)
            {
            case DataExpressionKind.Auto:
                if (!string.IsNullOrEmpty(script))
                {
                    var resultScript = script;

                    scriptwordBeginIndex = script.IndexOf("{{");
                    while (scriptwordBeginIndex > -1)
                    {
                        index = script.IndexOfNextString("}}", scriptwordBeginIndex + 1);

                        if ((scriptwordBeginIndex > -1) && (index > -1))
                        {
                            var subScript = script.Substring(2)[0..^ 2];
Ejemplo n.º 3
0
        // Having -------------------------------------

        /// <summary>
        ///
        /// </summary>
        public IDbSingleQuery Having(IDataExpression expression)
        {
            HavingClause = new DbQueryHavingClause()
            {
                Expression = expression as DataExpression
            };
            return(this);
        }
Ejemplo n.º 4
0
 /// <summary>
 ///
 /// </summary>
 public IDbSingleQuery GroupBy(IDataExpression expression)
 {
     GroupByClause = new DbQueryGroupByClause()
     {
         Expression = expression as DataExpression
     };
     return(this);
 }
Ejemplo n.º 5
0
 /// <summary>
 ///
 /// </summary>
 public IDbSingleQuery From(IDataExpression expression)
 {
     FromClause = new DbQueryFromClause()
     {
         Expression = expression as DataExpression
     };
     return(this);
 }
Ejemplo n.º 6
0
        // Where -------------------------------------

        /// <summary>
        ///
        /// </summary>
        public IDbSingleQuery Where(IDataExpression expression)
        {
            var idFields = WhereClause?.IdFields;

            WhereClause = new DbQueryWhereClause()
            {
                Expression = expression as DataExpression
            };
            WhereClause.IdFields = idFields;
            return(this);
        }
Ejemplo n.º 7
0
        public static IDataExpression Create(Domain.Expression exp, IDataContext context)
        {

            IDataRepository<Domain.Expression> exprRepos = new EFDataRepository<Domain.Expression>(context);

            var newExp = ExpressionFactory.Create((ExpressionType)exp.ExpressionTypeId);

            IDataExpression outExp = newExp;

            if (outExp is ICompositeExpression)
            {
                var compExp = newExp as ICompositeExpression;

                var childExp = exprRepos.Query(x => x.ParentExpressionId == (long)exp.Id).ToArray();

                if (!childExp.IsNullOrEmpty())
                {
                    var childExpList = new List<IDataExpression>();

                    foreach (var child in childExp)
                    {
                        var newChild = _Create(child, context);
                        childExpList.Add(newChild);
                    }
                    compExp.Expressions = childExpList;
                }

                outExp = compExp;
            }

            if (outExp is ValueExpression)
            {
                var valExp = outExp as ValueExpression;
                valExp.Value = BinarySerializer.Deserialize((NEMILTEC.Shared.Enums.Data.DataType)exp.DataTypeId, exp.Value);
                outExp = valExp;
            }

            return outExp;

        }
Ejemplo n.º 8
0
 /// <summary>
 /// Instantiates a new instance of the ScriptCondition class.
 /// </summary>
 /// <param name="trueValue">The true value to consider.</param>
 /// <param name="expression">The expression to consider.</param>
 public ScriptCondition(bool trueValue, IDataExpression expression) : base(trueValue)
 {
     Expression = expression as DataExpression;
 }