/*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* Other licenses:
* -----------------------------------------------------------------------------
* Commercial licenses for this work are available. These replace the above
* ASL 2.0 and offer limited warranties, support, maintenance, and commercial
* database integrations.
*
* For more information, please visit: http://www.jooq.org/licenses
*
*
*
*
*
*
*
*
*
*
*
*
*
*/
package org.jooq.util;
import javax.annotation.Generated;
/**
* The Generator provides a basic interface for java code generation
*
* @author Lukas Eder
*/
public interface Generator {
/**
* Do the code generation
*/
void generate(Database database);
/**
* Set a naming strategy to this generator
*/
void setStrategy(GeneratorStrategy strategy);
/**
* Get this generator's underlying naming strategy
*/
GeneratorStrategy getStrategy();
/**
* Whether deprecated code should be generated
*/
boolean generateDeprecated();
/**
* Whether deprecated code should be generated
*/
void setGenerateDeprecated(boolean generateDeprecated);
/**
* Whether foreign key relations should be resolved
*/
boolean generateRelations();
/**
* Whether foreign key relations should be resolved
*/
void setGenerateRelations(boolean generateRelations);
/**
* Whether table-valued functions should be generated as tables.
*/
boolean generateTableValuedFunctions();
/**
* Whether table-valued functions should be generated as tables.
*/
void setGenerateTableValuedFunctions(boolean generateTableValuedFunctions);
/**
* Whether instance fields should be generated (as opposed to static fields)
*/
boolean generateInstanceFields();
/**
* Whether instance fields should be generated (as opposed to static fields)
*/
void setGenerateInstanceFields(boolean generateInstanceFields);
/**
* Whether the {@link Generated} annotation should be generated
*/
boolean generateGeneratedAnnotation();
/**
* Whether the {@link Generated} annotation should be generated
*/
void setGenerateGeneratedAnnotation(boolean generateGeneratedAnnotation);
boolean useSchemaVersionProvider();
void setUseSchemaVersionProvider(boolean useSchemaVersionProvider);
boolean useCatalogVersionProvider();
void setUseCatalogVersionProvider(boolean useCatalogVersionProvider);
/**
* Whether Routines should be generated.
*/
boolean generateRoutines();
/**
* Whether Routines should be generated.
*/
void setGenerateRoutines(boolean generateRoutines);
/**
* Whether Sequences should be generated.
*/
boolean generateSequences();
/**
* Whether Sequences should be generated.
*/
void setGenerateSequences(boolean generateSequences);
/**
* Whether UDTs should be generated.
*/
boolean generateUDTs();
/**
* Whether UDTs should be generated.
*/
void setGenerateUDTs(boolean generateUDTs);
/**
* Whether Tables should be generated
*/
boolean generateTables();
/**
* Whether Tables should be generated
*/
void setGenerateTables(boolean generateTables);
/**
* Whether TableRecords should be generated in addition to tables
*/
boolean generateRecords();
/**
* Whether TableRecords should be generated in addition to tables
*/
void setGenerateRecords(boolean generateRecords);
/**
* Whether POJO's should be generated in addition to records
*/
boolean generatePojos();
/**
* Whether POJO's should be generated in addition to records
*/
void setGeneratePojos(boolean generatePojos);
/**
* Whether immutable POJO's should be generated in addition to records
*/
boolean generateImmutablePojos();
/**
* Whether immutable POJO's should be generated in addition to records
*/
void setGenerateImmutablePojos(boolean generateImmutablePojos);
/**
* Whether interfaces should be generated to be implemented by records and
* POJO's
*/
boolean generateInterfaces();
/**
* Whether interfaces should be generated to be implemented by records and
* POJO's
*/
void setGenerateInterfaces(boolean generateInterfaces);
/**
* Whether immutable interfaces should be generated in addition to records
*/
boolean generateImmutableInterfaces();
/**
* Whether immutable interfaces should be generated in addition to records
*/
void setGenerateImmutableInterfaces(boolean generateImmutableInterfaces);
/**
* Whether DAO's should be generated in addition to pojos
*/
boolean generateDaos();
/**
* Whether DAO's should be generated in addition to pojos
*/
void setGenerateDaos(boolean generateDaos);
/**
* Whether POJO's and records should be annotated with JPA annotations
*/
boolean generateJPAAnnotations();
/**
* Whether POJO's and records should be annotated with JPA annotations
*/
void setGenerateJPAAnnotations(boolean generateJPAAnnotations);
/**
* Whether POJO's and records should be annotated with JSR-303 validation
* annotations
*/
boolean generateValidationAnnotations();
/**
* Whether POJO's and records should be annotated with JSR-303 validation
* annotations
*/
void setGenerateValidationAnnotations(boolean generateValidationAnnotations);
/**
* Whether DAOs should be annotated with useful spring annotations such as
* <code>@Repository</code> or <code>@Autowired</code>
*/
boolean generateSpringAnnotations();
/**
* Whether DAOs should be annotated with useful spring annotations such as
* <code>@Repository</code> or <code>@Autowired</code>
*/
void setGenerateSpringAnnotations(boolean generateSpringAnnotations);
/**
* Whether global object references should be generated
*/
boolean generateGlobalObjectReferences();
/**
* Whether global object references should be generated
*/
void setGenerateGlobalObjectReferences(boolean generateGlobalObjectReferences);
/**
* Whether global catalog references should be generated
*/
boolean generateGlobalCatalogReferences();
/**
* Whether global catalog references should be generated
*/
void setGenerateGlobalCatalogReferences(boolean globalCatalogReferences);
/**
* Whether global schema references should be generated
*/
boolean generateGlobalSchemaReferences();
/**
* Whether global schema references should be generated
*/
void setGenerateGlobalSchemaReferences(boolean globalSchemaReferences);
/**
* Whether global routine references should be generated
*/
boolean generateGlobalRoutineReferences();
/**
* Whether global routine references should be generated
*/
void setGenerateGlobalRoutineReferences(boolean globalRoutineReferences);
/**
* Whether global sequence references should be generated
*/
boolean generateGlobalSequenceReferences();
/**
* Whether global sequence references should be generated
*/
void setGenerateGlobalSequenceReferences(boolean globalSequenceReferences);
/**
* Whether global table references should be generated
*/
boolean generateGlobalTableReferences();
/**
* Whether global table references should be generated
*/
void setGenerateGlobalTableReferences(boolean globalTableReferences);
/**
* Whether global UDT references should be generated
*/
boolean generateGlobalUDTReferences();
/**
* Whether global UDT references should be generated
*/
void setGenerateGlobalUDTReferences(boolean globalUDTReferences);
/**
* Whether global queue references should be generated
*/
boolean generateGlobalQueueReferences();
/**
* Whether global queue references should be generated
*/
void setGenerateGlobalQueueReferences(boolean globalQueueReferences);
/**
* Whether global link references should be generated
*/
boolean generateGlobalLinkReferences();
/**
* Whether global link references should be generated
*/
void setGenerateGlobalLinkReferences(boolean globalLinkReferences);
/**
* Whether queue related code should be generated
*/
boolean generateQueues();
/**
* Whether queue related code should be generated
*/
void setGenerateQueues(boolean queues);
/**
* Whether link related code should be generated
*/
boolean generateLinks();
/**
* Whether link related code should be generated
*/
void setGenerateLinks(boolean links);
/**
* Whether fluent setters should be generated
*
* @deprecated - Use {@link #generateFluentSetters()} instead.
*/
@Deprecated
boolean fluentSetters();
/**
* Whether fluent setters should be generated
*
* @deprecated - Use {@link #setGenerateFluentSetters(boolean)} instead.
*/
@Deprecated
void setFluentSetters(boolean fluentSetters);
/**
* Whether fluent setters should be generated
*/
boolean generateFluentSetters();
/**
* Whether fluent setters should be generated
*/
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.
*/
boolean generateVarargsSetters();
/**
* Whether varargs setters should be generated for array types.
*/
void setGenerateVarargsSetters(boolean varargsSetters);
/**
* Whether <code>equals()</code> and <code>hashCode()</code> methods should
* be generated on POJOs
*/
boolean generatePojosEqualsAndHashCode();
/**
* Whether <code>equals()</code> and <code>hashCode()</code> methods should
* be generated on POJOs
*/
void setGeneratePojosEqualsAndHashCode(boolean generatePojosEqualsAndHashCode);
/**
* Whether a <code>toString()</code> method should be generated on POJOs
*/
boolean generatePojosToString();
/**
* Whether a <code>toString()</code> method should be generated on POJOs
*/
void setGeneratePojosToString(boolean generatePojosToString);
/**
* A regular expression matching all the types in generated code that should
* be fully qualified.
*
* @deprecated - Use {@link #generateFullyQualifiedTypes()} instead.
*/
@Deprecated
String fullyQualifiedTypes();
/**
* A regular expression matching all the types in generated code that should
* be fully qualified.
*
* @deprecated - Use {@link #setGenerateFullyQualifiedTypes(String)}
* instead.
*/
@Deprecated
void setFullyQualifiedTypes(String fullyQualifiedTypes);
/**
* A regular expression matching all the types in generated code that should
* be fully qualified.
*/
String generateFullyQualifiedTypes();
/**
* A regular expression matching all the types in generated code that should
* be fully qualified.
*/
void setGenerateFullyQualifiedTypes(String generateFullyQualifiedTypes);
/**
* A flag indicating whether Java 8's java.time types should be used by the
* source code generator, rather than JDBC's java.sql types.
* <p>
* This flag is ignored in the commercial Java 6 distribution of jOOQ 3.9+
*/
boolean generateJavaTimeTypes();
/**
* A flag indicating whether Java 8's java.time types should be used by the
* source code generator, rather than JDBC's java.sql types.
* <p>
* This flag is ignored in the commercial Java 6 distribution of jOOQ 3.9+
*/
void setGenerateJavaTimeTypes(boolean generateJavaTimeTypes);
/**
* Whether empty catalogs should still be generated.
*/
boolean generateEmptyCatalogs();
/**
* Whether empty catalogs should still be generated.
*/
void setGenerateEmptyCatalogs(boolean generateEmptyCatalogs);
/**
* Whether empty schemas should still be generated.
*/
boolean generateEmptySchemas();
/**
* Whether empty schemas should still be generated.
*/
void setGenerateEmptySchemas(boolean generateEmptySchemas);
/**
* The target directory
*/
String getTargetDirectory();
/**
* Initialise the target directory
*/
void setTargetDirectory(String directory);
/**
* The target encoding
*/
String getTargetEncoding();
/**
* Initialise the target encoding
*/
void setTargetEncoding(String encoding);
/**
* @return Get the target package for the current configuration
*/
String getTargetPackage();
/**
* Initialise the target package name
*/
void setTargetPackage(String packageName);
}