From 385e4c6b30d2c3719ec358d759ef4a8675afa426 Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Sat, 18 Feb 2012 16:06:09 +0000 Subject: [PATCH] [#408] Add class prefixes, suffixes and other options to the code generator - deprecated getJavaClassNameLC, replaced by more meaningful method names --- .../java/org/jooq/util/DefaultGenerator.java | 44 ++++++----- .../jooq/util/DefaultGeneratorStrategy.java | 26 ++++++- .../java/org/jooq/util/GeneratorStrategy.java | 75 +++++++++++++++++-- 3 files changed, 116 insertions(+), 29 deletions(-) diff --git a/jOOQ-codegen/src/main/java/org/jooq/util/DefaultGenerator.java b/jOOQ-codegen/src/main/java/org/jooq/util/DefaultGenerator.java index fccea4cf33..92869bd4a5 100644 --- a/jOOQ-codegen/src/main/java/org/jooq/util/DefaultGenerator.java +++ b/jOOQ-codegen/src/main/java/org/jooq/util/DefaultGenerator.java @@ -1883,7 +1883,7 @@ public class DefaultGenerator implements Generator { out.println("\t *"); for (ParameterDefinition parameter : function.getInParameters()) { - out.println("\t * @param " + strategy.getJavaClassNameLC(parameter)); + out.println("\t * @param " + strategy.getJavaMemberName(parameter)); } out.println("\t */"); @@ -1892,7 +1892,7 @@ public class DefaultGenerator implements Generator { out.print("<"); out.print(getJavaType(function.getReturnType())); out.print("> "); - out.print(strategy.getJavaClassNameLC(function)); + out.print(strategy.getJavaMethodName(function)); out.print("("); String separator = ""; @@ -1909,7 +1909,7 @@ public class DefaultGenerator implements Generator { } out.print(" "); - out.print(strategy.getJavaClassNameLC(parameter)); + out.print(strategy.getJavaMemberName(parameter)); separator = ", "; } @@ -1922,7 +1922,11 @@ public class DefaultGenerator implements Generator { out.println("();"); for (ParameterDefinition parameter : function.getInParameters()) { - out.println("\t\tf.set" + strategy.getJavaClassName(parameter) + "(" + strategy.getJavaClassNameLC(parameter) + ");"); + out.print("\t\tf."); + out.print(strategy.getJavaSetterName(parameter)); + out.print("("); + out.print(strategy.getJavaMemberName(parameter)); + out.println(");"); } out.println(); @@ -1943,7 +1947,7 @@ public class DefaultGenerator implements Generator { out.println("\t *"); for (ParameterDefinition parameter : function.getInParameters()) { - out.println("\t * @param " + strategy.getJavaClassNameLC(parameter)); + out.println("\t * @param " + strategy.getJavaMemberName(parameter)); } printThrowsDataAccessException(out); @@ -1956,7 +1960,7 @@ public class DefaultGenerator implements Generator { out.print(getJavaType(function.getReturnType())); out.print(" "); - out.print(strategy.getJavaClassNameLC(function)); + out.print(strategy.getJavaMethodName(function)); out.print("("); String glue = ""; @@ -1975,7 +1979,7 @@ public class DefaultGenerator implements Generator { out.print(glue); printNumberType(out, parameter.getType()); out.print(" "); - out.print(strategy.getJavaClassNameLC(parameter)); + out.print(strategy.getJavaMemberName(parameter)); glue = ", "; } @@ -1988,15 +1992,15 @@ public class DefaultGenerator implements Generator { out.println("();"); for (ParameterDefinition parameter : function.getInParameters()) { - out.print("\t\tf.set"); - out.print(strategy.getJavaClassName(parameter)); + out.print("\t\tf."); + out.print(strategy.getJavaSetterName(parameter)); out.print("("); if (instance && parameter.equals(function.getInParameters().get(0))) { out.print("this"); } else { - out.print(strategy.getJavaClassNameLC(parameter)); + out.print(strategy.getJavaMemberName(parameter)); } out.println(");"); @@ -2049,7 +2053,7 @@ public class DefaultGenerator implements Generator { out.println("\t *"); for (ParameterDefinition parameter : procedure.getAllParameters()) { - out.print("\t * @param " + strategy.getJavaClassNameLC(parameter) + " "); + out.print("\t * @param " + strategy.getJavaMemberName(parameter) + " "); if (procedure.getInParameters().contains(parameter)) { if (procedure.getOutParameters().contains(parameter)) { @@ -2081,7 +2085,7 @@ public class DefaultGenerator implements Generator { out.print(strategy.getFullJavaClassName(procedure) + " "); } - out.print(strategy.getJavaClassNameLC(procedure)); + out.print(strategy.getJavaMethodName(procedure)); out.print("("); String glue = ""; @@ -2100,7 +2104,7 @@ public class DefaultGenerator implements Generator { out.print(glue); printNumberType(out, parameter.getType()); out.print(" "); - out.print(strategy.getJavaClassNameLC(parameter)); + out.print(strategy.getJavaMemberName(parameter)); glue = ", "; } @@ -2113,15 +2117,15 @@ public class DefaultGenerator implements Generator { out.println("();"); for (ParameterDefinition parameter : procedure.getInParameters()) { - out.print("\t\tp.set"); - out.print(strategy.getJavaClassName(parameter)); + out.print("\t\tp."); + out.print(strategy.getJavaSetterName(parameter)); out.print("("); if (instance && parameter.equals(procedure.getInParameters().get(0))) { out.print("this"); } else { - out.print(strategy.getJavaClassNameLC(parameter)); + out.print(strategy.getJavaMemberName(parameter)); } out.println(");"); @@ -2141,14 +2145,14 @@ public class DefaultGenerator implements Generator { if (procedure.getOutParameters().size() > 0) { if (instance) { - out.print("\t\tfrom(p.get"); - out.print(strategy.getJavaClassName(procedure.getOutParameters().get(0))); + out.print("\t\tfrom(p."); + out.print(strategy.getJavaGetterName(procedure.getOutParameters().get(0))); out.println("());"); } if (procedure.getOutParameters().size() == 1) { - out.print("\t\treturn p.get"); - out.print(strategy.getJavaClassName(procedure.getOutParameters().get(0))); + out.print("\t\treturn p."); + out.print(strategy.getJavaGetterName(procedure.getOutParameters().get(0))); out.println("();"); } else if (procedure.getOutParameters().size() > 1) { diff --git a/jOOQ-codegen/src/main/java/org/jooq/util/DefaultGeneratorStrategy.java b/jOOQ-codegen/src/main/java/org/jooq/util/DefaultGeneratorStrategy.java index 16360491b7..a1037c72bd 100644 --- a/jOOQ-codegen/src/main/java/org/jooq/util/DefaultGeneratorStrategy.java +++ b/jOOQ-codegen/src/main/java/org/jooq/util/DefaultGeneratorStrategy.java @@ -182,6 +182,11 @@ public class DefaultGeneratorStrategy implements GeneratorStrategy { return "get" + disambiguateMethod(definition, getJavaClassName(definition)); } + @Override + public String getJavaMethodName(Definition definition) { + return disambiguateMethod(definition, getJavaClassName0LC(definition, Mode.DEFAULT)); + } + /** * [#182] Method name disambiguation is important to avoid name clashes due * to pre-existing getters / setters in super classes @@ -289,14 +294,29 @@ public class DefaultGeneratorStrategy implements GeneratorStrategy { } @Override + @Deprecated public final String getJavaClassNameLC(Definition definition) { - return getJavaClassNameLC(definition, Mode.DEFAULT); + return getJavaMemberName(definition, Mode.DEFAULT); } @Override - public String getJavaClassNameLC(Definition definition, Mode mode) { - String result = getJavaClassName0(definition, mode); + @Deprecated + public final String getJavaClassNameLC(Definition definition, Mode mode) { + return getJavaMemberName(definition, mode); + } + @Override + public final String getJavaMemberName(Definition definition) { + return getJavaMemberName(definition, Mode.DEFAULT); + } + + @Override + public String getJavaMemberName(Definition definition, Mode mode) { + return getJavaClassName0LC(definition, mode); + } + + private String getJavaClassName0LC(Definition definition, Mode mode) { + String result = getJavaClassName0(definition, mode); return result.substring(0, 1).toLowerCase() + result.substring(1); } diff --git a/jOOQ-codegen/src/main/java/org/jooq/util/GeneratorStrategy.java b/jOOQ-codegen/src/main/java/org/jooq/util/GeneratorStrategy.java index 1fd8ed45d2..c73b43c1a4 100644 --- a/jOOQ-codegen/src/main/java/org/jooq/util/GeneratorStrategy.java +++ b/jOOQ-codegen/src/main/java/org/jooq/util/GeneratorStrategy.java @@ -65,6 +65,10 @@ public interface GeneratorStrategy { void setTargetPackage(String packageName); /** + * This is applied to definitions that can result in singleton static and + * instance members. For instance, the singleton instance of a + * {@link TableDefinition} is a java identifier + * * @return The Java identifier representing this object, e.g. [my_table] */ String getJavaIdentifier(Definition definition); @@ -81,17 +85,37 @@ public interface GeneratorStrategy { String getFullJavaIdentifierUC(Definition definition); /** + * This is applied to definitions that can result in setters of a container. + * For example, the definition could be a {@link ColumnDefinition}, the + * container a {@link TableDefinition}. Then this would apply to records and + * POJOs. Also, the definition could be an {@link AttributeDefinition} and + * the container a {@link UDTDefinition} + * * @return The Java setter method name representing this object, e.g. * [setMyTable] */ String getJavaSetterName(Definition definition); /** + * This is applied to definitions that can result in getters of a container. + * For example, the definition could be a {@link ColumnDefinition}, the + * container a {@link TableDefinition}. Then this would apply to records and + * POJOs. Also, the definition could be an {@link AttributeDefinition} and + * the container a {@link UDTDefinition} + * * @return The Java getter method name representing this object, e.g. * [getMyTable] */ String getJavaGetterName(Definition definition); + /** + * This is applied to definitions that can result in methods. For example, + * the definition could be a {@link RoutineDefinition} + * + * @return The Java method name representing this object, e.g. [myFunction] + */ + String getJavaMethodName(Definition definition); + /** * This is the same as calling * getJavaClassName(definition, Mode.DEFAULT) @@ -107,14 +131,14 @@ public interface GeneratorStrategy { String getJavaClassName(Definition definition, Mode mode); /** + * This is the same as calling + * getJavaPackageName(definition, Mode.DEFAULT) + * * @return The Java package name of this object, e.g. [org.jooq.generated] */ String getJavaPackageName(Definition definition); /** - * This is the same as calling - * getJavaClassName(definition, Mode.DEFAULT) - * * @return The Java package name of this object, e.g. [org.jooq.generated] */ String getJavaPackageName(Definition definition, Mode mode); @@ -122,17 +146,56 @@ public interface GeneratorStrategy { /** * @return The Java class name representing this object, starting with a * lower case character, e.g. [myTable] + * @deprecated - 2.0.5 - Use {@link #getJavaMemberName(Definition)} or + * {@link #getJavaMethodName(Definition)} instead. The notion of + * this being a class name starting with a lower-case letter is + * too intrusive for custom generator strategies. */ + @Deprecated String getJavaClassNameLC(Definition definition); /** + * @return The Java class name representing this object, starting with a + * lower case character, e.g. [myTableSuffix] + * @deprecated - 2.0.5 - Use {@link #getJavaMemberName(Definition, Mode)} or + * {@link #getJavaMethodName(Definition)} instead. The notion of + * this being a class name starting with a lower-case letter is + * too intrusive for custom generator strategies. + */ + @Deprecated + String getJavaClassNameLC(Definition definition, Mode mode); + + /** + * The "java member name" is applied where a definition is used as a member + * (for POJOs) or as a method argument (for setters). Example definitions + * are + * * This is the same as calling - * getJavaClassName(definition, Mode.DEFAULT) + * getJavaMemberName(definition, Mode.DEFAULT) + * + * @return The Java class name representing this object, starting with a + * lower case character, e.g. [myTable] + */ + String getJavaMemberName(Definition definition); + + /** + * The "java member name" is applied where a definition is used as a member + * (for POJOs) or as a method argument (for setters). Example definitions + * are + * * * @return The Java class name representing this object, starting with a * lower case character, e.g. [myTableSuffix] */ - String getJavaClassNameLC(Definition definition, Mode mode); + String getJavaMemberName(Definition definition, Mode mode); /** * @return The full Java class name representing this object, e.g. @@ -142,7 +205,7 @@ public interface GeneratorStrategy { /** * This is the same as calling - * getJavaClassName(definition, Mode.DEFAULT) + * getFullJavaClassName(definition, Mode.DEFAULT) * * @return The full Java class name representing this object, e.g. * [org.jooq.generated.MyTable][suffix]