[#408] Add class prefixes, suffixes and other options to the code generator - deprecated getJavaClassNameLC, replaced by more meaningful method names

This commit is contained in:
Lukas Eder 2012-02-18 16:06:09 +00:00
parent 1a3b91734b
commit 385e4c6b30
3 changed files with 116 additions and 29 deletions

View File

@ -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) {

View File

@ -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);
}

View File

@ -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
* <code>getJavaClassName(definition, Mode.DEFAULT)</code>
@ -107,14 +131,14 @@ public interface GeneratorStrategy {
String getJavaClassName(Definition definition, Mode mode);
/**
* This is the same as calling
* <code>getJavaPackageName(definition, Mode.DEFAULT)</code>
*
* @return The Java package name of this object, e.g. [org.jooq.generated]
*/
String getJavaPackageName(Definition definition);
/**
* This is the same as calling
* <code>getJavaClassName(definition, Mode.DEFAULT)</code>
*
* @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
* <ul>
* <li> {@link ColumnDefinition}</li>
* <li> {@link ParameterDefinition}</li>
* <li> {@link AttributeDefinition}</li>
* </ul>
* This is the same as calling
* <code>getJavaClassName(definition, Mode.DEFAULT)</code>
* <code>getJavaMemberName(definition, Mode.DEFAULT)</code>
*
* @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
* <ul>
* <li> {@link ColumnDefinition}</li>
* <li> {@link ParameterDefinition}</li>
* <li> {@link AttributeDefinition}</li>
* </ul>
*
* @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
* <code>getJavaClassName(definition, Mode.DEFAULT)</code>
* <code>getFullJavaClassName(definition, Mode.DEFAULT)</code>
*
* @return The full Java class name representing this object, e.g.
* [org.jooq.generated.MyTable][suffix]