Skip to content

Commit cbdfb13

Browse files
author
杨利兵
committed
添加MySql配置
1 parent 246726c commit cbdfb13

File tree

5 files changed

+67
-5
lines changed

5 files changed

+67
-5
lines changed
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
/**
2+
* Copyright 2015-2020 yanglb.com
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
package com.yanglb.codegen.core.parser.impl;
17+
18+
import com.yanglb.codegen.utils.Conf;
19+
import org.apache.commons.cli.Option;
20+
import org.apache.commons.cli.Options;
21+
22+
public class DdlMySqlParser extends DdlParser {
23+
@Override
24+
protected Options options() {
25+
Options options = super.options();
26+
27+
Option engine = Option.builder()
28+
.longOpt("engine")
29+
.hasArg()
30+
.desc(String.format("指定MySql Engine,默认为 %s 。", Conf.getSetting("mysql.engine")))
31+
.build();
32+
options.addOption(engine);
33+
34+
Option charset = Option.builder()
35+
.longOpt("charset")
36+
.hasArg()
37+
.desc(String.format("指定MySql Default Charset,默认为 %s 。", Conf.getSetting("mysql.charset")))
38+
.build();
39+
options.addOption(charset);
40+
41+
return options;
42+
}
43+
}

src/main/java/com/yanglb/codegen/core/translator/impl/DdlMysqlTranslatorImpl.java

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import com.yanglb.codegen.model.ForeignModel;
2727
import com.yanglb.codegen.core.translator.BaseDdlTranslator;
2828
import com.yanglb.codegen.exceptions.CodeGenException;
29+
import com.yanglb.codegen.utils.Conf;
2930
import com.yanglb.codegen.utils.Infos;
3031
import com.yanglb.codegen.utils.StringUtil;
3132

@@ -148,8 +149,8 @@ public String genDdl(DdlModel model) throws CodeGenException {
148149

149150
// 引擎、字符集等其它信息
150151
StringBuilder info = new StringBuilder();
151-
info.append("ENGINE={my_sql_engine} ");
152-
info.append("DEFAULT CHARSET={my_sql_defaultCharSet} ");
152+
info.append(String.format("ENGINE=%s ", engine()));
153+
info.append(String.format("DEFAULT CHARSET=%s ", charset()));
153154
if (autoIncrement != null) {
154155
info.append(String.format("AUTO_INCREMENT=%d ", autoIncrement));
155156
}
@@ -162,6 +163,13 @@ public String genDdl(DdlModel model) throws CodeGenException {
162163

163164
return sb.toString();
164165
}
166+
167+
private String engine() {
168+
return paramaModel.getOptions().getOptionValue("engine", Conf.getSetting("mysql.engine"));
169+
}
170+
private String charset() {
171+
return paramaModel.getOptions().getOptionValue("charset", Conf.getSetting("mysql.charset"));
172+
}
165173

166174
private void updateIndexUniqueMap(HashMap<String, List<DdlDetail>> map, String names, DdlDetail detail) {
167175
if (!StringUtil.isNullOrEmpty(names)) {

src/main/java/com/yanglb/codegen/shell/CGShell.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,8 @@ public boolean invoke(String[] args) {
2727

2828
// test data
2929
// args = new String[] {"msg.android", "/Users/yanglibing/Work/cg/tests/msg.xlsx", "-s", "#Android"};
30-
args = new String[] {"msg.ios", "/Users/yanglibing/Work/cg/tests/msg.xlsx"};
31-
// args = new String[] {"ddl.sqlite", "/Users/yanglibing/Work/cg/tests/ddl.xlsx"};
30+
// args = new String[] {"msg.ios", "/Users/yanglibing/Work/cg/tests/msg.xlsx"};
31+
args = new String[] {"ddl.mysql", "/Users/yanglibing/Work/cg/tests/ddl.xlsx", "-engine", "MyBTT", "-charset", "utf-8", "-h"};
3232
// args = new String[] {"dml", "/Users/yanglibing/Work/cg/tests/dml.xlsx"};
3333
// args = new String[] {"", "-h"};
3434
// args = new String[] {"msg.prop", "message.xlsx", "-out", "src/main/resources"};

src/main/java/com/yanglb/codegen/utils/Conf.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
package com.yanglb.codegen.utils;
1717

1818
import com.yanglb.codegen.model.CmdModel;
19+
import org.omg.CORBA.SetOverrideType;
1920
import org.yaml.snakeyaml.Yaml;
2021

2122
import java.io.InputStream;
@@ -49,6 +50,7 @@ public static CmdModel getCmdModel(String cmd) {
4950

5051
public static String CATEGORY_READER = "reader";
5152
public static String CATEGORY_WRITER = "writer";
53+
public static String CATEGORY_SETTINGS = "settings";
5254

5355
public static String getString(String category, String key) {
5456
// 初始化
@@ -59,6 +61,10 @@ public static String getString(String category, String key) {
5961
return value;
6062
}
6163

64+
public static String getSetting(String key) {
65+
return getString(CATEGORY_SETTINGS, key);
66+
}
67+
6268
public static List<String> supportCommands() {
6369
init();
6470

src/main/resources/conf.yaml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# Commands
22
command:
33
ddl.mysql:
4-
parser: .core.parser.impl.DdlParser
4+
parser: .core.parser.impl.DdlMySqlParser
55
generator: .core.generator.impl.DdlGeneratorImpl
66
reader: .core.reader.impl.DdlReaderImpl
77
translator: .core.translator.impl.DdlMysqlTranslatorImpl
@@ -56,3 +56,8 @@ writer:
5656
# reader
5757
reader:
5858
table: .core.reader.impl.TableReaderImpl
59+
60+
# Default settings
61+
settings:
62+
mysql.engine: InnoDB
63+
mysql.charset: utf8

0 commit comments

Comments
 (0)