Example #1
0
 public SszExpression(SszExpression that)
 {
     _expressionString        = that._expressionString;
     IsValidInternal          = that.IsValidInternal;
     _isUiToDataSourceWarning = that._isUiToDataSourceWarning;
     _expressionType          = that._expressionType;
     _lambdaExpression        = that._lambdaExpression;
     _delegate = that._delegate;
 }
Example #2
0
        private static string ComputeValueOfSszQuery(string sszQuery,
                                                     Func <string, string> getConstantValue, CsvDb?csvDb,
                                                     ref int iterationN)
        {
            string q = sszQuery.Substring(2, sszQuery.Length - 3);

            var firstLevelSszQueries = FindFirstLevelSpecialText(q, '%', false);

            foreach (string firstLevelSszQuery in firstLevelSszQueries)
            {
                string valueOfQuery =
                    ComputeValueOfSszQuery(firstLevelSszQuery, getConstantValue, csvDb, ref iterationN);
                q = q.Replace(firstLevelSszQuery, EscapeForSszQuery(valueOfQuery));
            }

            var i = q.IndexOf("=>");

            if (i >= 0)
            {
                var    dataSourceValues = new List <object>();
                string args             = UnescapeForSszQuery(q.Substring(0, i).Trim());
                string lambda           = UnescapeForSszQuery(q.Substring(i + 2).Trim());
                foreach (var a in args.Split(','))
                {
                    string constant = a.Trim();
                    if (constant == @"")
                    {
                        return(@"");                 // Query is not resolved
                    }
                    constant = @"%(" + constant + @")";
                    string valueOfQuery = getConstantValue(constant);
                    dataSourceValues.Add(valueOfQuery);
                }

                var evaluated = new SszExpression(lambda).Evaluate(dataSourceValues.ToArray(), null, null, null);
                return(new Any(evaluated).ValueAsString(false));
            }

            string[] parts = q.Split(',');
            if (parts.Length == 1 || parts.Length == 2)
            {
                string constant = UnescapeForSszQuery(parts[0].Trim());
                if (constant == @"")
                {
                    return(@"");                 // Query is not resolved
                }
                constant = @"%(" + constant + @")";
                string valueOfSszQuery = getConstantValue(constant);
                if (valueOfSszQuery == @"" && parts.Length == 2)
                {
                    valueOfSszQuery = UnescapeForSszQuery(parts[1].Trim());
                }
                return(valueOfSszQuery);
            }

            if ((parts.Length == 3 || parts.Length == 4) && csvDb is not null)
            {
                string fileName = UnescapeForSszQuery(parts[0].Trim());
                string key      = UnescapeForSszQuery(parts[1].Trim());
                int    column;
                if (!int.TryParse(UnescapeForSszQuery(parts[2].Trim()), out column))
                {
                    return(@""); // Query is not resolved
                }
                string valueOfSszQuery = csvDb.GetValue(fileName, key, column) ?? @"";
                if (valueOfSszQuery == @"" && parts.Length == 4)
                {
                    valueOfSszQuery = UnescapeForSszQuery(parts[3].Trim());
                }
                return(valueOfSszQuery);
            }

            return(@""); // Query is not resolved
        }
Example #3
0
 public SszStatement(string condition, string value, int paramNum)
 {
     Condition = new SszExpression(condition);
     Value     = new SszExpression(value);
     ParamNum  = paramNum;
 }
Example #4
0
 public SszStatement()
 {
     Condition = new SszExpression();
     Value     = new SszExpression();
 }