[#5354] Add <javaBeansGettersAndSetters/> to the code generator to support JavaBeans
This commit is contained in:
parent
cd14e6a0ea
commit
4c7dd2f806
@ -51,50 +51,51 @@ import org.jooq.tools.JooqLogger;
|
||||
*/
|
||||
abstract class AbstractGenerator implements Generator {
|
||||
|
||||
private static final JooqLogger log = JooqLogger.getLogger(AbstractGenerator.class);
|
||||
private static final JooqLogger log = JooqLogger.getLogger(AbstractGenerator.class);
|
||||
|
||||
boolean generateDeprecated = true;
|
||||
boolean generateRelations = true;
|
||||
boolean generateInstanceFields = true;
|
||||
boolean generateGeneratedAnnotation = true;
|
||||
boolean useSchemaVersionProvider = false;
|
||||
boolean useCatalogVersionProvider = false;
|
||||
boolean generateRoutines = true;
|
||||
boolean generateSequences = true;
|
||||
boolean generateUDTs = true;
|
||||
boolean generateTables = true;
|
||||
boolean generateRecords = true;
|
||||
boolean generatePojos = false;
|
||||
boolean generatePojosEqualsAndHashCode = false;
|
||||
boolean generatePojosToString = true;
|
||||
boolean generateImmutablePojos = false;
|
||||
boolean generateInterfaces = false;
|
||||
boolean generateImmutableInterfaces = false;
|
||||
boolean generateDaos = false;
|
||||
boolean generateJPAAnnotations = false;
|
||||
boolean generateValidationAnnotations = false;
|
||||
boolean generateSpringAnnotations = false;
|
||||
boolean generateQueues = true;
|
||||
boolean generateLinks = true;
|
||||
boolean generateGlobalObjectReferences = true;
|
||||
boolean generateGlobalCatalogReferences = true;
|
||||
boolean generateGlobalSchemaReferences = true;
|
||||
boolean generateGlobalRoutineReferences = true;
|
||||
boolean generateGlobalSequenceReferences = true;
|
||||
boolean generateGlobalTableReferences = true;
|
||||
boolean generateGlobalUDTReferences = true;
|
||||
boolean generateGlobalQueueReferences = true;
|
||||
boolean generateGlobalLinkReferences = true;
|
||||
boolean generateFluentSetters = false;
|
||||
boolean generateVarargsSetters = true;
|
||||
String generateFullyQualifiedTypes = "";
|
||||
boolean generateJavaTimeTypes = false;
|
||||
boolean generateTableValuedFunctions = false;
|
||||
boolean generateEmptyCatalogs = false;
|
||||
boolean generateEmptySchemas = false;
|
||||
boolean generateDeprecated = true;
|
||||
boolean generateRelations = true;
|
||||
boolean generateInstanceFields = true;
|
||||
boolean generateGeneratedAnnotation = true;
|
||||
boolean useSchemaVersionProvider = false;
|
||||
boolean useCatalogVersionProvider = false;
|
||||
boolean generateRoutines = true;
|
||||
boolean generateSequences = true;
|
||||
boolean generateUDTs = true;
|
||||
boolean generateTables = true;
|
||||
boolean generateRecords = true;
|
||||
boolean generatePojos = false;
|
||||
boolean generatePojosEqualsAndHashCode = false;
|
||||
boolean generatePojosToString = true;
|
||||
boolean generateImmutablePojos = false;
|
||||
boolean generateInterfaces = false;
|
||||
boolean generateImmutableInterfaces = false;
|
||||
boolean generateDaos = false;
|
||||
boolean generateJPAAnnotations = false;
|
||||
boolean generateValidationAnnotations = false;
|
||||
boolean generateSpringAnnotations = false;
|
||||
boolean generateQueues = true;
|
||||
boolean generateLinks = true;
|
||||
boolean generateGlobalObjectReferences = true;
|
||||
boolean generateGlobalCatalogReferences = true;
|
||||
boolean generateGlobalSchemaReferences = true;
|
||||
boolean generateGlobalRoutineReferences = true;
|
||||
boolean generateGlobalSequenceReferences = true;
|
||||
boolean generateGlobalTableReferences = true;
|
||||
boolean generateGlobalUDTReferences = true;
|
||||
boolean generateGlobalQueueReferences = true;
|
||||
boolean generateGlobalLinkReferences = true;
|
||||
boolean generateFluentSetters = false;
|
||||
boolean generateJavaBeansGettersAndSetters = false;
|
||||
boolean generateVarargsSetters = true;
|
||||
String generateFullyQualifiedTypes = "";
|
||||
boolean generateJavaTimeTypes = false;
|
||||
boolean generateTableValuedFunctions = false;
|
||||
boolean generateEmptyCatalogs = false;
|
||||
boolean generateEmptySchemas = false;
|
||||
|
||||
protected GeneratorStrategyWrapper strategy;
|
||||
protected String targetEncoding = "UTF-8";
|
||||
protected String targetEncoding = "UTF-8";
|
||||
final Language language;
|
||||
|
||||
AbstractGenerator(Language language) {
|
||||
@ -507,6 +508,16 @@ abstract class AbstractGenerator implements Generator {
|
||||
this.generateFluentSetters = fluentSetters;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean generateJavaBeansGettersAndSetters() {
|
||||
return generateJavaBeansGettersAndSetters;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setGenerateJavaBeansGettersAndSetters(boolean javaBeansGettersAndSetters) {
|
||||
this.generateJavaBeansGettersAndSetters = javaBeansGettersAndSetters;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean generateVarargsSetters() {
|
||||
return generateVarargsSetters;
|
||||
|
||||
@ -49,39 +49,50 @@ public class DefaultGeneratorStrategy extends AbstractGeneratorStrategy {
|
||||
|
||||
private String targetDirectory;
|
||||
private String targetPackage;
|
||||
private boolean instanceFields = true;
|
||||
private boolean instanceFields = true;
|
||||
private boolean javaBeansGettersAndSetters = false;
|
||||
|
||||
// -------------------------------------------------------------------------
|
||||
// Initialisation
|
||||
// -------------------------------------------------------------------------
|
||||
|
||||
@Override
|
||||
public final void setInstanceFields(boolean instanceFields) {
|
||||
public void setInstanceFields(boolean instanceFields) {
|
||||
this.instanceFields = instanceFields;
|
||||
}
|
||||
|
||||
@Override
|
||||
public final boolean getInstanceFields() {
|
||||
public boolean getInstanceFields() {
|
||||
return instanceFields;
|
||||
}
|
||||
|
||||
@Override
|
||||
public final String getTargetDirectory() {
|
||||
public void setJavaBeansGettersAndSetters(boolean javaBeansGettersAndSetters) {
|
||||
this.javaBeansGettersAndSetters = javaBeansGettersAndSetters;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean getJavaBeansGettersAndSetters() {
|
||||
return javaBeansGettersAndSetters;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTargetDirectory() {
|
||||
return targetDirectory;
|
||||
}
|
||||
|
||||
@Override
|
||||
public final void setTargetDirectory(String directory) {
|
||||
public void setTargetDirectory(String directory) {
|
||||
this.targetDirectory = directory;
|
||||
}
|
||||
|
||||
@Override
|
||||
public final String getTargetPackage() {
|
||||
public String getTargetPackage() {
|
||||
return targetPackage;
|
||||
}
|
||||
|
||||
@Override
|
||||
public final void setTargetPackage(String packageName) {
|
||||
public void setTargetPackage(String packageName) {
|
||||
this.targetPackage = packageName;
|
||||
}
|
||||
|
||||
@ -104,14 +115,33 @@ public class DefaultGeneratorStrategy extends AbstractGeneratorStrategy {
|
||||
return definition.getOutputName().toUpperCase();
|
||||
}
|
||||
|
||||
private String getterSetterSuffix(Definition definition) {
|
||||
|
||||
// [#5354] Please forgive me but this is how it works.
|
||||
if (javaBeansGettersAndSetters) {
|
||||
String name = getJavaMemberName(definition);
|
||||
|
||||
if (Character.isUpperCase(name.charAt(0)))
|
||||
return name;
|
||||
if (name.length() > 1 && Character.isUpperCase(name.charAt(1)))
|
||||
return name;
|
||||
|
||||
char chars[] = name.toCharArray();
|
||||
chars[0] = Character.toUpperCase(chars[0]);
|
||||
return new String(chars);
|
||||
}
|
||||
else
|
||||
return getJavaClassName0(definition, Mode.DEFAULT);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getJavaSetterName(Definition definition, Mode mode) {
|
||||
return "set" + getJavaClassName0(definition, Mode.DEFAULT);
|
||||
return "set" + getterSetterSuffix(definition);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getJavaGetterName(Definition definition, Mode mode) {
|
||||
return "get" + getJavaClassName0(definition, Mode.DEFAULT);
|
||||
return "get" + getterSetterSuffix(definition);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -232,7 +262,7 @@ public class DefaultGeneratorStrategy extends AbstractGeneratorStrategy {
|
||||
return result.toString();
|
||||
}
|
||||
|
||||
private final String getSubPackage(Definition definition) {
|
||||
private String getSubPackage(Definition definition) {
|
||||
if (definition instanceof TableDefinition) {
|
||||
return "tables";
|
||||
}
|
||||
|
||||
@ -559,6 +559,8 @@ public class GenerationTool {
|
||||
generator.setGenerateGlobalLinkReferences(g.getGenerate().isGlobalLinkReferences());
|
||||
if (g.getGenerate().isFluentSetters() != null)
|
||||
generator.setGenerateFluentSetters(g.getGenerate().isFluentSetters());
|
||||
if (g.getGenerate().isJavaBeansGettersAndSetters() != null)
|
||||
generator.setGenerateJavaBeansGettersAndSetters(g.getGenerate().isJavaBeansGettersAndSetters());
|
||||
if (g.getGenerate().isVarargSetters() != null)
|
||||
generator.setGenerateVarargsSetters(g.getGenerate().isVarargSetters());
|
||||
if (g.getGenerate().isPojosEqualsAndHashCode() != null)
|
||||
@ -597,6 +599,7 @@ public class GenerationTool {
|
||||
|
||||
// Generator properties that should in fact be strategy properties
|
||||
strategy.setInstanceFields(generator.generateInstanceFields());
|
||||
strategy.setJavaBeansGettersAndSetters(generator.generateJavaBeansGettersAndSetters());
|
||||
|
||||
|
||||
if (true)
|
||||
|
||||
@ -386,6 +386,16 @@ public interface Generator {
|
||||
*/
|
||||
void setGenerateFluentSetters(boolean fluentSetters);
|
||||
|
||||
/**
|
||||
* Whether getters and setters should be generated JavaBeans style (or jOOQ style).
|
||||
*/
|
||||
boolean generateJavaBeansGettersAndSetters();
|
||||
|
||||
/**
|
||||
* Whether getters and setters should be generated JavaBeans style (or jOOQ style).
|
||||
*/
|
||||
void setGenerateJavaBeansGettersAndSetters(boolean javaBeansGettersAndSetters);
|
||||
|
||||
/**
|
||||
* Whether varargs setters should be generated for array types.
|
||||
*/
|
||||
|
||||
@ -75,6 +75,16 @@ public interface GeneratorStrategy {
|
||||
*/
|
||||
boolean getInstanceFields();
|
||||
|
||||
/**
|
||||
* Whether getters and setters should be generated JavaBeans style (or jOOQ style).
|
||||
*/
|
||||
void setJavaBeansGettersAndSetters(boolean javaBeansGettersAndSetters);
|
||||
|
||||
/**
|
||||
* Whether getters and setters should be generated JavaBeans style (or jOOQ style).
|
||||
*/
|
||||
boolean getJavaBeansGettersAndSetters();
|
||||
|
||||
/**
|
||||
* This is applied to definitions that can result in reference static and
|
||||
* instance members. For instance, the reference instance of a
|
||||
|
||||
@ -107,6 +107,16 @@ class GeneratorStrategyWrapper extends AbstractGeneratorStrategy {
|
||||
return delegate.getInstanceFields();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setJavaBeansGettersAndSetters(boolean javaBeansGettersAndSetters) {
|
||||
delegate.setJavaBeansGettersAndSetters(javaBeansGettersAndSetters);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean getJavaBeansGettersAndSetters() {
|
||||
return delegate.getJavaBeansGettersAndSetters();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getFileHeader(Definition definition, Mode mode) {
|
||||
return delegate.getFileHeader(definition, mode);
|
||||
|
||||
@ -972,6 +972,29 @@
|
||||
-->
|
||||
<element name="fluentSetters" type="boolean" default="false" minOccurs="0" maxOccurs="1" />
|
||||
|
||||
<!--
|
||||
Modify DefaultGeneratorStrategy behaviour to generate getters and setters in JavaBeans style in
|
||||
|
||||
- records
|
||||
- pojos
|
||||
- interfaces
|
||||
|
||||
If this flag is set to false, then:
|
||||
|
||||
- Column name : X_INDEX
|
||||
- Attribute name: xIndex
|
||||
- Getter name : getXIndex()
|
||||
- Setter name : setXIndex()
|
||||
|
||||
If this flag is set to false, then:
|
||||
|
||||
- Getter name : getxIndex()
|
||||
- Setter name : setxIndex()
|
||||
|
||||
Custom GeneratorStrategy implementations are unaffected.
|
||||
-->
|
||||
<element name="javaBeansGettersAndSetters" type="boolean" default="false" minOccurs="0" maxOccurs="1" />
|
||||
|
||||
<!--
|
||||
Generate varargs setters for array types for convenience.
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user