protected override void OnTranslateFilterSyntax(object sender, TranslateFilterSyntaxEventArgs e) { base.OnTranslateFilterSyntax(sender, e); if (e.Handled) { return; } switch (e.Part) { case LlExpressionPart.Function: switch (e.Name.ToString().ToUpper()) { case "LEN": if (e.ArgumentCount == 1) { e.Result = (String.Format("Length({0})", e.Arguments[0].ToString())); } e.Handled = true; break; case "ATRIM$": e.Result = (String.Format("Trim({0})", e.Arguments[0].ToString())); e.Handled = true; break; case "LTRIM$": e.Result = (String.Format("LTrim({0})", e.Arguments[0].ToString())); e.Handled = true; break; case "RTRIM$": e.Result = (String.Format("RTrim({0})", e.Arguments[0].ToString())); e.Handled = true; break; default: break; } break; default: break; } }
protected override void OnTranslateFilterSyntax(object sender, TranslateFilterSyntaxEventArgs e) { base.OnTranslateFilterSyntax(sender, e); if (e.Handled) { return; } switch (e.Part) { case LlExpressionPart.Function: { switch (e.Name.ToString().ToUpper()) { case "LEN": e.Result = String.Format("(LENGTH({0}))", e.Arguments[0]); e.Handled = true; break; case "EMPTY": if (e.ArgumentCount == 1) { e.Result = String.Format("(LENGTH({0}) = 0)", e.Arguments[0]); } else if ((bool)e.Arguments[1]) { e.Result = String.Format("(LENGTH(LTRIM(RTRIM({0}))) = 0)", e.Arguments[0]); } else { e.Result = String.Format("(LENGTH({0}) = 0)", e.Arguments[0]); } e.Handled = true; break; case "ROUND": e.Result = String.Format("(ROUND({0}::numeric,{1}))", e.Arguments[0], e.ArgumentCount == 2 ? e.Arguments[1] : "0"); e.Handled = true; break; case "YEAR": e.Result = String.Format("(date_part('year',{0}))", e.Arguments[0]); e.Handled = true; break; case "MONTH": e.Result = String.Format("(date_part('month',{0}))", e.Arguments[0]); e.Handled = true; break; case "DAY": e.Result = String.Format("(date_part('day',{0}))", e.Arguments[0]); e.Handled = true; break; default: break; } break; } default: break; } }
protected override void OnTranslateFilterSyntax(object sender, TranslateFilterSyntaxEventArgs e) { base.OnTranslateFilterSyntax(sender, e); if (e.Handled) { return; } switch (e.Part) { case LlExpressionPart.Function: switch (e.Name.ToString().ToUpper()) { case "YEAR": e.Result = String.Format("(EXTRACT(YEAR from {0}))", e.Arguments[0].ToString()); e.Handled = true; break; case "MONTH": e.Result = String.Format("(EXTRACT(MONTH from {0}))", e.Arguments[0].ToString()); e.Handled = true; break; case "DAY": e.Result = String.Format("(EXTRACT(DAY from {0}))", e.Arguments[0].ToString()); e.Handled = true; break; case "MID$": if (e.ArgumentCount == 2) { e.Result = (String.Format("(SUBSTRING({0} FROM {1}))", e.Arguments[0].ToString(), e.Arguments[1].ToString() + "+1")); } else { e.Result = (String.Format("(SUBSTRING({0} FROM {1} FOR {2}))", e.Arguments[0].ToString(), e.Arguments[1].ToString() + "+1", e.Arguments[2].ToString())); } e.Handled = true; break; case "LEFT$": e.Result = (String.Format("(LEFT({0}, {1}))", e.Arguments[0].ToString(), e.Arguments[1].ToString())); e.Handled = true; break; case "RIGHT$": e.Result = (String.Format("(RIGHT({0}, {1}))", e.Arguments[0].ToString(), e.Arguments[1].ToString())); e.Handled = true; break; case "LEN": e.Result = (String.Format("(CHAR_LENGTH({0}))", e.Arguments[0].ToString())); e.Handled = true; break; case "EMPTY": if (e.ArgumentCount == 1) { e.Result = String.Format("(CHAR_LENGTH({0}) = 0)", e.Arguments[0]); } else if ((bool)e.Arguments[1]) { e.Result = String.Format("(CHAR_LENGTH(LTRIM(RTRIM({0}))) = 0)", e.Arguments[0]); } else { e.Result = String.Format("(CHAR_LENGTH({0}) = 0)", e.Arguments[0]); } e.Handled = true; break; case "ATRIM$": e.Result = String.Format("(TRIM({0}))", e.Arguments[0].ToString()); e.Handled = true; break; case "LTRIM$": e.Result = String.Format("(TRIM(LEADING FROM {0}))", e.Arguments[0].ToString()); e.Handled = true; break; case "RTRIM$": e.Result = String.Format("(TRIM(TRAILING FROM {0}))", e.Arguments[0].ToString()); e.Handled = true; break; default: break; } break; default: break; } }