You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
684 lines
25 KiB
684 lines
25 KiB
package xyz.wbsite.dbtool.javafx.manger;
|
|
|
|
import org.springframework.boot.system.ApplicationHome;
|
|
import xyz.wbsite.dbtool.javafx.enums.DataBase;
|
|
import xyz.wbsite.dbtool.javafx.enums.FieldType;
|
|
import xyz.wbsite.dbtool.javafx.manger.callable.AndroidCallable;
|
|
import xyz.wbsite.dbtool.javafx.manger.callable.ApiCallable;
|
|
import xyz.wbsite.dbtool.javafx.manger.callable.SBMDBCallable;
|
|
import xyz.wbsite.dbtool.javafx.manger.callable.SpringBootCallable;
|
|
import xyz.wbsite.dbtool.javafx.manger.callable.SpringMVCCallable;
|
|
import xyz.wbsite.dbtool.javafx.manger.callable.VueCallable;
|
|
import xyz.wbsite.dbtool.javafx.po.AbstractDBmapper;
|
|
import xyz.wbsite.dbtool.javafx.po.AndroidOption;
|
|
import xyz.wbsite.dbtool.javafx.po.Api;
|
|
import xyz.wbsite.dbtool.javafx.po.Field;
|
|
import xyz.wbsite.dbtool.javafx.po.Module;
|
|
import xyz.wbsite.dbtool.javafx.po.MySQLDBmapper;
|
|
import xyz.wbsite.dbtool.javafx.po.OracleDBmapper;
|
|
import xyz.wbsite.dbtool.javafx.po.Project;
|
|
import xyz.wbsite.dbtool.javafx.po.SBMDBOption;
|
|
import xyz.wbsite.dbtool.javafx.po.SQLiteDBmapper;
|
|
import xyz.wbsite.dbtool.javafx.po.Table;
|
|
import xyz.wbsite.dbtool.javafx.po.VueOption;
|
|
import xyz.wbsite.dbtool.javafx.tool.Dialog;
|
|
|
|
import java.io.File;
|
|
import java.io.FilenameFilter;
|
|
import java.sql.Connection;
|
|
import java.sql.DriverManager;
|
|
import java.sql.ResultSet;
|
|
import java.sql.SQLException;
|
|
import java.sql.Statement;
|
|
import java.util.Iterator;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
import java.util.concurrent.Callable;
|
|
import java.util.concurrent.ExecutionException;
|
|
import java.util.concurrent.ExecutorService;
|
|
import java.util.concurrent.Executors;
|
|
import java.util.concurrent.Future;
|
|
|
|
public class ProjectManager {
|
|
|
|
public static boolean isUpdate = false;
|
|
private XmlManager xmlService;
|
|
public static AbstractDBmapper dBmapper;
|
|
public static File path;
|
|
private Project project = new Project();
|
|
|
|
public ProjectManager() {
|
|
xmlService = ManagerFactory.getXmlManager();
|
|
try {
|
|
ApplicationHome home = new ApplicationHome(getClass());
|
|
File jarFile = home.getSource();
|
|
this.path = new File(jarFile.getParent(), "project");
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
this.path = new File(System.getProperty("user.home"), "project");
|
|
}
|
|
if (!path.exists()) {
|
|
path.mkdirs();
|
|
}
|
|
invalidate();
|
|
}
|
|
|
|
public static File getPath() {
|
|
return path;
|
|
}
|
|
|
|
public static void setPath(File path) {
|
|
ProjectManager.path = path;
|
|
}
|
|
|
|
public void modelCreate() {
|
|
project = new Project();
|
|
}
|
|
|
|
public Module findDBByDBName(String name) {
|
|
for (Module md : project.getModules()) {
|
|
if (md.getModuleName().equals(name)) {
|
|
return md;
|
|
}
|
|
}
|
|
return null;
|
|
}
|
|
|
|
public boolean removeDBByDBName(String name) {
|
|
for (Module md : project.getModules()) {
|
|
if (md.getModuleName().equals(name)) {
|
|
project.getModules().remove(md);
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
public Table findTableByTableName(Module md, String name) {
|
|
for (Table t : md.getTables()) {
|
|
if (t.getTableName().equals(name)) {
|
|
return t;
|
|
}
|
|
}
|
|
return null;
|
|
}
|
|
|
|
public Table getNewTableName(Module md) {
|
|
String base = "NEW_TABLE";
|
|
String name = base;
|
|
int k = 0;
|
|
do {
|
|
int i;
|
|
for (i = 0; i < md.getTables().size(); i++) {
|
|
if (name.equals(md.getTables().get(i).getTableName())) {
|
|
break;
|
|
}
|
|
}
|
|
if (i < md.getTables().size()) {
|
|
k++;
|
|
name = base + "_" + k;
|
|
} else {
|
|
Table table = new Table(name);
|
|
table.setTableComment("注释");
|
|
table.setCreate(true);
|
|
table.setDelete(true);
|
|
table.setUpdate(true);
|
|
table.setFind(true);
|
|
table.setGet(true);
|
|
table.setSearch(false);
|
|
table.setSys(md.isHasSysFields());//获取是否默认添加系统字段
|
|
checkSysFields(table);// 检查或移除系统字段
|
|
md.putTable(table);
|
|
return table;
|
|
}
|
|
} while (true);
|
|
}
|
|
|
|
public void checkSysFields(Table table) {
|
|
if (table != null) {
|
|
if (table.getSys()) {
|
|
removeSysFields(table);
|
|
insertSysFields(table);
|
|
} else {
|
|
removeSysFields(table);
|
|
}
|
|
}
|
|
}
|
|
|
|
private void removeSysFields(Table table) {
|
|
Iterator<Field> iterator = table.getFields().iterator();
|
|
while (iterator.hasNext()) {
|
|
Field next = iterator.next();
|
|
if (next.getIsSystem()) {
|
|
iterator.remove();
|
|
}
|
|
}
|
|
}
|
|
|
|
private void insertSysFields(Table table) {
|
|
Field id = new Field("ID");
|
|
id.setIsSystem(true);
|
|
id.setIsMust(true);
|
|
id.setIsPrimaryKey(true);
|
|
id.setFieldType(FieldType.Long);
|
|
id.setFieldLength(19);
|
|
id.setFieldComment("主键");
|
|
|
|
Field row_version = new Field("ROW_VERSION");
|
|
row_version.setIsSystem(true);
|
|
row_version.setIsMust(true);
|
|
row_version.setFieldType(FieldType.Long);
|
|
row_version.setFieldLength(19);
|
|
row_version.setFieldComment("行版本");
|
|
|
|
Field is_deleted = new Field("IS_DELETED");
|
|
is_deleted.setIsSystem(true);
|
|
is_deleted.setIsMust(true);
|
|
is_deleted.setDefaultValue("0");
|
|
is_deleted.setFieldType(FieldType.Boolean);
|
|
is_deleted.setFieldLength(1);
|
|
is_deleted.setFieldComment("是否已删除");
|
|
|
|
Field created_by = new Field("CREATE_BY");
|
|
created_by.setIsSystem(true);
|
|
created_by.setIsMust(true);
|
|
created_by.setFieldType(FieldType.Long);
|
|
created_by.setFieldLength(19);
|
|
created_by.setFieldComment("创建用户");
|
|
|
|
Field creation_time = new Field("CREATE_TIME");
|
|
creation_time.setIsSystem(true);
|
|
creation_time.setIsMust(true);
|
|
creation_time.setDefaultValue("NULL");
|
|
creation_time.setFieldType(FieldType.Date);
|
|
creation_time.setFieldComment("创建时间");
|
|
|
|
Field last_updated_by = new Field("LAST_UPDATE_BY");
|
|
last_updated_by.setIsSystem(true);
|
|
creation_time.setDefaultValue("NULL");
|
|
last_updated_by.setFieldType(FieldType.Long);
|
|
last_updated_by.setFieldLength(19);
|
|
last_updated_by.setFieldComment("最后更新用户");
|
|
|
|
Field last_update_time = new Field("LAST_UPDATE_TIME");
|
|
last_update_time.setIsSystem(true);
|
|
last_update_time.setFieldType(FieldType.Date);
|
|
last_update_time.setFieldComment("最后更新时间");
|
|
|
|
table.putFirstField(id);
|
|
table.putField(row_version);
|
|
table.putField(is_deleted);
|
|
table.putField(created_by);
|
|
table.putField(creation_time);
|
|
table.putField(last_updated_by);
|
|
table.putField(last_update_time);
|
|
}
|
|
|
|
public String getNewModuleName() {
|
|
String base = "example";
|
|
String name = base;
|
|
int k = 0;
|
|
do {
|
|
int i;
|
|
for (i = 0; i < project.getModules().size(); i++) {
|
|
if (name.equals(project.getModules().get(i).getModuleName())) {
|
|
break;
|
|
}
|
|
}
|
|
if (i < project.getModules().size()) {
|
|
k++;
|
|
name = base + k;
|
|
} else {
|
|
Module md = new Module(name);
|
|
md.setModuleName(name);
|
|
md.setModuleComment("注释");
|
|
project.putModule(md);
|
|
return name;
|
|
}
|
|
} while (true);
|
|
}
|
|
|
|
public String getNewFieldName(List<Field> fields) {
|
|
String base = "NEW_FIELD";
|
|
String name = base;
|
|
int k = 0;
|
|
do {
|
|
int i;
|
|
for (i = 0; i < fields.size(); i++) {
|
|
if (name.equals(fields.get(i).getFieldName())) {
|
|
break;
|
|
}
|
|
}
|
|
if (i < fields.size()) {
|
|
k++;
|
|
name = base + "_" + k;
|
|
} else {
|
|
Field field = new Field(name);
|
|
field.setDefaultValue("NULL");
|
|
field.setIsQuery(false);
|
|
field.setIsMust(false);
|
|
field.setIsPrimaryKey(false);
|
|
field.setFieldType(FieldType.String_var50);
|
|
field.setFieldLength(FieldType.String_var50.getDefaultLength());
|
|
int j = 0;
|
|
for (; j < fields.size(); j++) {
|
|
if (fields.get(j).getFieldName().equals("ROW_VERSION")) {
|
|
break;
|
|
}
|
|
}
|
|
fields.add(j, field);
|
|
return name;
|
|
}
|
|
} while (true);
|
|
}
|
|
|
|
public List<Module> getMds() {
|
|
return project.getModules();
|
|
}
|
|
|
|
public Project getProject() {
|
|
return project;
|
|
}
|
|
|
|
public boolean doCheck() {
|
|
if (project.getProjectName() == null || "".equals(project.getProjectName())) {
|
|
Dialog.showConfirmDialog("没有填写项目名!");
|
|
return false;
|
|
} else if (project.getProjectBasePackage() == null || "".equals(project.getProjectBasePackage())) {
|
|
Dialog.showConfirmDialog("没有填写基本域名!");
|
|
return false;
|
|
} else if (project.getProjectAuthor() == null || "".equals(project.getProjectAuthor())) {
|
|
Dialog.showConfirmDialog("没有填写作者!");
|
|
return false;
|
|
}
|
|
for (Module md : project.getModules()) {
|
|
if (md.getModuleName() == null || "".equals(md.getModuleName())) {
|
|
Dialog.showConfirmDialog("项目" + project.getProjectName() + "没有填写模块名!");
|
|
return false;
|
|
} else if (md.getModuleComment() == null || "".equals(md.getModuleComment())) {
|
|
Dialog.showConfirmDialog("项目" + project.getProjectName() + "没有模块注释!");
|
|
return false;
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
|
|
/**
|
|
* 保存配置文件
|
|
*/
|
|
public void save(File file) {
|
|
xmlService.saveAs(file, project);
|
|
}
|
|
|
|
public void save() {
|
|
xmlService.saveAs(path, project);
|
|
}
|
|
|
|
public void delete() {
|
|
File file = new File(path, project.getProjectName() + ".xml");
|
|
if (file.exists()) {
|
|
file.delete();
|
|
}
|
|
}
|
|
|
|
private static ExecutorService service = Executors.newFixedThreadPool(1);
|
|
|
|
public void tryGetDBmapper(DataBase dataBase) {
|
|
if (dataBase.name().equals(DataBase.MySQL.name())) {
|
|
dBmapper = new MySQLDBmapper(dataBase);
|
|
} else if (dataBase.name().equals(DataBase.Oracle.name())) {
|
|
dBmapper = new OracleDBmapper(dataBase);
|
|
} else if (dataBase.name().equals(DataBase.SQLite.name())) {
|
|
dBmapper = new SQLiteDBmapper(dataBase);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 生成模板 入口
|
|
*
|
|
* @param path
|
|
*/
|
|
public void generate(final String path, final String option, final DataBase dataBase) {
|
|
tryGetDBmapper(dataBase);
|
|
|
|
File root = new File(path);
|
|
if (!root.exists()) {
|
|
Dialog.showTimedDialog(1000, "目录不存在!");
|
|
}
|
|
Dialog.showProgress("生成中...");
|
|
new Thread() {
|
|
@Override
|
|
public void run() {
|
|
Callable callback = null;
|
|
switch (option) {
|
|
case "SpringBoot":
|
|
callback = new SpringBootCallable(path, dataBase, project, option, false);
|
|
break;
|
|
case "SpringBoot+Cloud":
|
|
callback = new SpringBootCallable(path, dataBase, project, "SpringBoot", true);
|
|
break;
|
|
case "SpringMVC_Mybatis":
|
|
callback = new SpringMVCCallable(path, dataBase, project, option);
|
|
break;
|
|
default:
|
|
|
|
}
|
|
|
|
Future submit = service.submit(callback);
|
|
try {
|
|
submit.get();
|
|
} catch (InterruptedException e) {
|
|
e.printStackTrace();
|
|
} catch (ExecutionException e) {
|
|
e.printStackTrace();
|
|
}
|
|
Dialog.stopPopup();
|
|
Dialog.showSuccess("生成完毕.");
|
|
}
|
|
}.start();
|
|
}
|
|
|
|
public void generateApi(File module, File api, List<String> domainList, List<Api> apis) {
|
|
if (module.exists()) {
|
|
Dialog.showProgress("生成中...");
|
|
new Thread() {
|
|
@Override
|
|
public void run() {
|
|
boolean mkdirs = api.mkdirs();
|
|
ApiCallable apiCallable = new ApiCallable(module, api, domainList, apis);
|
|
Future submit = service.submit(apiCallable);
|
|
try {
|
|
Boolean b = (Boolean) submit.get();
|
|
if (!b) {
|
|
Dialog.showError("请确认目录结构是否存在或正确!");
|
|
}
|
|
} catch (InterruptedException e) {
|
|
e.printStackTrace();
|
|
} catch (ExecutionException e) {
|
|
e.printStackTrace();
|
|
}
|
|
|
|
Dialog.stopPopup();
|
|
Dialog.showSuccess("Api生成完毕.");
|
|
}
|
|
}.start();
|
|
}
|
|
}
|
|
|
|
public void generate(final String path, AndroidOption option) {
|
|
Dialog.showProgress("生成中...");
|
|
new Thread() {
|
|
@Override
|
|
public void run() {
|
|
AndroidCallable androidCallable = new AndroidCallable(path, option);
|
|
Future submit = service.submit(androidCallable);
|
|
try {
|
|
Boolean b = (Boolean) submit.get();
|
|
if (!b) {
|
|
Dialog.showError("请确认目录结构是否存在或正确!");
|
|
}
|
|
} catch (InterruptedException e) {
|
|
e.printStackTrace();
|
|
} catch (ExecutionException e) {
|
|
e.printStackTrace();
|
|
}
|
|
|
|
Dialog.stopPopup();
|
|
Dialog.showSuccess("Android生成完毕.");
|
|
}
|
|
}.start();
|
|
}
|
|
|
|
public void generate(final String path, VueOption option) {
|
|
Dialog.showProgress("生成中...");
|
|
new Thread() {
|
|
@Override
|
|
public void run() {
|
|
VueCallable vueCallable = new VueCallable(path, option);
|
|
Future submit = service.submit(vueCallable);
|
|
try {
|
|
Boolean b = (Boolean) submit.get();
|
|
if (!b) {
|
|
Dialog.showError("请确认目录结构是否存在或正确!");
|
|
}
|
|
} catch (InterruptedException e) {
|
|
e.printStackTrace();
|
|
} catch (ExecutionException e) {
|
|
e.printStackTrace();
|
|
}
|
|
|
|
Dialog.stopPopup();
|
|
Dialog.showSuccess("Vue生成完毕.");
|
|
}
|
|
}.start();
|
|
}
|
|
|
|
public void generate(final String path, SBMDBOption option) {
|
|
Dialog.showProgress("生成中...");
|
|
new Thread() {
|
|
@Override
|
|
public void run() {
|
|
SBMDBCallable callable = new SBMDBCallable(path, option);
|
|
Future submit = service.submit(callable);
|
|
try {
|
|
Boolean b = (Boolean) submit.get();
|
|
if (!b) {
|
|
Dialog.showError("请确认目录结构是否存在或正确!");
|
|
}
|
|
} catch (InterruptedException e) {
|
|
e.printStackTrace();
|
|
} catch (ExecutionException e) {
|
|
e.printStackTrace();
|
|
}
|
|
|
|
Dialog.stopPopup();
|
|
Dialog.showSuccess("生成完毕.");
|
|
}
|
|
}.start();
|
|
}
|
|
|
|
/**
|
|
* 初始化模型树,当存在多个时,默认第一个
|
|
*/
|
|
public void invalidate() {
|
|
File[] files = path.listFiles(new FilenameFilter() {
|
|
public boolean accept(File dir, String name) {
|
|
return name.endsWith(".xml") || name.endsWith(".XML");
|
|
}
|
|
});
|
|
|
|
if (files == null || files.length == 0) {
|
|
project = xmlService.inflate(null);
|
|
} else {
|
|
project = xmlService.inflate(files[0]);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 初始化模型树,当存在多个时,默认第一个
|
|
*/
|
|
public void invalidate(File xmlFile) {
|
|
project = xmlService.inflate(xmlFile);
|
|
}
|
|
|
|
public static boolean testConnect(Map<String, String> properties) {
|
|
|
|
String url = properties.get("url");
|
|
String username = properties.get("username");
|
|
String password = properties.get("password");
|
|
String driverClassName = properties.get("driverClassName");
|
|
|
|
try {
|
|
//加载MySQL的驱动类
|
|
Class.forName(driverClassName);
|
|
|
|
Connection cn = DriverManager.getConnection(url, username, password);
|
|
cn.close();
|
|
return true;
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
}
|
|
return false;
|
|
}
|
|
|
|
public static boolean loadMD(Map<String, String> properties) {
|
|
|
|
String type = properties.get("type");
|
|
String url = properties.get("url");
|
|
String username = properties.get("username");
|
|
String password = properties.get("password");
|
|
String driverClassName = properties.get("driverClassName");
|
|
Connection cn = null;
|
|
|
|
if ("Orcale".equals(type)) {
|
|
try {
|
|
dBmapper = new OracleDBmapper(DataBase.Oracle);
|
|
|
|
//加载驱动类
|
|
Class.forName(driverClassName);
|
|
cn = DriverManager.getConnection(url, username, password);
|
|
|
|
Module md = new Module(username);
|
|
//查询所有表
|
|
Statement statement = cn.createStatement();
|
|
ResultSet rs = statement.executeQuery("select t.table_name,c.comments from user_tables t LEFT JOIN user_tab_comments c ON t.table_name = c.table_name ORDER BY T .table_name");
|
|
|
|
while (rs.next()) {
|
|
Table table = new Table(rs.getString("table_name"), rs.getString("comments"));
|
|
table.setCreate(true);
|
|
table.setDelete(true);
|
|
table.setUpdate(true);
|
|
table.setFind(true);
|
|
table.setGet(false);
|
|
table.setSearch(false);
|
|
md.putTable(table);
|
|
}
|
|
|
|
for (Table table : md.getTables()) {
|
|
String sql = "SELECT T.*,CASE WHEN C.POSITION='1' THEN '1' ELSE '0' END PrimaryKey FROM(select A.COLUMN_ID,A.COLUMN_NAME,A.DATA_TYPE,A.DATA_LENGTH,A .DATA_PRECISION,A .DATA_SCALE,A.NULLABLE,A.DATA_DEFAULT,B.comments from user_tab_columns A ,user_col_comments B where A.Table_Name='" + table.getTableName() + "' AND B.Table_Name='" + table.getTableName() + "' AND A.COLUMN_NAME=B.COLUMN_NAME) T LEFT JOIN user_cons_columns C ON T.COLUMN_NAME = C.COLUMN_NAME AND POSITION = '1' AND C.Table_Name='" + table.getTableName() + "' ORDER BY T .COLUMN_ID";
|
|
ResultSet set = statement.executeQuery(sql);
|
|
|
|
while (set.next()) {
|
|
Field field = new Field();
|
|
|
|
field.setFieldName(set.getString("COLUMN_NAME"));
|
|
|
|
String data_type = set.getString("DATA_TYPE");
|
|
int data_length = set.getInt("DATA_LENGTH");
|
|
int data_precision = set.getInt("DATA_PRECISION");
|
|
int data_scale = set.getInt("DATA_SCALE");
|
|
field.setFieldType(dBmapper.getType(data_type, data_length, data_precision, data_scale));
|
|
field.setFieldLength(set.getInt("DATA_LENGTH"));
|
|
String nullable = set.getString("NULLABLE");
|
|
field.setDefaultValue(set.getString("DATA_DEFAULT"));
|
|
field.setFieldComment(set.getString("COMMENTS"));
|
|
if ("N".equals(nullable)) {
|
|
field.setIsMust(true);
|
|
} else {
|
|
field.setIsMust(false);
|
|
}
|
|
String primarykey = set.getString("PRIMARYKEY");
|
|
if ("1".equals(primarykey)) {
|
|
field.setIsPrimaryKey(true);
|
|
} else {
|
|
field.setIsPrimaryKey(false);
|
|
}
|
|
field.setIsQuery(false);
|
|
|
|
table.putField(field);
|
|
}
|
|
}
|
|
|
|
ManagerFactory.getProjectManager().project.putModule(md);
|
|
isUpdate = true;
|
|
return true;
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
} finally {
|
|
try {
|
|
cn.close();
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
} else if ("Mysql".equals(type)) {
|
|
try {
|
|
dBmapper = new MySQLDBmapper(DataBase.MySQL);
|
|
|
|
//加载驱动类
|
|
Class.forName(driverClassName);
|
|
cn = DriverManager.getConnection(url, username, password);
|
|
|
|
String[] split = url.split("/");
|
|
String dbName = split[split.length - 1];
|
|
|
|
Module md = new Module(dbName);
|
|
//查询所有表
|
|
Statement statement = cn.createStatement();
|
|
ResultSet rs = statement.executeQuery("SELECT TABLE_NAME,TABLE_COMMENT FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = '" + dbName + "'");
|
|
|
|
while (rs.next()) {
|
|
Table table = new Table(rs.getString("TABLE_NAME"), rs.getString("TABLE_COMMENT"));
|
|
table.setCreate(true);
|
|
table.setDelete(true);
|
|
table.setUpdate(true);
|
|
table.setFind(true);
|
|
table.setGet(false);
|
|
table.setSearch(false);
|
|
md.putTable(table);
|
|
}
|
|
|
|
for (Table table : md.getTables()) {
|
|
String sql = "select COLUMN_NAME,COLUMN_COMMENT,COLUMN_KEY,COLUMN_DEFAULT,IS_NULLABLE,DATA_TYPE, COLUMN_TYPE,CHARACTER_MAXIMUM_LENGTH from information_schema.COLUMNS where table_name = '" + table.getTableName() + "' and table_schema = '" + dbName + "' ORDER BY ORDINAL_POSITION ASC";
|
|
ResultSet set = statement.executeQuery(sql);
|
|
|
|
while (set.next()) {
|
|
Field field = new Field();
|
|
|
|
field.setFieldName(set.getString("COLUMN_NAME"));
|
|
|
|
if ("NO".equals(set.getString("IS_NULLABLE"))) {
|
|
field.setIsMust(true);
|
|
} else {
|
|
field.setIsMust(false);
|
|
}
|
|
|
|
if ("PRI".equals(set.getString("COLUMN_KEY"))) {
|
|
field.setIsPrimaryKey(true);
|
|
} else {
|
|
field.setIsPrimaryKey(false);
|
|
}
|
|
|
|
String data_type = set.getString("DATA_TYPE");
|
|
int data_length = set.getInt("CHARACTER_MAXIMUM_LENGTH");
|
|
field.setFieldType(dBmapper.getType(data_type, data_length, 0, 0));
|
|
field.setFieldLength(0);
|
|
if ("varchar".equals(data_type) || "char".equals(data_type)) {
|
|
int length = Integer.parseInt(set.getString("CHARACTER_MAXIMUM_LENGTH"));
|
|
field.setFieldLength(length);
|
|
}
|
|
|
|
field.setDefaultValue(set.getString("COLUMN_DEFAULT"));
|
|
field.setFieldComment(set.getString("COLUMN_COMMENT"));
|
|
|
|
field.setIsQuery(false);
|
|
|
|
table.putField(field);
|
|
}
|
|
}
|
|
|
|
ManagerFactory.getProjectManager().project.putModule(md);
|
|
isUpdate = true;
|
|
return true;
|
|
} catch (ClassNotFoundException e) {
|
|
e.printStackTrace();
|
|
} catch (SQLException e) {
|
|
e.printStackTrace();
|
|
}
|
|
|
|
return false;
|
|
}
|
|
return false;
|
|
}
|
|
}
|