[jOOQ/jOOQ#11918] Add Settings.renderOptionalXYZ support to ParserCLI
This commit is contained in:
parent
516fa206af
commit
c6a3a7f08d
@ -45,6 +45,7 @@ import java.util.regex.Pattern;
|
||||
|
||||
import org.jooq.conf.RenderKeywordCase;
|
||||
import org.jooq.conf.RenderNameCase;
|
||||
import org.jooq.conf.RenderOptionalKeyword;
|
||||
import org.jooq.conf.RenderQuotedNames;
|
||||
import org.jooq.conf.Settings;
|
||||
import org.jooq.conf.TransformUnneededArithmeticExpressions;
|
||||
@ -101,6 +102,14 @@ public final class ParserCLI {
|
||||
settings.setParseDialect(a.fromDialect);
|
||||
if (a.renderCoalesceToEmptyStringInConcat)
|
||||
settings.setRenderCoalesceToEmptyStringInConcat(true);
|
||||
if (a.renderOptionalInnerKeyword != null)
|
||||
settings.setRenderOptionalInnerKeyword(a.renderOptionalInnerKeyword);
|
||||
if (a.renderOptionalOuterKeyword != null)
|
||||
settings.setRenderOptionalOuterKeyword(a.renderOptionalOuterKeyword);
|
||||
if (a.renderOptionalAsKeywordForFieldAliases != null)
|
||||
settings.setRenderOptionalAsKeywordForFieldAliases(a.renderOptionalAsKeywordForFieldAliases);
|
||||
if (a.renderOptionalAsKeywordForTableAliases != null)
|
||||
settings.setRenderOptionalAsKeywordForTableAliases(a.renderOptionalAsKeywordForTableAliases);
|
||||
if (a.transformAnsiJoinToTableLists)
|
||||
settings.setTransformAnsiJoinToTableLists(true);
|
||||
if (a.transformTableListsToAnsiJoin)
|
||||
@ -166,50 +175,50 @@ public final class ParserCLI {
|
||||
|
||||
displayFormatted(a);
|
||||
}
|
||||
else if ("k".equals(flag) || "keyword".equals(flag)) {
|
||||
else if ("k".equals(flag) || "keyword".equals(flag))
|
||||
a.keywords = parseInteractive(RenderKeywordCase.class, a.keywords, arg, () -> displayKeywords(a));
|
||||
}
|
||||
else if ("i".equals(flag) || "identifier".equals(flag)) {
|
||||
else if ("i".equals(flag) || "identifier".equals(flag))
|
||||
a.name = parseInteractive(RenderNameCase.class, a.name, arg, () -> displayIdentifiers(a));
|
||||
}
|
||||
else if ("Q".equals(flag) || "quoted".equals(flag)) {
|
||||
else if ("Q".equals(flag) || "quoted".equals(flag))
|
||||
a.quoted = parseInteractive(RenderQuotedNames.class, a.quoted, arg, () -> displayQuoted(a));
|
||||
}
|
||||
else if ("F".equals(flag) || "from-dialect".equals(flag)) {
|
||||
else if ("F".equals(flag) || "from-dialect".equals(flag))
|
||||
a.fromDialect = parseInteractive(SQLDialect.class, a.fromDialect, arg, () -> displayFromDialect(a));
|
||||
}
|
||||
else if ("render-coalesce-to-empty-string-in-concat".equals(flag)) {
|
||||
if (arg != null)
|
||||
a.renderCoalesceToEmptyStringInConcat = Boolean.parseBoolean(arg.toLowerCase());
|
||||
|
||||
displayRenderCoalesceToEmptyStringInConcat(a);
|
||||
}
|
||||
else if ("render-optional-inner-keyword".equals(flag))
|
||||
a.renderOptionalInnerKeyword = parseInteractive(RenderOptionalKeyword.class, a.renderOptionalInnerKeyword, arg, () -> displayRenderOptionalInnerKeyword(a));
|
||||
else if ("render-optional-outer-keyword".equals(flag))
|
||||
a.renderOptionalOuterKeyword = parseInteractive(RenderOptionalKeyword.class, a.renderOptionalOuterKeyword, arg, () -> displayRenderOptionalOuterKeyword(a));
|
||||
else if ("render-optional-as-keyword-for-field-aliases".equals(flag))
|
||||
a.renderOptionalAsKeywordForFieldAliases = parseInteractive(RenderOptionalKeyword.class, a.renderOptionalAsKeywordForFieldAliases, arg, () -> displayRenderOptionalAsKeywordForFieldAliases(a));
|
||||
else if ("render-optional-as-keyword-for-table-aliases".equals(flag))
|
||||
a.renderOptionalAsKeywordForTableAliases = parseInteractive(RenderOptionalKeyword.class, a.renderOptionalAsKeywordForTableAliases, arg, () -> displayRenderOptionalAsKeywordForTableAliases(a));
|
||||
else if ("transform-ansi-join-to-table-lists".equals(flag)) {
|
||||
if (arg != null)
|
||||
a.transformAnsiJoinToTableLists = Boolean.parseBoolean(arg.toLowerCase());
|
||||
|
||||
displayTransformAnsiJoinToTablesLists(a);
|
||||
}
|
||||
else if ("transform-qualify".equals(flag)) {
|
||||
else if ("transform-qualify".equals(flag))
|
||||
a.transformQualify = parseInteractive(Transformation.class, a.transformQualify, arg, () -> displayTransformQualify(a));
|
||||
}
|
||||
else if ("transform-rownum".equals(flag)) {
|
||||
else if ("transform-rownum".equals(flag))
|
||||
a.transformRownum = parseInteractive(Transformation.class, a.transformRownum, arg, () -> displayTransformRownum(a));
|
||||
}
|
||||
else if ("transform-table-lists-to-ansi-join".equals(flag)) {
|
||||
if (arg != null)
|
||||
a.transformTableListsToAnsiJoin = Boolean.parseBoolean(arg.toLowerCase());
|
||||
|
||||
displayTransformTableListsToAnsiJoin(a);
|
||||
}
|
||||
else if ("transform-unneeded-arithmetic".equals(flag)) {
|
||||
else if ("transform-unneeded-arithmetic".equals(flag))
|
||||
a.transformUnneededArithmetic = parseInteractive(TransformUnneededArithmeticExpressions.class, a.transformUnneededArithmetic, arg, () -> displayTransformUnneededArithmetic(a));
|
||||
}
|
||||
|
||||
// [#9144] /t maintained for backwards compatibility
|
||||
else if ("t".equals(flag) || "T".equals(flag) || "to-dialect".equals(flag)) {
|
||||
else if ("t".equals(flag) || "T".equals(flag) || "to-dialect".equals(flag))
|
||||
a.toDialect = parseInteractive(SQLDialect.class, a.toDialect, arg, () -> displayToDialect(a));
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
@ -282,6 +291,22 @@ public final class ParserCLI {
|
||||
System.out.println("Render COALESCE(X, '') in CONCAT : " + a.renderCoalesceToEmptyStringInConcat);
|
||||
}
|
||||
|
||||
private static void displayRenderOptionalInnerKeyword(Args a) {
|
||||
System.out.println("Render INNER keyword in INNER JOIN : " + a.renderOptionalInnerKeyword);
|
||||
}
|
||||
|
||||
private static void displayRenderOptionalOuterKeyword(Args a) {
|
||||
System.out.println("Render OUTER keyword in OUTER JOIN : " + a.renderOptionalOuterKeyword);
|
||||
}
|
||||
|
||||
private static void displayRenderOptionalAsKeywordForFieldAliases(Args a) {
|
||||
System.out.println("Render AS keyword to alias fields :" + a.renderOptionalAsKeywordForFieldAliases);
|
||||
}
|
||||
|
||||
private static void displayRenderOptionalAsKeywordForTableAliases(Args a) {
|
||||
System.out.println("Render AS keyword to alias tables :" + a.renderOptionalAsKeywordForTableAliases);
|
||||
}
|
||||
|
||||
private static void displayTransformAnsiJoinToTablesLists(Args a) {
|
||||
System.out.println("Transform ANSI join to table lists : " + a.transformAnsiJoinToTableLists);
|
||||
}
|
||||
@ -349,50 +374,44 @@ public final class ParserCLI {
|
||||
Class<? extends Enum<?>> enumArgument = null;
|
||||
|
||||
try {
|
||||
if ("-f".equals(args[i]) || "--formatted".equals(args[i])) {
|
||||
if ("-f".equals(args[i]) || "--formatted".equals(args[i]))
|
||||
result.formatted = true;
|
||||
}
|
||||
else if ("-k".equals(args[i]) || "--keyword".equals(args[i])) {
|
||||
else if ("-k".equals(args[i]) || "--keyword".equals(args[i]))
|
||||
result.keywords = parse((Class<RenderKeywordCase>) (enumArgument = RenderKeywordCase.class), args[++i]);
|
||||
}
|
||||
else if ("-i".equals(args[i]) || "--identifier".equals(args[i])) {
|
||||
else if ("-i".equals(args[i]) || "--identifier".equals(args[i]))
|
||||
result.name = parse((Class<RenderNameCase>) (enumArgument = RenderNameCase.class), args[++i]);
|
||||
}
|
||||
else if ("-Q".equals(args[i]) || "--quoted".equals(args[i])) {
|
||||
else if ("-Q".equals(args[i]) || "--quoted".equals(args[i]))
|
||||
result.quoted = parse((Class<RenderQuotedNames>) (enumArgument = RenderQuotedNames.class), args[++i]);
|
||||
}
|
||||
else if ("-F".equals(args[i]) || "--from-dialect".equals(args[i])) {
|
||||
else if ("-F".equals(args[i]) || "--from-dialect".equals(args[i]))
|
||||
result.fromDialect = parse((Class<SQLDialect>) (enumArgument = SQLDialect.class), args[++i]);
|
||||
}
|
||||
|
||||
// [#9144] -t maintained for backwards compatibility
|
||||
else if ("-t".equals(args[i]) || "-T".equals(args[i]) || "--to-dialect".equals(args[i])) {
|
||||
else if ("-t".equals(args[i]) || "-T".equals(args[i]) || "--to-dialect".equals(args[i]))
|
||||
result.toDialect = parse((Class<SQLDialect>) (enumArgument = SQLDialect.class), args[++i]);
|
||||
}
|
||||
else if ("--render-coalesce-to-empty-string-in-concat".equals(args[i])) {
|
||||
else if ("--render-coalesce-to-empty-string-in-concat".equals(args[i]))
|
||||
result.renderCoalesceToEmptyStringInConcat = true;
|
||||
}
|
||||
else if ("--transform-ansi-join-to-table-lists".equals(args[i])) {
|
||||
else if ("--render-optional-inner-keyword".equals(args[i]))
|
||||
result.renderOptionalInnerKeyword = parse((Class<RenderOptionalKeyword>) (enumArgument = RenderOptionalKeyword.class), args[++i]);
|
||||
else if ("--render-optional-outer-keyword".equals(args[i]))
|
||||
result.renderOptionalOuterKeyword = parse((Class<RenderOptionalKeyword>) (enumArgument = RenderOptionalKeyword.class), args[++i]);
|
||||
else if ("--render-optional-as-keyword-for-field-aliases".equals(args[i]))
|
||||
result.renderOptionalAsKeywordForFieldAliases = parse((Class<RenderOptionalKeyword>) (enumArgument = RenderOptionalKeyword.class), args[++i]);
|
||||
else if ("--render-optional-as-keyword-for-table-aliases".equals(args[i]))
|
||||
result.renderOptionalAsKeywordForTableAliases = parse((Class<RenderOptionalKeyword>) (enumArgument = RenderOptionalKeyword.class), args[++i]);
|
||||
else if ("--transform-ansi-join-to-table-lists".equals(args[i]))
|
||||
result.transformAnsiJoinToTableLists = true;
|
||||
}
|
||||
else if ("--transform-qualify".equals(args[i])) {
|
||||
else if ("--transform-qualify".equals(args[i]))
|
||||
result.transformQualify = parse((Class<Transformation>) (enumArgument = Transformation.class), args[++i]);
|
||||
}
|
||||
else if ("--transform-rownum".equals(args[i])) {
|
||||
else if ("--transform-rownum".equals(args[i]))
|
||||
result.transformRownum = parse((Class<Transformation>) (enumArgument = Transformation.class), args[++i]);
|
||||
}
|
||||
else if ("--transform-table-lists-to-ansi-join".equals(args[i])) {
|
||||
else if ("--transform-table-lists-to-ansi-join".equals(args[i]))
|
||||
result.transformTableListsToAnsiJoin = true;
|
||||
}
|
||||
else if ("--transform-unneeded-arithmetic".equals(args[i])) {
|
||||
else if ("--transform-unneeded-arithmetic".equals(args[i]))
|
||||
result.transformUnneededArithmetic = parse((Class<TransformUnneededArithmeticExpressions>) (enumArgument = TransformUnneededArithmeticExpressions.class), args[++i]);
|
||||
}
|
||||
else if ("-s".equals(args[i]) || "--sql".equals(args[i])) {
|
||||
else if ("-s".equals(args[i]) || "--sql".equals(args[i]))
|
||||
result.sql = args[++i];
|
||||
}
|
||||
else if ("-I".equals(args[i]) || "--interactive".equals(args[i])) {
|
||||
else if ("-I".equals(args[i]) || "--interactive".equals(args[i]))
|
||||
result.interactive = true;
|
||||
}
|
||||
else if ("-h".equals(args[i]) || "--help".equals(args[i])) {
|
||||
help();
|
||||
result.done = true;
|
||||
@ -421,48 +440,56 @@ public final class ParserCLI {
|
||||
|
||||
private static final void help() {
|
||||
System.out.println("Usage:");
|
||||
System.out.println(" -f / --formatted Format output SQL");
|
||||
System.out.println(" -h / --help Display this help");
|
||||
System.out.println(" -k / --keyword <RenderKeywordCase> Specify the output keyword case (org.jooq.conf.RenderKeywordCase)");
|
||||
System.out.println(" -i / --identifier <RenderNameCase> Specify the output identifier case (org.jooq.conf.RenderNameCase)");
|
||||
System.out.println(" -Q / --quoted <RenderQuotedNames> Specify the output identifier quoting (org.jooq.conf.RenderQuotedNames)");
|
||||
System.out.println(" -F / --from-dialect <SQLDialect> Specify the input dialect (org.jooq.SQLDialect)");
|
||||
System.out.println(" -T / --to-dialect <SQLDialect> Specify the output dialect (org.jooq.SQLDialect)");
|
||||
System.out.println(" -s / --sql <String> Specify the input SQL string");
|
||||
System.out.println(" -f / --formatted Format output SQL");
|
||||
System.out.println(" -h / --help Display this help");
|
||||
System.out.println(" -k / --keyword <RenderKeywordCase> Specify the output keyword case (org.jooq.conf.RenderKeywordCase)");
|
||||
System.out.println(" -i / --identifier <RenderNameCase> Specify the output identifier case (org.jooq.conf.RenderNameCase)");
|
||||
System.out.println(" -Q / --quoted <RenderQuotedNames> Specify the output identifier quoting (org.jooq.conf.RenderQuotedNames)");
|
||||
System.out.println(" -F / --from-dialect <SQLDialect> Specify the input dialect (org.jooq.SQLDialect)");
|
||||
System.out.println(" -T / --to-dialect <SQLDialect> Specify the output dialect (org.jooq.SQLDialect)");
|
||||
System.out.println(" -s / --sql <String> Specify the input SQL string");
|
||||
System.out.println("");
|
||||
System.out.println("Commercial distribution only features:");
|
||||
System.out.println(" --render-coalesce-to-empty-string-in-concat <boolean>");
|
||||
System.out.println(" --transform-ansi-join-to-table-lists <boolean>");
|
||||
System.out.println(" --transform-qualify <Transformation>");
|
||||
System.out.println(" --transform-rownum <Transformation>");
|
||||
System.out.println(" --transform-table-lists-to-ansi-join <boolean>");
|
||||
System.out.println(" --transform-unneeded-arithmetic <TransformUnneededArithmeticExpressions>");
|
||||
System.out.println(" --render-coalesce-to-empty-string-in-concat <boolean>");
|
||||
System.out.println(" --render-optional-inner-keyword <RenderOptionalKeyword>");
|
||||
System.out.println(" --render-optional-outer-keyword <RenderOptionalKeyword>");
|
||||
System.out.println(" --render-optional-as-keyword-for-field-aliases <RenderOptionalKeyword>");
|
||||
System.out.println(" --render-optional-as-keyword-for-table-aliases <RenderOptionalKeyword>");
|
||||
System.out.println(" --transform-ansi-join-to-table-lists <boolean>");
|
||||
System.out.println(" --transform-qualify <Transformation>");
|
||||
System.out.println(" --transform-rownum <Transformation>");
|
||||
System.out.println(" --transform-table-lists-to-ansi-join <boolean>");
|
||||
System.out.println(" --transform-unneeded-arithmetic <TransformUnneededArithmeticExpressions>");
|
||||
System.out.println("");
|
||||
System.out.println(" -I / --interactive Start interactive mode");
|
||||
}
|
||||
|
||||
private static final void helpInteractive() {
|
||||
System.out.println("Usage:");
|
||||
System.out.println(" /d or /display Display arguments");
|
||||
System.out.println(" /f or /formatted <boolean> Format output SQL");
|
||||
System.out.println(" /h or /help Display this help");
|
||||
System.out.println(" /k or /keyword <RenderKeywordCase> Specify the output keyword case (org.jooq.conf.RenderKeywordCase)");
|
||||
System.out.println(" /i or /identifier <RenderNameCase> Specify the output identifier case (org.jooq.conf.RenderNameCase)");
|
||||
System.out.println(" /Q or /quoted <RenderQuotedNames> Specify the output identifier quoting (org.jooq.conf.RenderQuotedNames)");
|
||||
System.out.println(" /F or /from-dialect <SQLDialect> Specify the input dialect (org.jooq.SQLDialect)");
|
||||
System.out.println(" /T or /to-dialect <SQLDialect> Specify the output dialect (org.jooq.SQLDialect)");
|
||||
System.out.println(" <String> Specify the input SQL string");
|
||||
System.out.println(" /d or /display Display arguments");
|
||||
System.out.println(" /f or /formatted <boolean> Format output SQL");
|
||||
System.out.println(" /h or /help Display this help");
|
||||
System.out.println(" /k or /keyword <RenderKeywordCase> Specify the output keyword case (org.jooq.conf.RenderKeywordCase)");
|
||||
System.out.println(" /i or /identifier <RenderNameCase> Specify the output identifier case (org.jooq.conf.RenderNameCase)");
|
||||
System.out.println(" /Q or /quoted <RenderQuotedNames> Specify the output identifier quoting (org.jooq.conf.RenderQuotedNames)");
|
||||
System.out.println(" /F or /from-dialect <SQLDialect> Specify the input dialect (org.jooq.SQLDialect)");
|
||||
System.out.println(" /T or /to-dialect <SQLDialect> Specify the output dialect (org.jooq.SQLDialect)");
|
||||
System.out.println(" <String> Specify the input SQL string");
|
||||
System.out.println("");
|
||||
System.out.println("Commercial distribution only features:");
|
||||
System.out.println(" /render-coalesce-to-empty-string-in-concat <boolean>");
|
||||
System.out.println(" /transform-ansi-join-to-table-lists <boolean>");
|
||||
System.out.println(" /transform-qualify <Transformation>");
|
||||
System.out.println(" /transform-rownum <Transformation>");
|
||||
System.out.println(" /transform-table-lists-to-ansi-join <boolean>");
|
||||
System.out.println(" /transform-unneeded-arithmetic <TransformUnneededArithmeticExpressions>");
|
||||
System.out.println(" /render-coalesce-to-empty-string-in-concat <boolean>");
|
||||
System.out.println(" /render-optional-inner-keyword <RenderOptionalKeyword>");
|
||||
System.out.println(" /render-optional-outer-keyword <RenderOptionalKeyword>");
|
||||
System.out.println(" /render-optional-as-keyword-for-field-aliases <RenderOptionalKeyword>");
|
||||
System.out.println(" /render-optional-as-keyword-for-table-aliases <RenderOptionalKeyword>");
|
||||
System.out.println(" /transform-ansi-join-to-table-lists <boolean>");
|
||||
System.out.println(" /transform-qualify <Transformation>");
|
||||
System.out.println(" /transform-rownum <Transformation>");
|
||||
System.out.println(" /transform-table-lists-to-ansi-join <boolean>");
|
||||
System.out.println(" /transform-unneeded-arithmetic <TransformUnneededArithmeticExpressions>");
|
||||
System.out.println("");
|
||||
System.out.println(" /q or /quit Quit");
|
||||
System.out.println(" /e or /exit Also quit");
|
||||
System.out.println(" /q or /quit Quit");
|
||||
System.out.println(" /e or /exit Also quit");
|
||||
}
|
||||
|
||||
public static final class Args {
|
||||
@ -477,6 +504,10 @@ public final class ParserCLI {
|
||||
boolean interactive;
|
||||
boolean done;
|
||||
boolean renderCoalesceToEmptyStringInConcat;
|
||||
RenderOptionalKeyword renderOptionalInnerKeyword = RenderOptionalKeyword.DEFAULT;
|
||||
RenderOptionalKeyword renderOptionalOuterKeyword = RenderOptionalKeyword.DEFAULT;
|
||||
RenderOptionalKeyword renderOptionalAsKeywordForFieldAliases = RenderOptionalKeyword.DEFAULT;
|
||||
RenderOptionalKeyword renderOptionalAsKeywordForTableAliases = RenderOptionalKeyword.DEFAULT;
|
||||
boolean transformAnsiJoinToTableLists;
|
||||
Transformation transformQualify;
|
||||
Transformation transformRownum;
|
||||
|
||||
@ -356,6 +356,9 @@ implements
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user