[#3860] Allow to specify defaults for all regular expression flags in the code generation configuration. Add CASE_INSENSITIVE to defaults
This commit is contained in:
parent
7aa41ef8bf
commit
0d0fef9b11
@ -319,6 +319,9 @@ public class GenerationTool {
|
||||
database.setConfiguredEnumTypes(d.getEnumTypes());
|
||||
database.setConfiguredForcedTypes(d.getForcedTypes());
|
||||
|
||||
if (d.getRegexFlags() != null)
|
||||
database.setRegexFlags(d.getRegexFlags());
|
||||
|
||||
SchemaVersionProvider svp = null;
|
||||
|
||||
if (!StringUtils.isBlank(d.getSchemaVersionProvider())) {
|
||||
|
||||
@ -48,7 +48,7 @@
|
||||
<schemaDirectory>src/main/resources/xsd</schemaDirectory>
|
||||
<bindingDirectory>src/main/resources/xjb/codegen</bindingDirectory>
|
||||
<schemaIncludes>
|
||||
<include>jooq-codegen-3.5.0.xsd</include>
|
||||
<include>jooq-codegen-3.6.0.xsd</include>
|
||||
</schemaIncludes>
|
||||
<generatePackage>org.jooq.util.jaxb</generatePackage>
|
||||
<args>
|
||||
|
||||
@ -80,6 +80,7 @@ import org.jooq.tools.csv.CSVReader;
|
||||
import org.jooq.util.jaxb.CustomType;
|
||||
import org.jooq.util.jaxb.EnumType;
|
||||
import org.jooq.util.jaxb.ForcedType;
|
||||
import org.jooq.util.jaxb.RegexFlag;
|
||||
import org.jooq.util.jaxb.Schema;
|
||||
// ...
|
||||
|
||||
@ -100,6 +101,7 @@ public abstract class AbstractDatabase implements Database {
|
||||
private SQLDialect dialect;
|
||||
private Connection connection;
|
||||
private DSLContext create;
|
||||
private List<RegexFlag> regexFlags;
|
||||
private List<Filter> filters;
|
||||
private String[] excludes;
|
||||
private String[] includes;
|
||||
@ -149,13 +151,13 @@ public abstract class AbstractDatabase implements Database {
|
||||
private transient Map<SchemaDefinition, List<RoutineDefinition>> routinesBySchema;
|
||||
private transient Map<SchemaDefinition, List<PackageDefinition>> packagesBySchema;
|
||||
|
||||
private static Map<String, Pattern> patterns;
|
||||
|
||||
// Other caches
|
||||
private final Map<Table<?>, Boolean> exists;
|
||||
private final Map<String, Pattern> patterns;
|
||||
|
||||
protected AbstractDatabase() {
|
||||
exists = new HashMap<Table<?>, Boolean>();
|
||||
patterns = new HashMap<String, Pattern>();
|
||||
filters = new ArrayList<Database.Filter>();
|
||||
}
|
||||
|
||||
@ -227,13 +229,36 @@ public abstract class AbstractDatabase implements Database {
|
||||
return result;
|
||||
}
|
||||
|
||||
final static Pattern pattern(String regex) {
|
||||
if (patterns == null)
|
||||
patterns = new HashMap<String, Pattern>();
|
||||
|
||||
final Pattern pattern(String regex) {
|
||||
Pattern pattern = patterns.get(regex);
|
||||
|
||||
if (pattern == null) {
|
||||
pattern = Pattern.compile(regex, Pattern.COMMENTS);
|
||||
int flags = 0;
|
||||
|
||||
List<RegexFlag> list = new ArrayList<RegexFlag>(getRegexFlags());
|
||||
|
||||
// [#3860] This should really be handled by JAXB, but apparently, @XmlList and @XmlElement(defaultValue=...)
|
||||
// cannot be combined: http://stackoverflow.com/q/27528698/521799
|
||||
if (list.isEmpty()) {
|
||||
list.add(RegexFlag.COMMENTS);
|
||||
list.add(RegexFlag.CASE_INSENSITIVE);
|
||||
}
|
||||
|
||||
for (RegexFlag flag : list) {
|
||||
switch (flag) {
|
||||
case CANON_EQ: flags |= Pattern.CANON_EQ; break;
|
||||
case CASE_INSENSITIVE: flags |= Pattern.CASE_INSENSITIVE; break;
|
||||
case COMMENTS: flags |= Pattern.COMMENTS; break;
|
||||
case DOTALL: flags |= Pattern.DOTALL; break;
|
||||
case LITERAL: flags |= Pattern.LITERAL; break;
|
||||
case MULTILINE: flags |= Pattern.MULTILINE; break;
|
||||
case UNICODE_CASE: flags |= Pattern.UNICODE_CASE; break;
|
||||
case UNICODE_CHARACTER_CLASS: flags |= 0x100; break; // Pattern.UNICODE_CHARACTER_CLASS: Java 1.7 only
|
||||
case UNIX_LINES: flags |= Pattern.UNIX_LINES; break;
|
||||
}
|
||||
}
|
||||
|
||||
pattern = Pattern.compile(regex, flags);
|
||||
patterns.put(regex, pattern);
|
||||
}
|
||||
|
||||
@ -383,6 +408,16 @@ public abstract class AbstractDatabase implements Database {
|
||||
return includeExcludeColumns;
|
||||
}
|
||||
|
||||
@Override
|
||||
public final void setRegexFlags(List<RegexFlag> regexFlags) {
|
||||
this.regexFlags = regexFlags;
|
||||
}
|
||||
|
||||
@Override
|
||||
public final List<RegexFlag> getRegexFlags() {
|
||||
return regexFlags;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setRecordVersionFields(String[] recordVersionFields) {
|
||||
this.recordVersionFields = recordVersionFields;
|
||||
@ -930,16 +965,17 @@ public abstract class AbstractDatabase implements Database {
|
||||
}
|
||||
}
|
||||
|
||||
protected final <T extends Definition> List<T> filterExcludeInclude(List<T> definitions) {
|
||||
@Override
|
||||
public final <T extends Definition> List<T> filterExcludeInclude(List<T> definitions) {
|
||||
return filterExcludeInclude(definitions, excludes, includes, filters);
|
||||
}
|
||||
|
||||
protected static final <T extends Definition> List<T> filterExcludeInclude(List<T> definitions, String[] excludes, String[] includes, List<Filter> filters) {
|
||||
protected final <T extends Definition> List<T> filterExcludeInclude(List<T> definitions, String[] e, String[] i, List<Filter> f) {
|
||||
List<T> result = new ArrayList<T>();
|
||||
|
||||
definitionsLoop: for (T definition : definitions) {
|
||||
if (excludes != null) {
|
||||
for (String exclude : excludes) {
|
||||
if (e != null) {
|
||||
for (String exclude : e) {
|
||||
Pattern p = pattern(exclude);
|
||||
|
||||
if (exclude != null &&
|
||||
@ -954,8 +990,8 @@ public abstract class AbstractDatabase implements Database {
|
||||
}
|
||||
}
|
||||
|
||||
if (includes != null) {
|
||||
for (String include : includes) {
|
||||
if (i != null) {
|
||||
for (String include : i) {
|
||||
Pattern p = pattern(include);
|
||||
|
||||
if (include != null &&
|
||||
@ -965,7 +1001,7 @@ public abstract class AbstractDatabase implements Database {
|
||||
// [#3488] This allows for filtering out additional objects, in case the applicable
|
||||
// code generation configuration might cause conflicts in resulting code
|
||||
// [#3526] Filters should be applied last, after <exclude/> and <include/>
|
||||
for (Filter filter : filters) {
|
||||
for (Filter filter : f) {
|
||||
if (filter.exclude(definition)) {
|
||||
|
||||
if (log.isDebugEnabled())
|
||||
|
||||
@ -42,7 +42,6 @@
|
||||
package org.jooq.util;
|
||||
|
||||
import static org.jooq.util.AbstractDatabase.fetchedSize;
|
||||
import static org.jooq.util.AbstractDatabase.filterExcludeInclude;
|
||||
import static org.jooq.util.AbstractDatabase.getDefinition;
|
||||
|
||||
import java.sql.SQLException;
|
||||
@ -91,7 +90,7 @@ extends AbstractDefinition {
|
||||
|
||||
// [#2603] Filter exclude / include also for table columns
|
||||
if (this instanceof TableDefinition && db.getIncludeExcludeColumns()) {
|
||||
elements = filterExcludeInclude(e, db.getExcludes(), db.getIncludes(), db.getFilters());
|
||||
elements = db.filterExcludeInclude(e);
|
||||
log.info("Columns fetched", fetchedSize(e, elements));
|
||||
}
|
||||
else {
|
||||
|
||||
@ -51,6 +51,7 @@ import org.jooq.Table;
|
||||
import org.jooq.util.jaxb.CustomType;
|
||||
import org.jooq.util.jaxb.EnumType;
|
||||
import org.jooq.util.jaxb.ForcedType;
|
||||
import org.jooq.util.jaxb.RegexFlag;
|
||||
import org.jooq.util.jaxb.Schema;
|
||||
|
||||
/**
|
||||
@ -247,6 +248,21 @@ public interface Database {
|
||||
*/
|
||||
List<Filter> getFilters();
|
||||
|
||||
/**
|
||||
* Filter a list of definitions according to the exclude / include / and filter settings of this database.
|
||||
*/
|
||||
<D extends Definition> List<D> filterExcludeInclude(List<D> definitions);
|
||||
|
||||
/**
|
||||
* The regular expression flags that should be applied when using regular expressions.
|
||||
*/
|
||||
void setRegexFlags(List<RegexFlag> regexFlags);
|
||||
|
||||
/**
|
||||
* The regular expression flags that should be applied when using regular expressions.
|
||||
*/
|
||||
List<RegexFlag> getRegexFlags();
|
||||
|
||||
/**
|
||||
* Table columns matching these regular expressions will be considered as
|
||||
* record version fields in generated code.
|
||||
|
||||
@ -11,7 +11,7 @@
|
||||
<jaxb:globalBindings>
|
||||
|
||||
<!-- Force all classes implements Serializable -->
|
||||
<xjc:serializable uid="350" />
|
||||
<xjc:serializable uid="360" />
|
||||
|
||||
<!-- [#2401] Trim unnecessary whitespace from configuration -->
|
||||
<xjc:javaType name="java.lang.String" xmlType="xs:string" adapter="org.jooq.util.jaxb.tools.TrimAdapter"/>
|
||||
@ -19,7 +19,7 @@
|
||||
|
||||
|
||||
<!-- Annotate the following classes with @SuppressWarnings -->
|
||||
<jaxb:bindings schemaLocation="../../xsd/jooq-codegen-3.5.0.xsd" multiple="true" node="//xs:complexType">
|
||||
<jaxb:bindings schemaLocation="../../xsd/jooq-codegen-3.6.0.xsd" multiple="true" node="//xs:complexType">
|
||||
<annox:annotate>
|
||||
<annox:annotate annox:class="java.lang.SuppressWarnings" value="all" />
|
||||
</annox:annotate>
|
||||
|
||||
741
jOOQ-meta/src/main/resources/xsd/jooq-codegen-3.6.0.xsd
Normal file
741
jOOQ-meta/src/main/resources/xsd/jooq-codegen-3.6.0.xsd
Normal file
@ -0,0 +1,741 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<schema xmlns="http://www.w3.org/2001/XMLSchema"
|
||||
xmlns:tns="http://www.jooq.org/xsd/jooq-codegen-3.6.0.xsd"
|
||||
targetNamespace="http://www.jooq.org/xsd/jooq-codegen-3.6.0.xsd"
|
||||
elementFormDefault="qualified">
|
||||
|
||||
<element name="configuration">
|
||||
<complexType>
|
||||
<all>
|
||||
|
||||
<!--
|
||||
The JDBC configuration element contains information about how
|
||||
to set up the database connection used for source code generation
|
||||
-->
|
||||
<element name="jdbc" type="tns:Jdbc" minOccurs="0" maxOccurs="1" />
|
||||
|
||||
<!--
|
||||
The GENERATOR configuration element contains information about
|
||||
source code generation itself
|
||||
-->
|
||||
<element name="generator" type="tns:Generator" minOccurs="1" maxOccurs="1" />
|
||||
</all>
|
||||
</complexType>
|
||||
</element>
|
||||
|
||||
<complexType name="Jdbc">
|
||||
<all>
|
||||
<!-- The JDBC driver -->
|
||||
<element name="driver" type="string" minOccurs="1" maxOccurs="1" />
|
||||
|
||||
<!-- The JDBC connection URL -->
|
||||
<element name="url" type="string" minOccurs="1" maxOccurs="1" />
|
||||
|
||||
<!-- Deprecated. Use database schema configuration elements instead -->
|
||||
<element name="schema" type="string" minOccurs="0" maxOccurs="1" />
|
||||
|
||||
<!--
|
||||
The JDBC connection user. Be sure this user has all required
|
||||
GRANTs to the dictionary views/tables to generate the desired artefacts
|
||||
-->
|
||||
<element name="user" type="string" minOccurs="0" maxOccurs="1" />
|
||||
|
||||
<!-- The JDBC connection password -->
|
||||
<element name="password" type="string" minOccurs="0" maxOccurs="1" />
|
||||
|
||||
<!--
|
||||
Enlist custom JDBC driver properties that are provided to the
|
||||
java.sql.DriverManager when fetching a connection
|
||||
-->
|
||||
<element name="properties" type="tns:Properties" minOccurs="0" maxOccurs="1" />
|
||||
</all>
|
||||
</complexType>
|
||||
|
||||
<complexType name="Properties">
|
||||
<sequence>
|
||||
<element name="property" type="tns:Property" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<complexType name="Property">
|
||||
<all>
|
||||
<element name="key" type="string" minOccurs="1" maxOccurs="1"/>
|
||||
<element name="value" type="string" minOccurs="1" maxOccurs="1"/>
|
||||
</all>
|
||||
</complexType>
|
||||
|
||||
<complexType name="Generator">
|
||||
<all>
|
||||
<!--
|
||||
The class used to generate source code. You may override this with
|
||||
your custom source code generator
|
||||
-->
|
||||
<element name="name" type="string" default="org.jooq.util.DefaultGenerator"
|
||||
minOccurs="0" maxOccurs="1" />
|
||||
|
||||
<!-- The naming strategy used for class and field names -->
|
||||
<element name="strategy" type="tns:Strategy" minOccurs="0" maxOccurs="1" />
|
||||
|
||||
<!-- The jooq-meta configuration -->
|
||||
<element name="database" type="tns:Database" minOccurs="1" maxOccurs="1" />
|
||||
|
||||
<!-- The jooq-codegen configuration -->
|
||||
<element name="generate" type="tns:Generate" minOccurs="0" maxOccurs="1" />
|
||||
|
||||
<!-- Some information about generation output -->
|
||||
<element name="target" type="tns:Target" minOccurs="0" maxOccurs="1" />
|
||||
</all>
|
||||
</complexType>
|
||||
|
||||
<complexType name="Strategy">
|
||||
<choice>
|
||||
<!--
|
||||
The class used to provide a naming strategy for generated source
|
||||
code. You may override this with your custom naming strategy
|
||||
-->
|
||||
<element name="name" type="string" minOccurs="0" maxOccurs="1"
|
||||
default="org.jooq.util.DefaultGeneratorStrategy" />
|
||||
|
||||
<!--
|
||||
The matcher strategy configuration used when applying an
|
||||
XML-based strategy
|
||||
-->
|
||||
<element name="matchers" type="tns:Matchers" minOccurs="0" maxOccurs="1"/>
|
||||
</choice>
|
||||
</complexType>
|
||||
|
||||
<!--
|
||||
Matchers can be used to provide a naming strategy by regular expression configuration.
|
||||
-->
|
||||
<complexType name="Matchers">
|
||||
<sequence>
|
||||
|
||||
<!--
|
||||
Specify 0..n schema matchers in order to provide a naming strategy for objects
|
||||
created from schemas.
|
||||
-->
|
||||
<element name="schemas" type="tns:MatchersSchemasType" minOccurs="0" maxOccurs="1"/>
|
||||
|
||||
<!--
|
||||
Specify 0..n table matchers in order to provide a naming strategy for objects
|
||||
created from database tables.
|
||||
-->
|
||||
<element name="tables" type="tns:MatchersTablesType" minOccurs="0" maxOccurs="1"/>
|
||||
|
||||
<!--
|
||||
Specify 0..n field matchers in order to provide a naming strategy for objects
|
||||
created from table fields.
|
||||
-->
|
||||
<element name="fields" type="tns:MatchersFieldsType" minOccurs="0" maxOccurs="1"/>
|
||||
|
||||
<!--
|
||||
Specify 0..n routine matchers in order to provide a naming strategy for objects
|
||||
created from routines.
|
||||
-->
|
||||
<element name="routines" type="tns:MatchersRoutinesType" minOccurs="0" maxOccurs="1"/>
|
||||
|
||||
<!--
|
||||
Specify 0..n sequence matchers in order to provide a naming strategy for objects
|
||||
created from sequences.
|
||||
-->
|
||||
<element name="sequences" type="tns:MatchersSequencesType" minOccurs="0" maxOccurs="1"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<complexType name="MatchersSchemasType">
|
||||
<sequence>
|
||||
<element name="schema" type="tns:MatchersSchemaType" minOccurs="1" maxOccurs="unbounded"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<complexType name="MatchersSchemaType">
|
||||
<all>
|
||||
|
||||
<!--
|
||||
This schema matcher applies to all unqualified or qualified schema names
|
||||
matched by this expression. If left empty, this matcher applies to all schemas.
|
||||
-->
|
||||
<element name="expression" type="string" minOccurs="0" maxOccurs="1"/>
|
||||
|
||||
<!--
|
||||
These elements influence the naming of a generated org.jooq.Schema object.
|
||||
-->
|
||||
<element name="schemaClass" type="tns:MatcherRule" minOccurs="0" maxOccurs="1" />
|
||||
<element name="schemaIdentifier" type="tns:MatcherRule" minOccurs="0" maxOccurs="1" />
|
||||
<element name="schemaImplements" type="string" minOccurs="0" maxOccurs="1" />
|
||||
</all>
|
||||
</complexType>
|
||||
|
||||
<complexType name="MatchersTablesType">
|
||||
<sequence>
|
||||
<element name="table" type="tns:MatchersTableType" minOccurs="1" maxOccurs="unbounded"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<complexType name="MatchersTableType">
|
||||
<all>
|
||||
|
||||
<!--
|
||||
This table matcher applies to all unqualified or qualified table names
|
||||
matched by this expression. If left empty, this matcher applies to all tables.
|
||||
-->
|
||||
<element name="expression" type="string" minOccurs="0" maxOccurs="1"/>
|
||||
|
||||
<!--
|
||||
These elements influence the naming of a generated org.jooq.Table object.
|
||||
-->
|
||||
<element name="tableClass" type="tns:MatcherRule" minOccurs="0" maxOccurs="1"/>
|
||||
<element name="tableIdentifier" type="tns:MatcherRule" minOccurs="0" maxOccurs="1"/>
|
||||
<element name="tableImplements" type="string" minOccurs="0" maxOccurs="1"/>
|
||||
|
||||
<!--
|
||||
These elements influence the naming of a generated org.jooq.Record object.
|
||||
-->
|
||||
<element name="recordClass" type="tns:MatcherRule" minOccurs="0" maxOccurs="1"/>
|
||||
<element name="recordImplements" type="string" minOccurs="0" maxOccurs="1"/>
|
||||
|
||||
<!--
|
||||
These elements influence the naming of a generated interface, implemented by
|
||||
generated org.jooq.Record objects and by generated POJOs.
|
||||
-->
|
||||
<element name="interfaceClass" type="tns:MatcherRule" minOccurs="0" maxOccurs="1"/>
|
||||
<element name="interfaceImplements" type="string" minOccurs="0" maxOccurs="1"/>
|
||||
|
||||
<!--
|
||||
These elements influence the naming of a generated org.jooq.DAO object.
|
||||
-->
|
||||
<element name="daoClass" type="tns:MatcherRule" minOccurs="0" maxOccurs="1"/>
|
||||
<element name="daoImplements" type="string" minOccurs="0" maxOccurs="1"/>
|
||||
|
||||
<!--
|
||||
These elements influence the naming of a generated POJO object.
|
||||
-->
|
||||
<element name="pojoClass" type="tns:MatcherRule" minOccurs="0" maxOccurs="1"/>
|
||||
<element name="pojoExtends" type="string" minOccurs="0" maxOccurs="1"/>
|
||||
<element name="pojoImplements" type="string" minOccurs="0" maxOccurs="1"/>
|
||||
</all>
|
||||
</complexType>
|
||||
|
||||
<complexType name="MatchersFieldsType">
|
||||
<sequence>
|
||||
<element name="field" type="tns:MatchersFieldType" minOccurs="1" maxOccurs="unbounded"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<complexType name="MatchersFieldType">
|
||||
<all>
|
||||
|
||||
<!--
|
||||
This field matcher applies to all unqualified or qualified field names
|
||||
matched by this expression. If left empty, this matcher applies to all fields.
|
||||
-->
|
||||
<element name="expression" type="string" minOccurs="0" maxOccurs="1"/>
|
||||
|
||||
<!--
|
||||
These elements influence the naming of a generated org.jooq.Field object.
|
||||
-->
|
||||
<element name="fieldIdentifier" type="tns:MatcherRule" minOccurs="0" maxOccurs="1"/>
|
||||
<element name="fieldMember" type="tns:MatcherRule" minOccurs="0" maxOccurs="1"/>
|
||||
<element name="fieldSetter" type="tns:MatcherRule" minOccurs="0" maxOccurs="1"/>
|
||||
<element name="fieldGetter" type="tns:MatcherRule" minOccurs="0" maxOccurs="1"/>
|
||||
</all>
|
||||
</complexType>
|
||||
|
||||
<complexType name="MatchersRoutinesType">
|
||||
<sequence>
|
||||
<element name="routine" type="tns:MatchersRoutineType" minOccurs="1" maxOccurs="unbounded"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<complexType name="MatchersRoutineType">
|
||||
<all>
|
||||
|
||||
<!--
|
||||
This routine matcher applies to all unqualified or qualified routine names
|
||||
matched by this expression. If left empty, this matcher applies to all routines.
|
||||
-->
|
||||
<element name="expression" type="string" minOccurs="0" maxOccurs="1"/>
|
||||
|
||||
<!--
|
||||
These elements influence the naming of a generated org.jooq.Routine object.
|
||||
-->
|
||||
<element name="routineClass" type="tns:MatcherRule" minOccurs="0" maxOccurs="1" />
|
||||
<element name="routineMethod" type="tns:MatcherRule" minOccurs="0" maxOccurs="1" />
|
||||
<element name="routineImplements" type="string" minOccurs="0" maxOccurs="1"/>
|
||||
</all>
|
||||
</complexType>
|
||||
|
||||
<complexType name="MatchersSequencesType">
|
||||
<sequence>
|
||||
<element name="sequence" type="tns:MatchersSequenceType" minOccurs="1" maxOccurs="unbounded"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<complexType name="MatchersSequenceType">
|
||||
<all>
|
||||
|
||||
<!--
|
||||
This sequence matcher applies to all unqualified or qualified sequence names
|
||||
matched by this expression. If left empty, this matcher applies to all sequences.
|
||||
-->
|
||||
<element name="expression" type="string" minOccurs="0" maxOccurs="1"/>
|
||||
|
||||
<!--
|
||||
These elements influence the naming of the generated Sequences class.
|
||||
-->
|
||||
<element name="sequenceIdentifier" type="tns:MatcherRule" minOccurs="0" maxOccurs="1" />
|
||||
</all>
|
||||
</complexType>
|
||||
|
||||
<complexType name="MatcherRule">
|
||||
<all>
|
||||
<element name="transform" type="tns:MatcherTransformType" minOccurs="0" maxOccurs="1"/>
|
||||
<element name="expression" type="string" minOccurs="1" maxOccurs="1"/>
|
||||
</all>
|
||||
</complexType>
|
||||
|
||||
<simpleType name="MatcherTransformType">
|
||||
<restriction base="string">
|
||||
<enumeration value="AS_IS"/>
|
||||
<enumeration value="LOWER"/>
|
||||
<enumeration value="UPPER"/>
|
||||
<enumeration value="CAMEL"/>
|
||||
<enumeration value="PASCAL"/>
|
||||
</restriction>
|
||||
</simpleType>
|
||||
|
||||
<complexType name="Database">
|
||||
<all>
|
||||
<!--
|
||||
The database dialect from jooq-meta. Available dialects are
|
||||
named org.util.[database].[database]Database.
|
||||
|
||||
Natively supported values are:
|
||||
|
||||
org.jooq.util.ase.ASEDatabase
|
||||
org.jooq.util.cubrid.CUBRIDDatabase
|
||||
org.jooq.util.db2.DB2Database
|
||||
org.jooq.util.derby.DerbyDatabase
|
||||
org.jooq.util.firebird.FirebirdDatabase
|
||||
org.jooq.util.h2.H2Database
|
||||
org.jooq.util.hsqldb.HSQLDBDatabase
|
||||
org.jooq.util.informix.InformixDatabase
|
||||
org.jooq.util.ingres.IngresDatabase
|
||||
org.jooq.util.mariadb.MariaDBDatabase
|
||||
org.jooq.util.mysql.MySQLDatabase
|
||||
org.jooq.util.oracle.OracleDatabase
|
||||
org.jooq.util.postgres.PostgresDatabase
|
||||
org.jooq.util.sqlite.SQLiteDatabaes
|
||||
org.jooq.util.sqlserver.SQLServerDatabase
|
||||
org.jooq.util.sybase.SybaseDatabase
|
||||
|
||||
This value can be used to reverse-engineer generic JDBC DatabaseMetaData (e.g. for MS Access)
|
||||
|
||||
org.jooq.util.jdbc.JDBCDatabase
|
||||
|
||||
This value can be used to reverse-engineer standard jOOQ-meta XML formats
|
||||
|
||||
org.jooq.util.xml.XMLDatabase
|
||||
|
||||
You can also provide your own org.jooq.util.Database implementation
|
||||
here, if your database is currently not supported
|
||||
-->
|
||||
<element name="name" type="string" minOccurs="1" maxOccurs="1" />
|
||||
|
||||
<!--
|
||||
The properties that will be passed to the Database instance as configured above.
|
||||
|
||||
Known supported properties include:
|
||||
|
||||
org.jooq.util.xml.XMLDatabase
|
||||
|
||||
dialect=ORACLE
|
||||
xml-file=C:\path\to\database.xml
|
||||
xsl-files=C:\path\to\1.xsl,C:\path\to\2.xsl
|
||||
|
||||
-->
|
||||
<element name="properties" type="tns:Properties" minOccurs="0" maxOccurs="1" />
|
||||
|
||||
<!--
|
||||
The flags that will be applied to all regular expressions from this configuration by default.
|
||||
|
||||
The default value is "COMMENTS CASE_INSENSITIVE"
|
||||
-->
|
||||
<element name="regexFlags" type="tns:RegexFlags" minOccurs="0" maxOccurs="1" default="COMMENTS CASE_INSENSITIVE"/>
|
||||
|
||||
<!--
|
||||
All elements that are generated from your schema (A Java regular expression.
|
||||
Use the pipe to separate several expressions) Watch out for
|
||||
case-sensitivity. Depending on your database, this might be
|
||||
important!
|
||||
|
||||
You can create case-insensitive regular expressions
|
||||
using this syntax: (?i:expr)
|
||||
|
||||
Whitespace is ignored and comments are possible.
|
||||
-->
|
||||
<element name="includes" type="string" default=".*" minOccurs="0" maxOccurs="1" />
|
||||
|
||||
<!--
|
||||
All elements that are excluded from your schema (A Java regular expression.
|
||||
Use the pipe to separate several expressions). Excludes match before
|
||||
includes
|
||||
-->
|
||||
<element name="excludes" type="string" default="" minOccurs="0" maxOccurs="1" />
|
||||
|
||||
<!--
|
||||
This flag indicates whether include / exclude patterns should also match
|
||||
columns within tables.
|
||||
-->
|
||||
<element name="includeExcludeColumns" type="boolean" default="false" minOccurs="0" maxOccurs="1" />
|
||||
|
||||
<!--
|
||||
All table and view columns that are used as "version" fields for
|
||||
optimistic locking (A Java regular expression. Use the pipe to separate several expressions).
|
||||
See UpdatableRecord.store() and UpdatableRecord.delete() for details
|
||||
-->
|
||||
<element name="recordVersionFields" type="string" default="" minOccurs="0" maxOccurs="1" />
|
||||
|
||||
<!--
|
||||
All table and view columns that are used as "timestamp" fields for
|
||||
optimistic locking (A Java regular expression. Use the pipe to separate several expressions).
|
||||
See UpdatableRecord.store() and UpdatableRecord.delete() for details
|
||||
-->
|
||||
<element name="recordTimestampFields" type="string" default="" minOccurs="0" maxOccurs="1" />
|
||||
|
||||
<!--
|
||||
A regular expression matching all columns that participate in "synthetic" primary keys,
|
||||
which should be placed on generated UpdatableRecords, to be used with
|
||||
|
||||
- UpdatableRecord.store()
|
||||
- UpdatableRecord.update()
|
||||
- UpdatableRecord.delete()
|
||||
- UpdatableRecord.refresh()
|
||||
|
||||
Synthetic primary keys will override existing primary keys.
|
||||
-->
|
||||
<element name="syntheticPrimaryKeys" type="string" default="" minOccurs="0" maxOccurs="1" />
|
||||
|
||||
<!--
|
||||
All (UNIQUE) key names that should be used instead of primary keys on
|
||||
generated UpdatableRecords, to be used with
|
||||
|
||||
- UpdatableRecord.store()
|
||||
- UpdatableRecord.update()
|
||||
- UpdatableRecord.delete()
|
||||
- UpdatableRecord.refresh()
|
||||
|
||||
If several keys match, a warning is emitted and the first one encountered will be used.
|
||||
|
||||
This flag will also replace synthetic primary keys, if it matches.
|
||||
-->
|
||||
<element name="overridePrimaryKeys" type="string" default="" minOccurs="0" maxOccurs="1" />
|
||||
|
||||
<!--
|
||||
Generate java.sql.Timestamp fields for DATE columns. This is
|
||||
particularly useful for Oracle databases
|
||||
-->
|
||||
<element name="dateAsTimestamp" type="boolean" default="false" minOccurs="0" maxOccurs="1" />
|
||||
|
||||
<!--
|
||||
Generate jOOU data types for your unsigned data types, which are
|
||||
not natively supported in Java
|
||||
-->
|
||||
<element name="unsignedTypes" type="boolean" default="true" minOccurs="0" maxOccurs="1" />
|
||||
|
||||
<!--
|
||||
The schema that is used locally as a source for meta information.
|
||||
This could be your development schema or the production schema, etc
|
||||
This cannot be combined with the schemata element.
|
||||
If left empty (and without any schemata element), jOOQ will generate all available schemata.
|
||||
For backwards compatibility, this defaults to jdbc/schema
|
||||
-->
|
||||
<element name="inputSchema" type="string" default="" minOccurs="0" maxOccurs="1" />
|
||||
|
||||
<!--
|
||||
A custom version number that, if available, will be used to assess whether the above
|
||||
<inputSchema/> will need to be regenerated.
|
||||
|
||||
There are three operation modes for this element:
|
||||
|
||||
- The value is a class that can be found on the classpath and that implements
|
||||
org.jooq.util.SchemaVersionProvider. Such classes must provide a default constructor
|
||||
- The value is a SELECT statement that returns one record with one column. The
|
||||
SELECT statement may contain a named variable called :schema_name
|
||||
- The value is a constant, such as a Maven property
|
||||
|
||||
Schema versions will be generated into the javax.annotation.Generated annotation on
|
||||
generated artefacts.
|
||||
-->
|
||||
<element name="schemaVersionProvider" type="string" default="" minOccurs="0" maxOccurs="1"/>
|
||||
|
||||
<!--
|
||||
The schema that is used in generated source code. This will be the
|
||||
production schema. Use this to override your local development
|
||||
schema name for source code generation. If not specified, this
|
||||
will be the same as the input-schema.
|
||||
|
||||
This will be ignored if outputSchemaToDefault is set to true
|
||||
-->
|
||||
<element name="outputSchema" type="string" minOccurs="0" maxOccurs="1" />
|
||||
|
||||
<!--
|
||||
A flag to indicate that the outputSchema should be the "default" schema,
|
||||
which generates schema-less, unqualified tables, procedures, etc.
|
||||
-->
|
||||
<element name="outputSchemaToDefault" type="boolean" minOccurs="0" maxOccurs="1" default="false" />
|
||||
|
||||
<!--
|
||||
A configuration element to configure several input and/or output
|
||||
schemata for jooq-meta, in case you're using jooq-meta in a multi-
|
||||
schema environment
|
||||
-->
|
||||
<element name="schemata" type="tns:Schemata" minOccurs="0" maxOccurs="1"/>
|
||||
|
||||
<!--
|
||||
A configuration element to configure custom types introduced to jOOQ
|
||||
using converters
|
||||
-->
|
||||
<element name="customTypes" type="tns:CustomTypes" minOccurs="0" maxOccurs="1"/>
|
||||
|
||||
<!--
|
||||
A configuration element to configure synthetic enum types
|
||||
This is EXPERIMENTAL / DEPRECATED functionality. Do not re-use
|
||||
-->
|
||||
<element name="enumTypes" type="tns:EnumTypes" minOccurs="0" maxOccurs="1"/>
|
||||
|
||||
<!--
|
||||
A configuration element to configure type overrides for generated
|
||||
artefacts (e.g. in combination with enumTypes)
|
||||
-->
|
||||
<element name="forcedTypes" type="tns:ForcedTypes" minOccurs="0" maxOccurs="1"/>
|
||||
</all>
|
||||
</complexType>
|
||||
|
||||
<complexType name="Schemata">
|
||||
<sequence>
|
||||
<!--
|
||||
A configuration element for a single schema in multi-schema
|
||||
environments
|
||||
-->
|
||||
<element name="schema" type="tns:Schema" minOccurs="1" maxOccurs="unbounded"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<complexType name="Schema">
|
||||
<all>
|
||||
<!-- See also database/inputSchema -->
|
||||
<element name="inputSchema" type="string" default="" minOccurs="1" maxOccurs="1" />
|
||||
|
||||
<!-- See also database/outputSchema -->
|
||||
<element name="outputSchema" type="string" minOccurs="0" maxOccurs="1" />
|
||||
|
||||
<!-- See also database/outputSchemaDefault -->
|
||||
<element name="outputSchemaToDefault" type="boolean" minOccurs="0" maxOccurs="1" default="false" />
|
||||
</all>
|
||||
</complexType>
|
||||
|
||||
<complexType name="CustomTypes">
|
||||
<sequence>
|
||||
<!-- A configuration element for a custom type -->
|
||||
<element name="customType" type="tns:CustomType" minOccurs="0" maxOccurs="unbounded" />
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<complexType name="EnumTypes">
|
||||
<sequence>
|
||||
<!-- A configuration element for a synthetic enum type -->
|
||||
<element name="enumType" type="tns:EnumType" minOccurs="0" maxOccurs="unbounded" />
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<complexType name="ForcedTypes">
|
||||
<sequence>
|
||||
<!-- A configuration element for a forced type override -->
|
||||
<element name="forcedType" type="tns:ForcedType" minOccurs="0" maxOccurs="unbounded" />
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<complexType name="CustomType">
|
||||
<all>
|
||||
<!-- The name of the custom type -->
|
||||
<element name="name" type="string" minOccurs="1" maxOccurs="1" />
|
||||
|
||||
<!-- The type of the custom type - e.g. java.time.LocalDateTime.
|
||||
For backwards-compatibility reasons, this information is optional. If left undefined,
|
||||
the "type" value will default to the "name" value. -->
|
||||
<element name="type" type="string" minOccurs="0" maxOccurs="1" />
|
||||
|
||||
<!-- A converter implementation for the custom type -->
|
||||
<element name="converter" type="string" minOccurs="0" maxOccurs="1" />
|
||||
|
||||
<!-- A binding implementation for the custom type -->
|
||||
<element name="binding" type="string" minOccurs="0" maxOccurs="1" />
|
||||
</all>
|
||||
</complexType>
|
||||
|
||||
<complexType name="EnumType">
|
||||
<all>
|
||||
<!-- The name of the synthetic enum type -->
|
||||
<element name="name" type="string" minOccurs="1" maxOccurs="1" />
|
||||
|
||||
<!-- A comma separated (CSV format) list of enum literals -->
|
||||
<element name="literals" type="string" minOccurs="1" maxOccurs="1" />
|
||||
</all>
|
||||
</complexType>
|
||||
|
||||
<complexType name="ForcedType">
|
||||
<all>
|
||||
<!-- The name of the type to be forced upon various artefacts -->
|
||||
<element name="name" type="string" minOccurs="1" maxOccurs="1" />
|
||||
|
||||
<!--
|
||||
A Java regular expression matching columns, parameters, attributes,
|
||||
etc to be forced to have this type. If provided, both "expressions" and
|
||||
"types" must match.
|
||||
-->
|
||||
<element name="expression" type="string" minOccurs="0" maxOccurs="1" />
|
||||
|
||||
<!--
|
||||
The same as expression. This is kept for backwards compatibility reasons.
|
||||
-->
|
||||
<element name="expressions" type="string" minOccurs="0" maxOccurs="1" />
|
||||
|
||||
<!--
|
||||
A Java regular expression matching data types to be forced to have this
|
||||
type. If provided, both "expressions" and "types" must match.
|
||||
-->
|
||||
<element name="types" type="string" minOccurs="0" maxOccurs="1" />
|
||||
</all>
|
||||
</complexType>
|
||||
|
||||
<complexType name="Generate">
|
||||
<all>
|
||||
<!--
|
||||
Primary key / foreign key relations should be generated and used.
|
||||
This is a prerequisite for various advanced features
|
||||
-->
|
||||
<element name="relations" type="boolean" default="true" minOccurs="0" maxOccurs="1" />
|
||||
|
||||
<!-- Generate deprecated code for backwards compatibility -->
|
||||
<element name="deprecated" type="boolean" default="true" minOccurs="0" maxOccurs="1" />
|
||||
|
||||
<!--
|
||||
Do not reuse this property. It is deprecated as of jOOQ 3.3.0
|
||||
-->
|
||||
<element name="instanceFields" type="boolean" default="true" minOccurs="0" maxOccurs="1" />
|
||||
|
||||
<!--
|
||||
Generate the javax.annotation.Generated annotation to indicate
|
||||
jOOQ version used for source code
|
||||
-->
|
||||
<element name="generatedAnnotation" type="boolean" default="true" minOccurs="0" maxOccurs="1" />
|
||||
|
||||
<!--
|
||||
Generate TableRecord classes. Disable this when you don't
|
||||
need the additional type-safety
|
||||
-->
|
||||
<element name="records" type="boolean" default="true" minOccurs="0" maxOccurs="1" />
|
||||
|
||||
<!--
|
||||
Generate POJOs for usage of the ResultQuery.fetchInto(Class) API
|
||||
-->
|
||||
<element name="pojos" type="boolean" default="false" minOccurs="0" maxOccurs="1" />
|
||||
|
||||
<!--
|
||||
Generate basic equals() and hashCode() methods in POJOs
|
||||
-->
|
||||
<element name="pojosEqualsAndHashCode" type="boolean" default="false" minOccurs="0" maxOccurs="1" />
|
||||
|
||||
<!--
|
||||
Generate immutable POJOs for usage of the ResultQuery.fetchInto(Class) API
|
||||
This overrides any value set in <pojos/>
|
||||
-->
|
||||
<element name="immutablePojos" type="boolean" default="false" minOccurs="0" maxOccurs="1" />
|
||||
|
||||
<!--
|
||||
Generate interfaces that will be implemented by records and/or pojos.
|
||||
You can also use these interfaces in Record.into(Class<?>) and similar
|
||||
methods, to let jOOQ return proxy objects for them.
|
||||
-->
|
||||
<element name="interfaces" type="boolean" default="false" minOccurs="0" maxOccurs="1" />
|
||||
|
||||
<!--
|
||||
Generate DAOs in addition to POJO classes
|
||||
-->
|
||||
<element name="daos" type="boolean" default="false" minOccurs="0" maxOccurs="1" />
|
||||
|
||||
<!--
|
||||
Annotate POJOs and Records with JPA annotations for increased
|
||||
compatibility and better integration with JPA/Hibernate, etc
|
||||
-->
|
||||
<element name="jpaAnnotations" type="boolean" default="false" minOccurs="0" maxOccurs="1" />
|
||||
|
||||
<!--
|
||||
Annotate POJOs and Records with JSR-303 validation annotations
|
||||
-->
|
||||
<element name="validationAnnotations" type="boolean" default="false" minOccurs="0" maxOccurs="1" />
|
||||
|
||||
<!--
|
||||
Allow to turn off the generation of global object references, which include
|
||||
|
||||
- Tables.java
|
||||
- Sequences.java
|
||||
- UDTs.java
|
||||
|
||||
Turning off the generation of the above files may be necessary for very
|
||||
large schemas, which exceed the amount of allowed constants in a class's
|
||||
constant pool (64k) or, whose static initialiser would exceed 64k of
|
||||
byte code
|
||||
-->
|
||||
<element name="globalObjectReferences" type="boolean" default="true" minOccurs="0" maxOccurs="1" />
|
||||
|
||||
<!--
|
||||
Generate fluent setters in
|
||||
|
||||
- records
|
||||
- pojos
|
||||
- interfaces
|
||||
|
||||
Fluent setters are against the JavaBeans specification, but can be quite
|
||||
useful to those users who do not depend on EL, JSP, JSF, etc.
|
||||
-->
|
||||
<element name="fluentSetters" type="boolean" default="false" minOccurs="0" maxOccurs="1" />
|
||||
</all>
|
||||
</complexType>
|
||||
|
||||
<complexType name="Target">
|
||||
<all>
|
||||
<!--
|
||||
The destination package of your generated classes (within the
|
||||
destination directory)
|
||||
|
||||
jOOQ may append the schema name to this package if generating multiple schemas,
|
||||
e.g. org.jooq.generated.schema1
|
||||
org.jooq.generated.schema2
|
||||
-->
|
||||
<element name="packageName" type="string" default="org.jooq.generated" minOccurs="0" maxOccurs="1" />
|
||||
|
||||
<!-- The destination directory of your generated classes -->
|
||||
<element name="directory" type="string" default="target/generated-sources/jooq" />
|
||||
</all>
|
||||
</complexType>
|
||||
|
||||
<simpleType name="RegexFlags">
|
||||
<list itemType="tns:RegexFlag"/>
|
||||
</simpleType>
|
||||
|
||||
<simpleType name="RegexFlag">
|
||||
<restriction base="string">
|
||||
<enumeration value="UNIX_LINES"/>
|
||||
<enumeration value="CASE_INSENSITIVE"/>
|
||||
<enumeration value="COMMENTS"/>
|
||||
<enumeration value="MULTILINE"/>
|
||||
<enumeration value="LITERAL"/>
|
||||
<enumeration value="DOTALL"/>
|
||||
<enumeration value="UNICODE_CASE"/>
|
||||
<enumeration value="CANON_EQ"/>
|
||||
<enumeration value="UNICODE_CHARACTER_CLASS"/>
|
||||
</restriction>
|
||||
</simpleType>
|
||||
</schema>
|
||||
Loading…
Reference in New Issue
Block a user