示例#1
0
    public void ExtractValues(System.Collections.Specialized.IOrderedDictionary dictionary)
    {
        var conditionsJsonStr = conditions.Value;
        var expressionJsonStr = expression.Value;

        dictionary[ConditionsFieldName] = conditionsJsonStr;
        dictionary[ExpressionFieldName] = expressionJsonStr;

        if (RelexFieldName != null && !String.IsNullOrEmpty(conditionsJsonStr) && !String.IsNullOrEmpty(expressionJsonStr))
        {
            var expressionData = JsHelper.FromJsonString <IDictionary <string, object> >(expressionJsonStr);
            var exprStr        = Convert.ToString(expressionData["expression"]);

            if (String.IsNullOrEmpty(exprStr.Trim()))
            {
                dictionary[RelexFieldName] = "1=1";
            }
            else
            {
                var fieldData = JsHelper.FromJsonString <IList <Dictionary <string, object> > >(fieldDescriptors.Value);

                var fieldTypeMapping      = new Dictionary <string, string>();
                var relexConditionMapping = new Dictionary <string, string>();
                foreach (var fldData in fieldData)
                {
                    fieldTypeMapping[Convert.ToString(fldData["name"])] = Convert.ToString(fldData["dataType"]);
                    if (fldData.ContainsKey("relexcondition"))
                    {
                        relexConditionMapping[Convert.ToString(fldData["name"])] = Convert.ToString(fldData["relexcondition"]);
                    }
                }
                dictionary[RelexFieldName] = QueryBuilderHelper.GenerateRelexFromQueryBuilder(JsHelper.FromJsonString <IList <IDictionary <string, object> > >(conditionsJsonStr), exprStr, fieldTypeMapping, relexConditionMapping);
            }
        }
    }