From aa6685aa637fdea878e691b56a9b20eaeea3d1d5 Mon Sep 17 00:00:00 2001 From: lukaseder Date: Thu, 10 Mar 2016 15:51:35 +0100 Subject: [PATCH] [#5144] Improve CASE expression formatting --- .../java/org/jooq/impl/CaseWhenStepImpl.java | 52 +++++++++++-------- 1 file changed, 30 insertions(+), 22 deletions(-) diff --git a/jOOQ/src/main/java/org/jooq/impl/CaseWhenStepImpl.java b/jOOQ/src/main/java/org/jooq/impl/CaseWhenStepImpl.java index 11df6f94f5..ff6beb5d8d 100644 --- a/jOOQ/src/main/java/org/jooq/impl/CaseWhenStepImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/CaseWhenStepImpl.java @@ -146,6 +146,21 @@ final class CaseWhenStepImpl extends AbstractFunction implements CaseWh return null; } + @Override + public final CaseWhenStep mapValues(Map values) { + Map, Field> fields = new LinkedHashMap, Field>(); + + for (Entry entry : values.entrySet()) + fields.put(Tools.field(entry.getKey()), Tools.field(entry.getValue())); + + return mapFields(fields); + } + + @Override + public final CaseWhenStep mapFields(Map, ? extends Field> fields) { + return null; + } + @Override final QueryPart getFunction0(Configuration configuration) { switch (configuration.dialect().family()) { @@ -230,9 +245,8 @@ final class CaseWhenStepImpl extends AbstractFunction implements CaseWh ctx.formatIndentLockStart(); for (int i = 0; i < size; i++) { - if (i > 0) { + if (i > 0) ctx.formatNewLine(); - } ctx.sql(' ').keyword("when").sql(' '); ctx.visit(value.equal(compareValues.get(i))); @@ -246,36 +260,30 @@ final class CaseWhenStepImpl extends AbstractFunction implements CaseWh default: { ctx.sql(' ') .visit(value) - .formatIndentLockStart(); + .formatIndentStart(); - for (int i = 0; i < size; i++) { - if (i > 0) { - ctx.formatNewLine(); - } - - ctx.sql(' ').keyword("when").sql(' '); - ctx.visit(compareValues.get(i)); - ctx.sql(' ').keyword("then").sql(' '); - ctx.visit(results.get(i)); - } + for (int i = 0; i < size; i++) + ctx.formatSeparator() + .keyword("when").sql(' ') + .visit(compareValues.get(i)).sql(' ') + .keyword("then").sql(' ') + .visit(results.get(i)); break; } } - if (otherwise != null) { - ctx.formatNewLine() - .sql(' ').keyword("else").sql(' ').visit(otherwise); - } + if (otherwise != null) + ctx.formatSeparator() + .keyword("else").sql(' ') + .visit(otherwise); - ctx.formatIndentLockEnd(); + ctx.formatIndentEnd(); - if (size > 1 || otherwise != null) { + if (size > 1 || otherwise != null) ctx.formatSeparator(); - } - else { + else ctx.sql(' '); - } ctx.keyword("end") .formatIndentLockEnd();