初始化
parent
511839ac99
commit
cb5c857001
@ -0,0 +1,33 @@
|
||||
<?xml version="1.0"?>
|
||||
<project
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
|
||||
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<parent>
|
||||
<groupId>com.jwsaas</groupId>
|
||||
<artifactId>food-parent</artifactId>
|
||||
<version>2.0.0</version>
|
||||
</parent>
|
||||
<artifactId>food-pdm-tools</artifactId>
|
||||
<name>food-pdm-tools</name>
|
||||
<url>http://maven.apache.org</url>
|
||||
|
||||
<properties>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<freemarker.version>2.3.23</freemarker.version>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.apache.commons</groupId>
|
||||
<artifactId>commons-lang3</artifactId>
|
||||
</dependency>
|
||||
<!-- freemarker -->
|
||||
<dependency>
|
||||
<groupId>org.freemarker</groupId>
|
||||
<artifactId>freemarker</artifactId>
|
||||
<version>${freemarker.version}</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
</project>
|
@ -0,0 +1,86 @@
|
||||
package com.jwsaas.powerdesign.parse;
|
||||
|
||||
public class CamelCaseUtils {
|
||||
|
||||
private static final char SEPARATOR = '_';
|
||||
|
||||
public static String toUnderlineName(String s) {
|
||||
if (s == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
StringBuilder sb = new StringBuilder();
|
||||
boolean upperCase = false;
|
||||
for (int i = 0; i < s.length(); i++) {
|
||||
char c = s.charAt(i);
|
||||
|
||||
boolean nextUpperCase = true;
|
||||
|
||||
if (i < (s.length() - 1)) {
|
||||
nextUpperCase = Character.isUpperCase(s.charAt(i + 1));
|
||||
}
|
||||
|
||||
if ((i >= 0) && Character.isUpperCase(c)) {
|
||||
if (!upperCase || !nextUpperCase) {
|
||||
if (i > 0)
|
||||
sb.append(SEPARATOR);
|
||||
}
|
||||
upperCase = true;
|
||||
} else {
|
||||
upperCase = false;
|
||||
}
|
||||
|
||||
sb.append(Character.toLowerCase(c));
|
||||
}
|
||||
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
public static String toCamelCase(String s) {
|
||||
if (s == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
s = s.toLowerCase();
|
||||
|
||||
StringBuilder sb = new StringBuilder(s.length());
|
||||
boolean upperCase = false;
|
||||
for (int i = 0; i < s.length(); i++) {
|
||||
char c = s.charAt(i);
|
||||
|
||||
if (c == SEPARATOR) {
|
||||
upperCase = true;
|
||||
} else if (upperCase) {
|
||||
sb.append(Character.toUpperCase(c));
|
||||
upperCase = false;
|
||||
} else {
|
||||
sb.append(c);
|
||||
}
|
||||
}
|
||||
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* 首字母小写
|
||||
*
|
||||
* @param s
|
||||
* @return
|
||||
*/
|
||||
public static String toCapitalizeCamelCase(String s) {
|
||||
if (s == null) {
|
||||
return null;
|
||||
}
|
||||
s = toCamelCase(s);
|
||||
return s.substring(0, 1).toUpperCase() + s.substring(1);
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
System.out.println(CamelCaseUtils.toUnderlineName("ISOCertifiedStaff"));
|
||||
System.out.println(CamelCaseUtils.toUnderlineName("CertifiedStaff"));
|
||||
System.out.println(CamelCaseUtils.toUnderlineName("UserID"));
|
||||
System.out.println(CamelCaseUtils.toCamelCase("iso_certified_staff"));
|
||||
System.out.println(CamelCaseUtils.toCamelCase("certified_staff"));
|
||||
System.out.println(CamelCaseUtils.toCamelCase("user_id"));
|
||||
}
|
||||
}
|
@ -0,0 +1,75 @@
|
||||
package com.jwsaas.powerdesign.parse.bean;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 表分类信息
|
||||
*
|
||||
* @author 张莹
|
||||
*/
|
||||
public class Category {
|
||||
private String id;
|
||||
private String name; // PDM名称
|
||||
private String code; // PDM代码
|
||||
private String author; // 作者
|
||||
private String comment; // 注释
|
||||
|
||||
private List<Table> tableList = new ArrayList<Table>();
|
||||
|
||||
public Category(String name, String code, String author, String comment) {
|
||||
super();
|
||||
this.name = name;
|
||||
this.code = code;
|
||||
this.author = author;
|
||||
this.comment = comment;
|
||||
}
|
||||
|
||||
public String getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(String id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public String getCode() {
|
||||
return code;
|
||||
}
|
||||
|
||||
public void setCode(String code) {
|
||||
this.code = code;
|
||||
}
|
||||
|
||||
public String getAuthor() {
|
||||
return author;
|
||||
}
|
||||
|
||||
public void setAuthor(String author) {
|
||||
this.author = author;
|
||||
}
|
||||
|
||||
public String getComment() {
|
||||
return comment;
|
||||
}
|
||||
|
||||
public void setComment(String comment) {
|
||||
this.comment = comment;
|
||||
}
|
||||
|
||||
public List<Table> getTableList() {
|
||||
return tableList;
|
||||
}
|
||||
|
||||
public void setTableList(List<Table> tableList) {
|
||||
this.tableList = tableList;
|
||||
}
|
||||
}
|
@ -0,0 +1,227 @@
|
||||
package com.jwsaas.powerdesign.parse.bean;
|
||||
|
||||
/**
|
||||
* 表字段信息
|
||||
*
|
||||
* @author 张莹
|
||||
*/
|
||||
public class Column {
|
||||
private String id;
|
||||
private String code; // 字段代码
|
||||
private String scode; // 简化后的表代码, 主要是去调前缀,比如BASE_USER-->USER
|
||||
private String name; // 字段含义
|
||||
private String type; // 原始类型及长度
|
||||
private int length;
|
||||
private int precision;
|
||||
private String domainId; // 定义的数据域ID
|
||||
private boolean pkFlag; // 是否为主键
|
||||
private boolean nullFlag; // 是否可以为空
|
||||
private boolean uniqueFlag; // 是否唯一
|
||||
private Table ref;// 关联表
|
||||
private String refId; // 关联表字段ID
|
||||
private String comment; // 注释
|
||||
|
||||
private Domain domain;
|
||||
|
||||
private static final String[] STRING = { "varchar", "text", "tinytext", "longtext", "bigint" };
|
||||
private static final String[] DATE = { "date", "datetime", "time", "timestamp" };
|
||||
private static final String[] INT = { "int" };
|
||||
private static final String[] LONG = { "decimal" };
|
||||
private static final String[] DOUBLE = { "decimal" };
|
||||
|
||||
public Column() {
|
||||
}
|
||||
|
||||
public Column(String id, String code, String name, String type, int length, int precision) {
|
||||
this.id = id;
|
||||
this.code = code;
|
||||
this.name = name;
|
||||
this.type = type;
|
||||
this.length = length;
|
||||
this.precision = precision;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
StringBuffer sb = new StringBuffer().append(id);
|
||||
sb.append("\t").append(name).append("(").append(code).append("--").append(scode).append(")");
|
||||
sb.append("\t").append(type);
|
||||
if (nullFlag)
|
||||
sb.append("\tNot Null");
|
||||
if (pkFlag)
|
||||
sb.append("\tPrimary Key");
|
||||
if (uniqueFlag)
|
||||
sb.append("\tUnique");
|
||||
if (ref != null) {
|
||||
sb.append("\t-->").append(ref.getId()).append("(").append(ref.getCode()).append(").").append(refId).append("(").append(ref.getColumnInfo(refId).getCode()).append(")");
|
||||
}
|
||||
if (domain != null)
|
||||
sb.append("\tdomainId:").append(domainId);
|
||||
if (comment != null)
|
||||
sb.append("\t//").append(comment);
|
||||
return sb.append("\r\n").toString();
|
||||
}
|
||||
|
||||
public String getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(String id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getCode() {
|
||||
return code;
|
||||
}
|
||||
|
||||
public void setCode(String code) {
|
||||
this.code = code;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public String getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
public void setType(String type) {
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
public String getDomainId() {
|
||||
return domainId;
|
||||
}
|
||||
|
||||
public void setDomainId(String domainId) {
|
||||
this.domainId = domainId;
|
||||
}
|
||||
|
||||
public boolean isPkFlag() {
|
||||
return pkFlag;
|
||||
}
|
||||
|
||||
public void setPkFlag(boolean pkFlag) {
|
||||
this.pkFlag = pkFlag;
|
||||
}
|
||||
|
||||
public boolean isNullFlag() {
|
||||
return nullFlag;
|
||||
}
|
||||
|
||||
public void setNullFlag(boolean nullFlag) {
|
||||
this.nullFlag = nullFlag;
|
||||
}
|
||||
|
||||
public boolean isUniqueFlag() {
|
||||
return uniqueFlag;
|
||||
}
|
||||
|
||||
public void setUniqueFlag(boolean uniqueFlag) {
|
||||
this.uniqueFlag = uniqueFlag;
|
||||
}
|
||||
|
||||
public String getRefId() {
|
||||
return refId;
|
||||
}
|
||||
|
||||
public void setRefId(String refId) {
|
||||
this.refId = refId;
|
||||
}
|
||||
|
||||
public Table getRef() {
|
||||
return ref;
|
||||
}
|
||||
|
||||
public void setRef(Table ref) {
|
||||
this.ref = ref;
|
||||
}
|
||||
|
||||
public String getComment() {
|
||||
return comment;
|
||||
}
|
||||
|
||||
public void setComment(String comment) {
|
||||
this.comment = comment;
|
||||
}
|
||||
|
||||
public Domain getDomain() {
|
||||
return domain;
|
||||
}
|
||||
|
||||
public void setDomain(Domain domain) {
|
||||
this.domain = domain;
|
||||
}
|
||||
|
||||
public int getLength() {
|
||||
return length;
|
||||
}
|
||||
|
||||
public void setLength(int length) {
|
||||
this.length = length;
|
||||
}
|
||||
|
||||
public int getPrecision() {
|
||||
return precision;
|
||||
}
|
||||
|
||||
public void setPrecision(int precision) {
|
||||
this.precision = precision;
|
||||
}
|
||||
|
||||
public String getScode() {
|
||||
return scode;
|
||||
}
|
||||
|
||||
public void setScode(String scode) {
|
||||
this.scode = scode;
|
||||
}
|
||||
|
||||
public String getJavaType() {
|
||||
|
||||
String dataType = this.type;
|
||||
int pos = this.type.indexOf("(");
|
||||
if (pos != -1) {
|
||||
dataType = this.type.substring(0, pos);
|
||||
}
|
||||
|
||||
if ("char".equalsIgnoreCase(dataType) && length == 1)
|
||||
return "Boolean";
|
||||
for (String type : STRING) {
|
||||
if (type.equalsIgnoreCase(dataType))
|
||||
return "String";
|
||||
}
|
||||
for (String type : DATE) {
|
||||
if (type.equalsIgnoreCase(dataType))
|
||||
return "Date";
|
||||
}
|
||||
|
||||
for (String type : INT) {
|
||||
if (type.equalsIgnoreCase(dataType))
|
||||
return "Integer";
|
||||
}
|
||||
for (String type : LONG) {
|
||||
if (type.equalsIgnoreCase(dataType)) {
|
||||
if (precision != 0) {
|
||||
return "Double";
|
||||
} else
|
||||
return "Long";
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
for (String type : DOUBLE) {
|
||||
dataType = dataType.toLowerCase();
|
||||
if (dataType.startsWith(type)) {
|
||||
return "Double";
|
||||
}
|
||||
}
|
||||
System.out.println("未知的数据类型:" + dataType);
|
||||
return "Serializable";
|
||||
}
|
||||
}
|
@ -0,0 +1,70 @@
|
||||
package com.jwsaas.powerdesign.parse.bean;
|
||||
|
||||
/**
|
||||
* 数据类型域类
|
||||
*
|
||||
* @author 张莹
|
||||
*/
|
||||
public class Domain {
|
||||
private String id;
|
||||
private String name; // 名称
|
||||
private String code; // 代码
|
||||
private String type; // 数据类型
|
||||
private String comment; // 注释
|
||||
|
||||
public Domain(String id, String name, String code) {
|
||||
this.id = id;
|
||||
this.name = name;
|
||||
this.code = code;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
StringBuffer sb = new StringBuffer().append(id);
|
||||
sb.append("\t").append(name).append("(").append(code).append(")");
|
||||
sb.append("\t").append(type);
|
||||
if (comment != null)
|
||||
sb.append("\t//").append(comment);
|
||||
return sb.append("\r\n").toString();
|
||||
}
|
||||
|
||||
public String getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(String id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public String getCode() {
|
||||
return code;
|
||||
}
|
||||
|
||||
public void setCode(String code) {
|
||||
this.code = code;
|
||||
}
|
||||
|
||||
public String getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
public void setType(String type) {
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
public String getComment() {
|
||||
return comment;
|
||||
}
|
||||
|
||||
public void setComment(String comment) {
|
||||
this.comment = comment;
|
||||
}
|
||||
}
|
@ -0,0 +1,51 @@
|
||||
package com.jwsaas.powerdesign.parse.bean;
|
||||
|
||||
import java.text.MessageFormat;
|
||||
import java.util.MissingResourceException;
|
||||
import java.util.ResourceBundle;
|
||||
|
||||
public class Messages {
|
||||
private static final String BUNDLE_NAME = "com.baoyuan.bean.messages"; //$NON-NLS-1$
|
||||
|
||||
private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle
|
||||
.getBundle(BUNDLE_NAME);
|
||||
|
||||
private Messages() {
|
||||
}
|
||||
|
||||
public static String getString(String key) {
|
||||
try {
|
||||
return RESOURCE_BUNDLE.getString(key);
|
||||
} catch (MissingResourceException e) {
|
||||
return '!' + key + '!';
|
||||
}
|
||||
}
|
||||
|
||||
public static String getString(String key, String parm1) {
|
||||
try {
|
||||
return MessageFormat.format(RESOURCE_BUNDLE.getString(key),
|
||||
new Object[] { parm1 });
|
||||
} catch (MissingResourceException e) {
|
||||
return '!' + key + '!';
|
||||
}
|
||||
}
|
||||
|
||||
public static String getString(String key, String parm1, String parm2) {
|
||||
try {
|
||||
return MessageFormat.format(RESOURCE_BUNDLE.getString(key),
|
||||
new Object[] { parm1, parm2 });
|
||||
} catch (MissingResourceException e) {
|
||||
return '!' + key + '!';
|
||||
}
|
||||
}
|
||||
|
||||
public static String getString(String key, String parm1, String parm2,
|
||||
String parm3) {
|
||||
try {
|
||||
return MessageFormat.format(RESOURCE_BUNDLE.getString(key),
|
||||
new Object[] { parm1, parm2, parm3 });
|
||||
} catch (MissingResourceException e) {
|
||||
return '!' + key + '!';
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,164 @@
|
||||
package com.jwsaas.powerdesign.parse.bean;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
|
||||
/**
|
||||
* PDM项目信息
|
||||
*/
|
||||
public class Project {
|
||||
private String code; // 项目代码
|
||||
private String name; // 项目名称
|
||||
private String author; // 作者
|
||||
private String version; // 版本
|
||||
private Date cdate; // 创建日期
|
||||
|
||||
private Map<String, Domain> domains = new HashMap<String, Domain>();
|
||||
private List<Category> categoryList = new ArrayList<Category>();
|
||||
private List<Table> tableList = new ArrayList<Table>(); // 表列表
|
||||
|
||||
/**
|
||||
* 获取指定ID的表定义信息
|
||||
*
|
||||
* @param oid
|
||||
* @return
|
||||
*/
|
||||
public Table getTable(String oid) {
|
||||
for (int i = 0; i < tableList.size(); i++)
|
||||
if (((Table) tableList.get(i)).getId().equals(oid))
|
||||
return ((Table) tableList.get(i));
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置表关联
|
||||
*
|
||||
* @param soid
|
||||
* @param toid
|
||||
* @param sfoid
|
||||
* @param tfoid
|
||||
*/
|
||||
public void setFK(String soid, String toid, String sfoid, String tfoid) {
|
||||
Table t1 = getTable(soid);
|
||||
Table t2 = getTable(toid);
|
||||
if (t1 == null || t2 == null)
|
||||
return;
|
||||
|
||||
Column col1 = t1.getColumnInfo(sfoid);
|
||||
Column col2 = t2.getColumnInfo(tfoid);
|
||||
if (col1 == null || col2 == null)
|
||||
return;
|
||||
|
||||
col1.setRef(t2);
|
||||
col1.setRefId(tfoid);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取指定的PDM分类
|
||||
*
|
||||
* @param cateId
|
||||
* @return
|
||||
*/
|
||||
public Category getCategory(String cateId) {
|
||||
for (Category cate : categoryList) {
|
||||
if (cateId.equals(cate.getId()))
|
||||
return cate;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
StringBuffer sb = new StringBuffer().append(name);
|
||||
sb.append("(").append(code).append(")\tAuthor:").append(author);
|
||||
sb.append(" Version:").append(version);
|
||||
sb.append(" Create time:").append(cdate);
|
||||
sb.append(" ").append(domains.size()).append(" domains");
|
||||
sb.append(" ").append(categoryList.size()).append(" pdms");
|
||||
sb.append(" ").append(tableList.size()).append(" tables");
|
||||
sb.append("\r\n");
|
||||
|
||||
if (domains.size() > 0) {
|
||||
sb.append("Domain List:\r\n");
|
||||
for (Entry<String, Domain> entry : domains.entrySet()) {
|
||||
sb.append("\t").append(entry.getValue());
|
||||
}
|
||||
}
|
||||
|
||||
if (tableList.size() > 0) {
|
||||
sb.append("Table List:\r\n");
|
||||
for (Table table : tableList) {
|
||||
sb.append("\t").append(table);
|
||||
}
|
||||
}
|
||||
return sb.append("\r\n").toString();
|
||||
}
|
||||
|
||||
public String getCode() {
|
||||
return code;
|
||||
}
|
||||
|
||||
public void setCode(String code) {
|
||||
this.code = code;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public String getAuthor() {
|
||||
return author;
|
||||
}
|
||||
|
||||
public void setAuthor(String author) {
|
||||
this.author = author;
|
||||
}
|
||||
|
||||
public String getVersion() {
|
||||
return version;
|
||||
}
|
||||
|
||||
public void setVersion(String version) {
|
||||
this.version = version;
|
||||
}
|
||||
|
||||
public Date getCdate() {
|
||||
return cdate;
|
||||
}
|
||||
|
||||
public void setCdate(Date cdate) {
|
||||
this.cdate = cdate;
|
||||
}
|
||||
|
||||
public List<Category> getCategoryList() {
|
||||
return categoryList;
|
||||
}
|
||||
|
||||
public void setCategoryList(List<Category> categoryList) {
|
||||
this.categoryList = categoryList;
|
||||
}
|
||||
|
||||
public List<Table> getTableList() {
|
||||
return tableList;
|
||||
}
|
||||
|
||||
public void setTableList(List<Table> tableList) {
|
||||
this.tableList = tableList;
|
||||
}
|
||||
|
||||
public Map<String, Domain> getDomains() {
|
||||
return domains;
|
||||
}
|
||||
|
||||
public void setDomains(Map<String, Domain> domains) {
|
||||
this.domains = domains;
|
||||
}
|
||||
}
|
@ -0,0 +1,49 @@
|
||||
package com.jwsaas.powerdesign.parse.bean;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
public class TableSchema implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = -1258282486852764827L;
|
||||
|
||||
private String columnName;
|
||||
|
||||
private String isNullable;
|
||||
|
||||
private String dataType;
|
||||
|
||||
private String columnComment;
|
||||
|
||||
public String getColumnName() {
|
||||
return columnName;
|
||||
}
|
||||
|
||||
public void setColumnName(String columnName) {
|
||||
this.columnName = columnName;
|
||||
}
|
||||
|
||||
public String getIsNullable() {
|
||||
return isNullable;
|
||||
}
|
||||
|
||||
public void setIsNullable(String isNullable) {
|
||||
this.isNullable = isNullable;
|
||||
}
|
||||
|
||||
public String getDataType() {
|
||||
return dataType;
|
||||
}
|
||||
|
||||
public void setDataType(String dataType) {
|
||||
this.dataType = dataType;
|
||||
}
|
||||
|
||||
public String getColumnComment() {
|
||||
return columnComment;
|
||||
}
|
||||
|
||||
public void setColumnComment(String columnComment) {
|
||||
this.columnComment = columnComment;
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,22 @@
|
||||
package com.jwsaas.powerdesign.parse.exceptions;
|
||||
|
||||
public class DataSourceDescriptorException extends RuntimeException{
|
||||
|
||||
private static final long serialVersionUID = 5082299003855826096L;
|
||||
|
||||
public DataSourceDescriptorException() {
|
||||
super();
|
||||
}
|
||||
|
||||
public DataSourceDescriptorException(Throwable e) {
|
||||
super(e);
|
||||
}
|
||||
|
||||
public DataSourceDescriptorException(String message) {
|
||||
super(message);
|
||||
}
|
||||
|
||||
public DataSourceDescriptorException(String message,Throwable e) {
|
||||
super(message, e);
|
||||
}
|
||||
}
|
@ -0,0 +1,60 @@
|
||||
package com.jwsaas.powerdesign.parse.exceptions;
|
||||
|
||||
public class ErrorContext {
|
||||
|
||||
private static final String LINE_SEPARATOR = System.getProperty("line.separator", "\n");
|
||||
private static final ThreadLocal<ErrorContext> LOCAL = new ThreadLocal<ErrorContext>();
|
||||
|
||||
private String message;
|
||||
|
||||
private Throwable cause;
|
||||
|
||||
private ErrorContext() {
|
||||
}
|
||||
|
||||
public static ErrorContext instance() {
|
||||
ErrorContext context = LOCAL.get();
|
||||
if (context == null) {
|
||||
context = new ErrorContext();
|
||||
LOCAL.set(context);
|
||||
}
|
||||
return context;
|
||||
}
|
||||
|
||||
public ErrorContext message(String message) {
|
||||
this.message = message;
|
||||
return this;
|
||||
}
|
||||
|
||||
public ErrorContext cause(Throwable cause) {
|
||||
this.cause = cause;
|
||||
return this;
|
||||
}
|
||||
|
||||
public ErrorContext reset() {
|
||||
message = null;
|
||||
cause = null;
|
||||
LOCAL.remove();
|
||||
return this;
|
||||
}
|
||||
|
||||
public String toString() {
|
||||
StringBuffer description = new StringBuffer();
|
||||
|
||||
// message
|
||||
if (this.message != null) {
|
||||
description.append(LINE_SEPARATOR);
|
||||
description.append("### ");
|
||||
description.append(this.message);
|
||||
}
|
||||
|
||||
// cause
|
||||
if (cause != null) {
|
||||
description.append(LINE_SEPARATOR);
|
||||
description.append("### Cause: ");
|
||||
description.append(cause.toString());
|
||||
}
|
||||
|
||||
return description.toString();
|
||||
}
|
||||
}
|
@ -0,0 +1,60 @@
|
||||
package com.jwsaas.powerdesign.parse.exceptions;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Administrator
|
||||
*
|
||||
*/
|
||||
public class ExceptionFactory {
|
||||
|
||||
/**
|
||||
* ServiceException
|
||||
*
|
||||
* @param message
|
||||
* @param e
|
||||
* @return
|
||||
*/
|
||||
public static RuntimeException wrapServiceException(String message, Exception e) {
|
||||
return new ServiceException(ErrorContext.instance().message(message).cause(e).toString(), e);
|
||||
}
|
||||
|
||||
/**
|
||||
* ValidationException
|
||||
*
|
||||
* @param message
|
||||
* @param e
|
||||
* @return
|
||||
*/
|
||||
public static RuntimeException wrapValidationException(String message, Throwable e, Map<String, String> result) {
|
||||
return new ValidationException(ErrorContext.instance().message(message).cause(e).toString(), e, result);
|
||||
}
|
||||
|
||||
/**
|
||||
* DataSourceDescriptorException
|
||||
*
|
||||
* @param message
|
||||
* @param e
|
||||
* @return
|
||||
*/
|
||||
public static RuntimeException wrapDataSourceDescriptorException(String message, Exception e) {
|
||||
return new DataSourceDescriptorException(ErrorContext.instance().message(message).cause(e).toString(), e);
|
||||
}
|
||||
|
||||
/**
|
||||
* DataSourceDescriptorException
|
||||
*
|
||||
* @param message
|
||||
* @param e
|
||||
* @return
|
||||
*/
|
||||
public static RuntimeException wrapDataSourceDescriptorException(String message) {
|
||||
return new DataSourceDescriptorException(ErrorContext.instance().message(message).toString());
|
||||
}
|
||||
|
||||
public static RuntimeException wrapForeignKeyException(String message, Exception e) {
|
||||
return new ForeignKeyException(ErrorContext.instance().message(message).cause(e).toString(), e);
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,22 @@
|
||||
package com.jwsaas.powerdesign.parse.exceptions;
|
||||
|
||||
public class ForeignKeyException extends RuntimeException{
|
||||
|
||||
private static final long serialVersionUID = 3053852074986193714L;
|
||||
|
||||
public ForeignKeyException() {
|
||||
super();
|
||||
}
|
||||
|
||||
public ForeignKeyException(Throwable e) {
|
||||
super(e);
|
||||
}
|
||||
|
||||
public ForeignKeyException(String message) {
|
||||
super(message);
|
||||
}
|
||||
|
||||
public ForeignKeyException(String message,Throwable e) {
|
||||
super(message, e);
|
||||
}
|
||||
}
|
@ -0,0 +1,23 @@
|
||||
package com.jwsaas.powerdesign.parse.exceptions;
|
||||
|
||||
public class ServiceException extends RuntimeException {
|
||||
|
||||
private static final long serialVersionUID = -1095971671427544722L;
|
||||
|
||||
public ServiceException() {
|
||||
super();
|
||||
}
|
||||
|
||||
public ServiceException(Throwable e) {
|
||||
super(e);
|
||||
}
|
||||
|
||||
public ServiceException(String message) {
|
||||
super(message);
|
||||
}
|
||||
|
||||
public ServiceException(String message,Throwable e) {
|
||||
super(message, e);
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,23 @@
|
||||
package com.jwsaas.powerdesign.parse.exceptions;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
public class ValidationException extends RuntimeException{
|
||||
|
||||
private static final long serialVersionUID = -4820402020206751860L;
|
||||
|
||||
private Map<String,String> result;
|
||||
|
||||
public ValidationException() {
|
||||
super();
|
||||
}
|
||||
|
||||
public ValidationException(String message,Throwable e,Map<String,String> result) {
|
||||
super(message, e);
|
||||
this.result = result;
|
||||
}
|
||||
|
||||
public Map<String, String> getResult() {
|
||||
return result;
|
||||
}
|
||||
}
|
@ -0,0 +1,14 @@
|
||||
package ${basePackage}.dao<#if sign != "shared">.${sign}</#if>.impl;
|
||||
|
||||
import ${basePackage}.dao<#if sign != "shared">.${sign}</#if>.${scode}Dao;
|
||||
import ${basePackage}.entity<#if sign != "shared">.${sign}</#if>.${scode};
|
||||
<#if sign != "shared">import com.jwsaas.dao.impl.BaseDaoImpl;</#if>
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
/**
|
||||
* ${name}数据接口实现
|
||||
*/
|
||||
@Repository(${signPackage} + "${scode}DaoImpl")
|
||||
public class ${scode}DaoImpl extends BaseDaoImpl<${scode}, String> implements ${scode}Dao {
|
||||
|
||||
}
|
@ -0,0 +1,8 @@
|
||||
package ${basePackage}.dao<#if sign != "shared">.${sign}</#if>;
|
||||
|
||||
import ${basePackage}.entity<#if sign != "shared">.${sign}</#if>.${scode};
|
||||
<#if sign != "shared">import com.jwsaas.dao.BaseDao;</#if>
|
||||
|
||||
public interface ${scode}Dao extends BaseDao<${scode}, String> {
|
||||
|
||||
}
|
@ -0,0 +1,51 @@
|
||||
package ${basePackage}.entity<#if sign != "shared">.${sign}</#if>;
|
||||
|
||||
import java.util.Date;
|
||||
import org.apache.ibatis.type.Alias;
|
||||
<#if sign != "shared">import com.jwsaas.entity.BaseEntity;</#if>
|
||||
|
||||
//Generated from PowerDesigner file ,Written by 张莹.
|
||||
|
||||
/**
|
||||
* 表名称:${name}
|
||||
* 表代码:${code}
|
||||
*/
|
||||
@Alias(${signPackage}+"${scode}")
|
||||
public class ${scode} extends BaseEntity {
|
||||
|
||||
private static final long serialVersionUID = ${serialVersionUID}L;
|
||||
|
||||
<#assign ignore = ["id", "tenantId", "createUser", "createDate", "modifyUser", "modifyDate"]>
|
||||
<#list columns as column>
|
||||
<#if ignore?seq_contains(column.scode)==false>
|
||||
/**
|
||||
*${column.name}
|
||||
*/
|
||||
private ${column.javaType} ${column.scode};
|
||||
|
||||
</#if>
|
||||
</#list>
|
||||
|
||||
<#list columns as column>
|
||||
<#if ignore?seq_contains(column.scode)==false>
|
||||
/**
|
||||
* 字段名称 :${column.name}
|
||||
* 数据类型 :${column.type}
|
||||
* 是否必填 :${column.nullFlag?string('true','false')}
|
||||
*/
|
||||
public ${column.javaType} get${column.scode?cap_first}() {
|
||||
return this.${column.scode};
|
||||
}
|
||||
|
||||
/**
|
||||
* 字段名称 :${column.name}
|
||||
* 数据类型 :${column.type}
|
||||
* 是否必填 :${column.nullFlag?string('true','false')}
|
||||
*/
|
||||
public void set${column.scode?cap_first}(${column.javaType} ${column.scode}) {
|
||||
this.${column.scode} = ${column.scode};
|
||||
}
|
||||
|
||||
</#if>
|
||||
</#list>
|
||||
}
|
@ -0,0 +1,118 @@
|
||||
<#macro mapperEl value>${r"#{"}${value}}</#macro>
|
||||
<#macro jspEl value>${r"${"}${value}}</#macro>
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="${basePackage}.entity<#if sign != "shared">.${sign}</#if>.${scode}Mapper">
|
||||
|
||||
<sql id="columnList">
|
||||
<#list columns as column>`${column.scode}`<#if column_has_next>,</#if></#list>
|
||||
</sql>
|
||||
|
||||
<select id="get" resultType="${sign}${scode}">
|
||||
select
|
||||
<include refid="columnList" />
|
||||
from ${code}
|
||||
where id = <@mapperEl 'id'/>
|
||||
</select>
|
||||
|
||||
<select id="find" resultType="${sign}${scode}">
|
||||
select
|
||||
<include refid="columnList" />
|
||||
from ${code}
|
||||
where tenantId = <@mapperEl 'tenantId'/> and <@jspEl 'property'/>=<@mapperEl 'value'/>
|
||||
</select>
|
||||
|
||||
<select id="findList" resultType="${sign}${scode}">
|
||||
select
|
||||
<include refid="columnList" />
|
||||
from ${code}
|
||||
where tenantId = <@mapperEl 'tenantId'/> and <@jspEl 'property'/>=<@mapperEl 'value'/>
|
||||
</select>
|
||||
|
||||
<select id="findListByIds" parameterType="java.lang.String"
|
||||
resultType="${sign}${scode}">
|
||||
select
|
||||
<include refid="columnList" />
|
||||
from ${code}
|
||||
where `id` in
|
||||
<foreach collection="list" item="id" index="index" open="(" close=")" separator=","><@mapperEl 'id'/></foreach>
|
||||
</select>
|
||||
|
||||
<select id="getPager" resultType="${sign}${scode}">
|
||||
select
|
||||
<include refid="columnList" />
|
||||
from ${code}
|
||||
<if test="(@com.jwsaas.utils.OgnlUtils@isEmpty(condition))!=null"><@jspEl 'condition'/></if>
|
||||
</select>
|
||||
|
||||
<select id="getList" resultType="${sign}${scode}">
|
||||
select
|
||||
<include refid="columnList" />
|
||||
from ${code}
|
||||
<if test="(@com.jwsaas.utils.OgnlUtils@isEmpty(condition))!=null"><@jspEl 'condition'/></if>
|
||||
</select>
|
||||
|
||||
<select id="getTotalCount" resultType="java.lang.Long">
|
||||
select count(id) as result
|
||||
from ${code} where `tenantId` = <@mapperEl 'tenantId'/>
|
||||
</select>
|
||||
|
||||
<select id="isExist" resultType="java.lang.Boolean">
|
||||
select count(id) as result from ${code}
|
||||
where `tenantId` = <@mapperEl 'tenantId'/> and <@jspEl 'property'/>=<@mapperEl 'value'/>
|
||||
</select>
|
||||
|
||||
<insert id="save" parameterType="${sign}${scode}"
|
||||
useGeneratedKeys="true" keyProperty="id">
|
||||
insert into ${code}
|
||||
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||
`id`,`tenantId`
|
||||
<#assign ignore = ["id", "tenantId", "modifyUser", "modifyDate"]>
|
||||
<#list columns as column>
|
||||
<#if ignore?seq_contains(column.scode)==false>
|
||||
<if test="${column.scode} != null">,`${column.scode}`</if>
|
||||
</#if>
|
||||
</#list>
|
||||
</trim>
|
||||
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
||||
<@mapperEl 'id'/>,<@mapperEl 'tenantId'/>
|
||||
<#assign ignore = ["id", "tenantId", "modifyUser", "modifyDate"]>
|
||||
<#list columns as column>
|
||||
<#if ignore?seq_contains(column.scode)==false>
|
||||
<if test="${column.scode} != null">,<@mapperEl '${column.scode}'/></if>
|
||||
</#if>
|
||||
</#list>
|
||||
</trim>
|
||||
</insert>
|
||||
|
||||
<update id="update" parameterType="${sign}${scode}">
|
||||
update ${code}
|
||||
<set>
|
||||
`tenantId` = <@mapperEl 'tenantId'/>
|
||||
<#assign ignore = ["id", "tenantId", "createUser", "createDate"]>
|
||||
<#list columns as column>
|
||||
<#if ignore?seq_contains(column.scode)==false>
|
||||
<if test="${column.scode} != null">,`${column.scode}` = <@mapperEl '${column.scode}'/></if>
|
||||
</#if>
|
||||
</#list>
|
||||
</set>
|
||||
where `id` = <@mapperEl 'id'/>
|
||||
</update>
|
||||
|
||||
<delete id="delete">
|
||||
delete from ${code}
|
||||
where `id` = <@mapperEl 'id'/>
|
||||
</delete>
|
||||
|
||||
<delete id="deleteByCriteria">
|
||||
delete from ${code}
|
||||
<if test="(@com.jwsaas.utils.OgnlUtils@isEmpty(condition))!=null"><@jspEl 'condition'/></if>
|
||||
</delete>
|
||||
|
||||
<delete id="deleteByProperty">
|
||||
delete from ${code}
|
||||
where `tenantId` = <@mapperEl 'tenantId'/> and <@jspEl 'property'/>=<@mapperEl 'value'/>
|
||||
</delete>
|
||||
|
||||
</mapper>
|
@ -0,0 +1,26 @@
|
||||
package ${basePackage}.service<#if sign != "shared">.${sign}</#if>.impl;
|
||||
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import ${basePackage}.dao.BaseDao;
|
||||
import ${basePackage}.dao<#if sign != "shared">.${sign}</#if>.${scode}Dao;
|
||||
import ${basePackage}.entity<#if sign != "shared">.${sign}</#if>.${scode};
|
||||
import ${basePackage}.service<#if sign != "shared">.${sign}</#if>.${scode}Service;
|
||||
<#if sign != "shared">import com.jwsaas.service.impl.BaseServiceImpl;</#if>
|
||||
|
||||
@Service(${signPackage}+"${scode}ServiceImpl")
|
||||
public class ${scode}ServiceImpl extends BaseServiceImpl<${scode}, String> implements ${scode}Service{
|
||||
|
||||
@Resource(name=${signPackage}+"${scode}DaoImpl")
|
||||
private ${scode}Dao ${scode?uncap_first}Dao;
|
||||
|
||||
@Override
|
||||
public BaseDao<${scode}, String> getBaseDao() {
|
||||
return this.${scode?uncap_first}Dao;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -0,0 +1,11 @@
|
||||
package ${basePackage}.service<#if sign != "shared">.${sign}</#if>;
|
||||
|
||||
import ${basePackage}.entity<#if sign != "shared">.${sign}</#if>.${scode};
|
||||
<#if sign != "shared">import com.jwsaas.service.BaseService;</#if>
|
||||
|
||||
/**
|
||||
* ${name}数据接口
|
||||
*/
|
||||
public interface ${scode}Service extends BaseService<${scode}, String> {
|
||||
|
||||
}
|
@ -0,0 +1,13 @@
|
||||
<#macro mapperEl value>${r"#{"}${value}}</#macro>
|
||||
<#macro jspEl value>${r"${"}${value}}</#macro>
|
||||
<!--服务引用部分开始-->
|
||||
<#list tableList as table>
|
||||
<!-- ${table.name}服务 -->
|
||||
<dubbo:reference id="${table.sign}${table.scode}Service" interface="com.jwsaas.service<#if table.sign != "shared">.${table.sign}</#if>.${table.scode}Service"
|
||||
version="<@jspEl 'reference.version'/>"
|
||||
group="<@jspEl 'reference.group'/>" timeout="<@jspEl 'reference.timeout'/>"
|
||||
retries="<@jspEl 'reference.retries'/>" />
|
||||
|
||||
</#list>
|
||||
|
||||
<!--服务引用部分结束-->
|
@ -0,0 +1,13 @@
|
||||
<#macro mapperEl value>${r"#{"}${value}}</#macro>
|
||||
<#macro jspEl value>${r"${"}${value}}</#macro>
|
||||
<!--服务暴露部分开始-->
|
||||
<#list tableList as table>
|
||||
<!-- ${table.name}服务 -->
|
||||
<dubbo:service interface="com.jwsaas.service<#if table.sign != "shared">.${table.sign}</#if>.${table.scode}Service"
|
||||
ref="${table.sign}${table.scode}ServiceImpl" version="<@jspEl 'service.version'/>"
|
||||
group="<@jspEl 'service.group'/>" timeout="<@jspEl 'service.timeout'/>"
|
||||
retries="<@jspEl 'service.retries'/>" />
|
||||
|
||||
</#list>
|
||||
|
||||
<!--服务暴露部分结束-->
|
@ -0,0 +1,13 @@
|
||||
<#macro mapperEl value>${r"#{"}${value}}</#macro>
|
||||
<#macro jspEl value>${r"${"}${value}}</#macro>
|
||||
<!--服务引用部分开始-->
|
||||
<#list tableList as table>
|
||||
<!-- ${table.name}服务 -->
|
||||
<dubbo:reference id="${table.sign}${table.scode}Service" interface="com.jwsaas.service<#if table.sign != "shared">.${table.sign}</#if>.${table.scode}Service"
|
||||
version="<@jspEl 'reference.version'/>"
|
||||
group="<@jspEl 'reference.group'/>" timeout="<@jspEl 'reference.timeout'/>"
|
||||
retries="<@jspEl 'reference.retries'/>" url="<@jspEl 'reference.url'/>" />
|
||||
|
||||
</#list>
|
||||
|
||||
<!--服务引用部分结束-->
|
Loading…
Reference in New Issue