Skip to content

Commit 5c50aaf

Browse files
authored
Add the catalogName property (#72)
1 parent eabe6bc commit 5c50aaf

File tree

8 files changed

+63
-5
lines changed

8 files changed

+63
-5
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,7 @@ domaCodeGen {
150150
| password | JDBC password | | |
151151
| dataSource | database data source | | inferred by the url |
152152
| codeGenDialect | database dialect | | inferred by the url |
153+
| catalogName | database catalog name | | |
153154
| schemaName | database schema name | | |
154155
| tableNamePattern | database table pattern (Regex) | | ".*" |
155156
| ignoredTableNamePattern | database ignored table pattern (Regex) | | ".*\$.*" |

codegen-test/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ buildscript {
1313
dependencies {
1414
classpath "org.seasar.doma:codegen"
1515
classpath "com.h2database:h2:$h2Version"
16+
classpath 'mysql:mysql-connector-java:8.0.17'
1617
}
1718
}
1819

codegen-test/docker-compose.yml

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# Use root/example as user/password credentials
2+
version: '3.1'
3+
4+
services:
5+
6+
db:
7+
image: mysql
8+
command: --default-authentication-plugin=mysql_native_password
9+
restart: always
10+
environment:
11+
MYSQL_ROOT_PASSWORD: example
12+
ports:
13+
- 3306:3306
14+
15+
adminer:
16+
image: adminer
17+
restart: always
18+
ports:
19+
- 8080:8080

codegen/src/main/java/org/seasar/doma/gradle/codegen/CodeGenPlugin.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,7 @@ private void connectProperties(CodeGenDbMetaTask task, CodeGenConfig extension)
140140
task.getGlobalFactory().set(extension.getGlobalFactory());
141141
task.getDataSource().set(extension.getDataSource());
142142
task.getDialect().set(extension.getCodeGenDialect());
143+
task.getCatalogName().set(extension.getCatalogName());
143144
task.getSchemaName().set(extension.getSchemaName());
144145
task.getTableTypes().set(extension.getTableTypes());
145146
task.getTableNamePattern().set(extension.getTableNamePattern());

codegen/src/main/java/org/seasar/doma/gradle/codegen/GlobalFactory.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,12 +37,19 @@ public DataSource createDataSource(Driver driver, String user, String password,
3737
public TableMetaReader createTableMetaReader(
3838
CodeGenDialect dialect,
3939
DataSource dataSource,
40+
String catalogName,
4041
String schemaName,
4142
String tableNamePattern,
4243
String ignoredTableNamePattern,
4344
List<String> tableTypes) {
4445
return new TableMetaReader(
45-
dialect, dataSource, schemaName, tableNamePattern, ignoredTableNamePattern, tableTypes);
46+
dialect,
47+
dataSource,
48+
catalogName,
49+
schemaName,
50+
tableNamePattern,
51+
ignoredTableNamePattern,
52+
tableTypes);
4653
}
4754

4855
public ResultSetMetaReader createResultSetMetaReader(

codegen/src/main/java/org/seasar/doma/gradle/codegen/extension/CodeGenConfig.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,8 @@ public class CodeGenConfig {
4343

4444
private final Property<String> url;
4545

46+
private final Property<String> catalogName;
47+
4648
private final Property<String> schemaName;
4749

4850
private final Property<String> tableNamePattern;
@@ -91,6 +93,7 @@ public CodeGenConfig(String name, Project project) {
9193
url = objects.property(String.class);
9294
user = objects.property(String.class);
9395
password = objects.property(String.class);
96+
catalogName = objects.property(String.class);
9497
schemaName = objects.property(String.class);
9598
tableNamePattern = objects.property(String.class);
9699
ignoredTableNamePattern = objects.property(String.class);
@@ -288,6 +291,14 @@ public void setUrl(String url) {
288291
this.url.set(url);
289292
}
290293

294+
public Property<String> getCatalogName() {
295+
return catalogName;
296+
}
297+
298+
public void setCatalogName(String catalogName) {
299+
this.catalogName.set(catalogName);
300+
}
301+
291302
public Property<String> getSchemaName() {
292303
return schemaName;
293304
}

codegen/src/main/java/org/seasar/doma/gradle/codegen/meta/TableMetaReader.java

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@ public class TableMetaReader {
2323

2424
protected final DataSource dataSource;
2525

26+
protected final String catalogName;
27+
2628
protected final String schemaName;
2729

2830
protected final Pattern tableNamePattern;
@@ -34,6 +36,7 @@ public class TableMetaReader {
3436
public TableMetaReader(
3537
CodeGenDialect dialect,
3638
DataSource dataSource,
39+
String catalogName,
3740
String schemaName,
3841
String tableNamePattern,
3942
String ignoredTableNamePattern,
@@ -55,6 +58,7 @@ public TableMetaReader(
5558
}
5659
this.dialect = dialect;
5760
this.dataSource = dataSource;
61+
this.catalogName = catalogName;
5862
this.schemaName = schemaName;
5963
this.tableNamePattern = Pattern.compile(tableNamePattern, Pattern.CASE_INSENSITIVE);
6064
this.ignoredTableNamePattern =
@@ -67,7 +71,10 @@ public List<TableMeta> read() {
6771
try {
6872
DatabaseMetaData metaData = con.getMetaData();
6973
List<TableMeta> tableMetas =
70-
getTableMetas(metaData, schemaName != null ? schemaName : getDefaultSchemaName(metaData));
74+
getTableMetas(
75+
metaData,
76+
catalogName,
77+
schemaName != null ? schemaName : getDefaultSchemaName(metaData));
7178
for (TableMeta tableMeta : tableMetas) {
7279
Set<String> primaryKeySet = getPrimaryKeys(metaData, tableMeta);
7380
handleColumnMeta(metaData, tableMeta, primaryKeySet);
@@ -102,12 +109,15 @@ protected String getDefaultSchemaName(DatabaseMetaData metaData) throws SQLExcep
102109
return dialect.getDefaultSchemaName(userName);
103110
}
104111

105-
protected List<TableMeta> getTableMetas(DatabaseMetaData metaData, String schemaName)
106-
throws SQLException {
112+
protected List<TableMeta> getTableMetas(
113+
DatabaseMetaData metaData, String catalogName, String schemaName) throws SQLException {
107114
List<TableMeta> results = new ArrayList<TableMeta>();
108115
ResultSet rs =
109116
metaData.getTables(
110-
null, schemaName, null, this.tableTypes.toArray(new String[this.tableTypes.size()]));
117+
catalogName,
118+
schemaName,
119+
null,
120+
this.tableTypes.toArray(new String[this.tableTypes.size()]));
111121
try {
112122
while (rs.next()) {
113123
TableMeta tableMeta = new TableMeta();

codegen/src/main/java/org/seasar/doma/gradle/codegen/task/CodeGenDbMetaTask.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ public class CodeGenDbMetaTask extends DefaultTask {
2929
private final Property<CodeGenDialect> dialect =
3030
getProject().getObjects().property(CodeGenDialect.class);
3131

32+
private final Property<String> catalogName = getProject().getObjects().property(String.class);
33+
3234
private final Property<String> schemaName = getProject().getObjects().property(String.class);
3335

3436
private final Property<String> tableNamePattern =
@@ -60,6 +62,11 @@ public Property<CodeGenDialect> getDialect() {
6062
return dialect;
6163
}
6264

65+
@Internal
66+
public Property<String> getCatalogName() {
67+
return catalogName;
68+
}
69+
6370
@Internal
6471
public Property<String> getSchemaName() {
6572
return schemaName;
@@ -95,6 +102,7 @@ private TableMetaReader createTableMetaReader() {
95102
.createTableMetaReader(
96103
dialect.get(),
97104
dataSource.get(),
105+
catalogName.getOrNull(),
98106
schemaName.getOrNull(),
99107
tableNamePattern.get(),
100108
ignoredTableNamePattern.get(),

0 commit comments

Comments
 (0)