[#3202] Allow for Pattern.COMMENTS in code generation configuration's regexes

This commit is contained in:
Lukas Eder 2014-04-26 13:59:07 +02:00
parent 44fc9fd1f7
commit fcd068dfb3
3 changed files with 33 additions and 11 deletions

View File

@ -53,6 +53,7 @@ import java.util.Collection;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.regex.Pattern;
import org.jooq.AggregateFunction;
import org.jooq.Configuration;
@ -1856,9 +1857,11 @@ public class JavaGenerator extends AbstractGenerator {
// if properly configured
if (updatable) {
patternLoop: for (String pattern : database.getRecordVersionFields()) {
Pattern p = Pattern.compile(pattern, Pattern.COMMENTS);
for (ColumnDefinition column : table.getColumns()) {
if ((column.getName().matches(pattern.trim()) ||
column.getQualifiedName().matches(pattern.trim()))) {
if ((p.matcher(column.getName()).matches() ||
p.matcher(column.getQualifiedName()).matches())) {
final String columnType = getJavaType(column.getType());
final String columnId = getStrategy().getFullJavaIdentifier(column);
@ -1875,9 +1878,11 @@ public class JavaGenerator extends AbstractGenerator {
}
timestampLoop: for (String pattern : database.getRecordTimestampFields()) {
Pattern p = Pattern.compile(pattern, Pattern.COMMENTS);
for (ColumnDefinition column : table.getColumns()) {
if ((column.getName().matches(pattern.trim()) ||
column.getQualifiedName().matches(pattern.trim()))) {
if ((p.matcher(column.getName()).matches() ||
p.matcher(column.getQualifiedName()).matches())) {
final String columnType = getJavaType(column.getType());
final String columnId = getStrategy().getFullJavaIdentifier(column);

View File

@ -54,6 +54,7 @@ import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.regex.Pattern;
import org.jooq.DSLContext;
import org.jooq.SQLDialect;
@ -798,9 +799,11 @@ public abstract class AbstractDatabase implements Database {
definitionsLoop: for (T definition : definitions) {
if (excludes != null) {
for (String exclude : excludes) {
Pattern p = Pattern.compile(exclude, Pattern.COMMENTS);
if (exclude != null &&
(definition.getName().matches(exclude.trim()) ||
definition.getQualifiedName().matches(exclude.trim()))) {
(p.matcher(definition.getName()).matches() ||
p.matcher(definition.getQualifiedName()).matches())) {
continue definitionsLoop;
}
@ -809,9 +812,11 @@ public abstract class AbstractDatabase implements Database {
if (includes != null) {
for (String include : includes) {
Pattern p = Pattern.compile(include, Pattern.COMMENTS);
if (include != null &&
(definition.getName().matches(include.trim()) ||
definition.getQualifiedName().matches(include.trim()))) {
(p.matcher(definition.getName()).matches() ||
p.matcher(definition.getQualifiedName()).matches())) {
result.add(definition);
continue definitionsLoop;

View File

@ -10,10 +10,22 @@
<name>org.jooq.util.DefaultGenerator</name>
<database>
<includes>.*</includes>
<excludes>T_BOOK_DETAILS|SYSTEM_SEQUENCE.*|.*\.COL2|COL3</excludes>
<excludes>
T_BOOK_DETAILS # Check if dependent objects (e.g. foreign keys) are not generated
| SYSTEM_SEQUENCE.* # who knows where this came from (sample comment)
| .*\.COL2 # v_2603 contains some columns that we don't want to generate
| COL3 # v_2603 contains some columns that we don't want to generate
</excludes>
<includeExcludeColumns>true</includeExcludeColumns>
<recordVersionFields>REC_VERSION</recordVersionFields>
<recordTimestampFields>REC_TIMESTAMP</recordTimestampFields>
<recordVersionFields>
REC_VERSION
| ASDF_ASDF_ASDF # This should not have any effect
</recordVersionFields>
<recordTimestampFields>
REC_TIMESTAMP
| ASDF_ASDF_ASDF # This should not have any effect
| ASDF_ASDF_ASDF # This should not have any effect
</recordTimestampFields>
<dateAsTimestamp>false</dateAsTimestamp>
<unsignedTypes>true</unsignedTypes>
<inputSchema>PUBLIC</inputSchema>