diff --git a/meta/src/main/java/com/databasir/core/Databasir.java b/meta/src/main/java/com/databasir/core/Databasir.java index 36ea9f9..16f4c9b 100644 --- a/meta/src/main/java/com/databasir/core/Databasir.java +++ b/meta/src/main/java/com/databasir/core/Databasir.java @@ -11,7 +11,10 @@ import lombok.RequiredArgsConstructor; import java.io.IOException; import java.io.OutputStream; import java.sql.Connection; +import java.util.List; import java.util.Optional; +import java.util.regex.Pattern; +import java.util.stream.Collectors; @RequiredArgsConstructor @Getter @@ -20,11 +23,18 @@ public class Databasir { private final DatabasirConfig config; public Optional get(Connection connection, String databaseName, String schemaName) { + // pre compile regex + List ignoreTableColumnPatterns = config.getIgnoreTableColumnNameRegex().stream() + .map(Pattern::compile) + .collect(Collectors.toList()); + List ignoreTableNamePatterns = config.getIgnoreTableNameRegex().stream() + .map(Pattern::compile) + .collect(Collectors.toList()); Condition condition = Condition.builder() .databaseName(databaseName) .schemaName(schemaName) - .ignoreTableNameRegex(config.getIgnoreTableNameRegex()) - .ignoreTableColumnNameRegex(config.getIgnoreTableColumnNameRegex()) + .ignoreTableNamePatterns(ignoreTableNamePatterns) + .ignoreTableColumnNamePatterns(ignoreTableColumnPatterns) .build(); return MetaProviders .of(connection) diff --git a/meta/src/main/java/com/databasir/core/meta/provider/condition/Condition.java b/meta/src/main/java/com/databasir/core/meta/provider/condition/Condition.java index d2d457f..2ff7523 100644 --- a/meta/src/main/java/com/databasir/core/meta/provider/condition/Condition.java +++ b/meta/src/main/java/com/databasir/core/meta/provider/condition/Condition.java @@ -19,16 +19,18 @@ public class Condition { private String schemaName; @Builder.Default - private Collection ignoreTableNameRegex = Collections.emptyList(); + @Builder.ObtainVia(method = "ignoreTableNameRegexes") + private Collection ignoreTableNamePatterns = Collections.emptyList(); @Builder.Default - private Collection ignoreTableColumnNameRegex = Collections.emptyList(); + @Builder.ObtainVia(method = "ignoreTableColumnNameRegexes") + private Collection ignoreTableColumnNamePatterns = Collections.emptyList(); public boolean tableIsIgnored(String tableName) { - return ignoreTableNameRegex.stream().anyMatch(regex -> Pattern.matches(regex, tableName)); + return ignoreTableNamePatterns.stream().anyMatch(regex -> regex.matcher(tableName).matches()); } public boolean columnIsIgnored(String column) { - return ignoreTableColumnNameRegex.stream().anyMatch(regex -> Pattern.matches(regex, column)); + return ignoreTableColumnNamePatterns.stream().anyMatch(regex -> regex.matcher(column).matches()); } } diff --git a/meta/src/main/java/com/databasir/core/meta/provider/condition/TableCondition.java b/meta/src/main/java/com/databasir/core/meta/provider/condition/TableCondition.java index 21cdcd3..590e64e 100644 --- a/meta/src/main/java/com/databasir/core/meta/provider/condition/TableCondition.java +++ b/meta/src/main/java/com/databasir/core/meta/provider/condition/TableCondition.java @@ -16,8 +16,8 @@ public class TableCondition extends Condition { .databaseName(condition.getDatabaseName()) .tableName(tableName) .schemaName(condition.getSchemaName()) - .ignoreTableNameRegex(condition.getIgnoreTableNameRegex()) - .ignoreTableColumnNameRegex(condition.getIgnoreTableColumnNameRegex()) + .ignoreTableNamePatterns(condition.getIgnoreTableNamePatterns()) + .ignoreTableColumnNamePatterns(condition.getIgnoreTableColumnNamePatterns()) .build(); }