From d4521560b932f6b013eeaf9be1f46c1bba1be3dd Mon Sep 17 00:00:00 2001 From: lukaseder Date: Fri, 14 Jul 2017 16:51:47 +0200 Subject: [PATCH] [#6416] Add Name.unquotedName() and Name.quotedName() --- .../java/org/jooq/util/AbstractDatabase.java | 2 +- jOOQ/src/main/java/org/jooq/Name.java | 10 ++++++++++ .../java/org/jooq/impl/QualifiedName.java | 20 +++++++++++++++++++ .../java/org/jooq/impl/UnqualifiedName.java | 10 ++++++++++ 4 files changed, 41 insertions(+), 1 deletion(-) diff --git a/jOOQ-meta/src/main/java/org/jooq/util/AbstractDatabase.java b/jOOQ-meta/src/main/java/org/jooq/util/AbstractDatabase.java index 90d248aff7..01faf0b9c9 100644 --- a/jOOQ-meta/src/main/java/org/jooq/util/AbstractDatabase.java +++ b/jOOQ-meta/src/main/java/org/jooq/util/AbstractDatabase.java @@ -1315,7 +1315,7 @@ public abstract class AbstractDatabase implements Database { // as USER-DEFINED (in PostgreSQL) && ( StringUtils.isBlank(definedType.getUserType()) || !p.matcher(definedType.getUserType()).matches() - && !p.matcher(definedType.getQualifiedUserType().toString().replace("\"", "")).matches() ) + && !p.matcher(definedType.getQualifiedUserType().unquotedName().toString()).matches() ) ) { continue forcedTypeLoop; } diff --git a/jOOQ/src/main/java/org/jooq/Name.java b/jOOQ/src/main/java/org/jooq/Name.java index 73b6cde88b..5a73a178b7 100644 --- a/jOOQ/src/main/java/org/jooq/Name.java +++ b/jOOQ/src/main/java/org/jooq/Name.java @@ -92,6 +92,16 @@ public interface Name extends QueryPart { */ Name unqualifiedName(); + /** + * This name, quoted. + */ + Name quotedName(); + + /** + * This name, unquoted. + */ + Name unquotedName(); + /** * Get the individual, unqualified name parts of this name. */ diff --git a/jOOQ/src/main/java/org/jooq/impl/QualifiedName.java b/jOOQ/src/main/java/org/jooq/impl/QualifiedName.java index b4642ee9d3..eed397b7d8 100644 --- a/jOOQ/src/main/java/org/jooq/impl/QualifiedName.java +++ b/jOOQ/src/main/java/org/jooq/impl/QualifiedName.java @@ -173,6 +173,26 @@ final class QualifiedName extends AbstractName { return qualifiedName[qualifiedName.length - 1]; } + @Override + public final Name quotedName() { + Name[] result = new Name[qualifiedName.length]; + + for (int i = 0; i < result.length; i++) + result[i] = qualifiedName[i].quotedName(); + + return new QualifiedName(result); + } + + @Override + public final Name unquotedName() { + Name[] result = new Name[qualifiedName.length]; + + for (int i = 0; i < result.length; i++) + result[i] = qualifiedName[i].unquotedName(); + + return new QualifiedName(result); + } + @Override public final String[] getName() { String[] result = new String[qualifiedName.length]; diff --git a/jOOQ/src/main/java/org/jooq/impl/UnqualifiedName.java b/jOOQ/src/main/java/org/jooq/impl/UnqualifiedName.java index fd27fe4973..65b1391c22 100644 --- a/jOOQ/src/main/java/org/jooq/impl/UnqualifiedName.java +++ b/jOOQ/src/main/java/org/jooq/impl/UnqualifiedName.java @@ -99,6 +99,16 @@ final class UnqualifiedName extends AbstractName { return this; } + @Override + public final Name quotedName() { + return new UnqualifiedName(name, true); + } + + @Override + public final Name unquotedName() { + return new UnqualifiedName(name, false); + } + @Override public final String[] getName() { return new String[] { name };