internal static string ParseOrderBy(string expression, CSSchema schema, string tableAlias, CSJoinList joinList) { //joinList = new CSJoinList(); if (expression.Trim().Length < 1) return expression; string parsedExpression = ""; string[] terms = expression.Split(','); foreach (string term in terms) { if (term.Length < 1) continue; bool ascending = true; string fieldName = term; if (term.EndsWith("-")) ascending = false; if (term.EndsWith("+") || term.EndsWith("-")) fieldName = term.Substring(0, term.Length - 1); if (parsedExpression.Length > 1) parsedExpression += ","; parsedExpression += ParseFilter(fieldName, schema, tableAlias, joinList); if (!ascending) parsedExpression += " DESC"; } return parsedExpression; }
internal static string Parse(CSSchema schema, string input, string tableAlias, CSJoinList joins) { if (input == "") return input; List<Token> tokens = PreParse(input); QueryExpression rootQuery = new QueryExpression(schema,tableAlias); rootQuery.Joins = joins; QueryExpression finalQuery = Parse(rootQuery, tokens, 0, tokens.Count); return finalQuery.Expression; }
internal static string ParseFilter(string expressionText, CSSchema schema, string tableAlias, CSJoinList joins) { return Parse(schema, expressionText, tableAlias, joins); }