Skip to content

Commit 728b286

Browse files
feat: methods for returning unquoted names and identifiers
Signed-off-by: Andreas Reichel <andreas@manticore-projects.com> Signed-off-by: manticore-projects <andreas@manticore-projects.com>
1 parent 6298e79 commit 728b286

File tree

7 files changed

+64
-1
lines changed

7 files changed

+64
-1
lines changed

src/main/java/net/sf/jsqlparser/schema/Column.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,10 @@ public String getColumnName() {
100100
return columnName;
101101
}
102102

103+
public String getUnquotedColumnName() {
104+
return unquote(columnName);
105+
}
106+
103107
public void setColumnName(String string) {
104108
columnName = string;
105109
}
@@ -117,6 +121,11 @@ public String getFullyQualifiedName() {
117121
return getFullyQualifiedName(false);
118122
}
119123

124+
@Override
125+
public String getUnquotedName() {
126+
return unquote(columnName);
127+
}
128+
120129
public String getFullyQualifiedName(boolean aliases) {
121130
StringBuilder fqn = new StringBuilder();
122131

src/main/java/net/sf/jsqlparser/schema/Database.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,11 @@ public String getFullyQualifiedName() {
5757
return fqn;
5858
}
5959

60+
@Override
61+
public String getUnquotedName() {
62+
return unquote(databaseName);
63+
}
64+
6065
@Override
6166
public String toString() {
6267
return getFullyQualifiedName();

src/main/java/net/sf/jsqlparser/schema/MultiPartName.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,24 @@
99
*/
1010
package net.sf.jsqlparser.schema;
1111

12+
import java.util.regex.Pattern;
13+
1214
public interface MultiPartName {
15+
Pattern LEADING_TRAILING_QUOTES_PATTERN = Pattern.compile("^[\"\\[`]+|[\"\\]`]+$");
16+
17+
/**
18+
* Removes leading and trailing quotes from a SQL quoted identifier
19+
*
20+
* @param quotedIdentifier the quoted identifier
21+
* @return the pure identifier without quotes
22+
*/
23+
default String unquote(String quotedIdentifier) {
24+
return quotedIdentifier != null
25+
? LEADING_TRAILING_QUOTES_PATTERN.matcher(quotedIdentifier).replaceAll("")
26+
: null;
27+
}
1328

1429
String getFullyQualifiedName();
30+
31+
String getUnquotedName();
1532
}

src/main/java/net/sf/jsqlparser/schema/Sequence.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,11 @@ public String getFullyQualifiedName() {
121121
return fqn.toString();
122122
}
123123

124+
@Override
125+
public String getUnquotedName() {
126+
return unquote(partItems.get(NAME_IDX));
127+
}
128+
124129
@Override
125130
public String toString() {
126131
StringBuilder sql = new StringBuilder(getFullyQualifiedName());

src/main/java/net/sf/jsqlparser/schema/Server.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,11 @@ public String getFullyQualifiedName() {
6969
}
7070
}
7171

72+
@Override
73+
public String getUnquotedName() {
74+
return unquote(serverName);
75+
}
76+
7277
@Override
7378
public String toString() {
7479
return getFullyQualifiedName();

src/main/java/net/sf/jsqlparser/schema/Synonym.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,11 @@ public String getFullyQualifiedName() {
106106
return fqn.toString();
107107
}
108108

109+
@Override
110+
public String getUnquotedName() {
111+
return unquote(partItems.get(NAME_IDX));
112+
}
113+
109114
@Override
110115
public String toString() {
111116
StringBuilder sql = new StringBuilder(getFullyQualifiedName());

src/main/java/net/sf/jsqlparser/schema/Table.java

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,14 @@ public Database getDatabase() {
103103
return new Database(getIndex(DATABASE_IDX));
104104
}
105105

106+
public String getDatabaseName() {
107+
return getIndex(DATABASE_IDX);
108+
}
109+
110+
public String getUnquotedDatabaseName() {
111+
return unquote(getDatabaseName());
112+
}
113+
106114
public void setDatabase(Database database) {
107115
setIndex(DATABASE_IDX, database.getDatabaseName());
108116
if (database.getServer() != null) {
@@ -124,6 +132,10 @@ public String getSchemaName() {
124132
return getIndex(SCHEMA_IDX);
125133
}
126134

135+
public String getUnquotedSchemaName() {
136+
return unquote(getSchemaName());
137+
}
138+
127139
public Table setSchemaName(String schemaName) {
128140
this.setIndex(SCHEMA_IDX, schemaName);
129141
return this;
@@ -145,6 +157,7 @@ public String getName() {
145157
return name;
146158
}
147159

160+
148161
public void setName(String name) {
149162
setIndex(NAME_IDX, name);
150163
}
@@ -207,7 +220,6 @@ public String getFullyQualifiedName() {
207220
partItems.remove(partItems.size() - 1);
208221
}
209222

210-
211223
for (int i = partItems.size() - 1; i >= 0; i--) {
212224
String part = partItems.get(i);
213225
if (part == null) {
@@ -222,6 +234,11 @@ public String getFullyQualifiedName() {
222234
return fqn.toString();
223235
}
224236

237+
@Override
238+
public String getUnquotedName() {
239+
return unquote(getName());
240+
}
241+
225242
@Override
226243
public <T, S> T accept(FromItemVisitor<T> fromItemVisitor, S context) {
227244
return fromItemVisitor.visit(this, context);

0 commit comments

Comments
 (0)