From 27973dbf1bb3e914b7e5f72c160697985ae2156c Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Mon, 24 Jun 2019 13:28:24 +0200 Subject: [PATCH] [jOOQ/jOOQ#8754] Minor refactoring of SequenceImpl This is to prevent unnecessary String.equals() checks for something that can only have 2 possible values. --- .../main/java/org/jooq/impl/SequenceImpl.java | 41 ++++++++++++------- 1 file changed, 26 insertions(+), 15 deletions(-) diff --git a/jOOQ/src/main/java/org/jooq/impl/SequenceImpl.java b/jOOQ/src/main/java/org/jooq/impl/SequenceImpl.java index fdfeadd91e..6989aa4b87 100644 --- a/jOOQ/src/main/java/org/jooq/impl/SequenceImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/SequenceImpl.java @@ -115,12 +115,25 @@ public class SequenceImpl extends AbstractNamed implements Seq @Override public final Field currval() { - return new SequenceFunction("currval"); + return new SequenceFunction(SequenceMethod.CURRVAL); } @Override public final Field nextval() { - return new SequenceFunction("nextval"); + return new SequenceFunction(SequenceMethod.NEXTVAL); + } + + private enum SequenceMethod { + CURRVAL(K_CURRVAL, DSL.name("currval")), + NEXTVAL(K_NEXTVAL, DSL.name("nextval")); + + final Keyword keyword; + final Name name; + + private SequenceMethod(Keyword keyword, Name name) { + this.keyword = keyword; + this.name = name; + } } private class SequenceFunction extends AbstractField { @@ -128,14 +141,13 @@ public class SequenceImpl extends AbstractNamed implements Seq /** * Generated UID */ - private static final long serialVersionUID = 2292275568395094887L; + private static final long serialVersionUID = 2292275568395094887L; + private final SequenceMethod method; - private final Keyword keyword; + SequenceFunction(SequenceMethod method) { + super(method.name, type); - SequenceFunction(String method) { - super(DSL.name(method), type); - - this.keyword = method.equals("nextval") ? K_NEXTVAL : K_CURRVAL; + this.method = method; } @Override @@ -157,7 +169,7 @@ public class SequenceImpl extends AbstractNamed implements Seq case POSTGRES: { - ctx.visit(keyword).sql('('); + ctx.visit(method.keyword).sql('('); ctx.sql('\'').stringLiteral(true).visit(SequenceImpl.this).stringLiteral(false).sql('\''); ctx.sql(')'); break; @@ -169,7 +181,7 @@ public class SequenceImpl extends AbstractNamed implements Seq case FIREBIRD: case DERBY: case HSQLDB: { - if (K_NEXTVAL == keyword) + if (method == SequenceMethod.NEXTVAL) ctx.visit(K_NEXT_VALUE_FOR).sql(' ').visit(SequenceImpl.this); else if (family == HSQLDB) ctx.visit(K_CURRENT_VALUE_FOR).sql(' ').visit(SequenceImpl.this); @@ -198,18 +210,17 @@ public class SequenceImpl extends AbstractNamed implements Seq case CUBRID: { ctx.visit(SequenceImpl.this).sql('.'); - if (K_NEXTVAL == keyword) { + if (method == SequenceMethod.NEXTVAL) ctx.visit(DSL.keyword("next_value")); - } - else { + else ctx.visit(DSL.keyword("current_value")); - } + break; } // Default is needed for hashCode() and toString() default: { - ctx.visit(SequenceImpl.this).sql('.').visit(keyword); + ctx.visit(SequenceImpl.this).sql('.').visit(method.keyword); break; } }