| | |
| | | package com.zy.asrs.framework.generators.domain; |
| | | |
| | | import com.zy.asrs.framework.common.Cools; |
| | | import com.zy.asrs.framework.generators.CoolGenerator; |
| | | import com.zy.asrs.framework.generators.constant.SqlOsType; |
| | | import com.zy.asrs.framework.generators.utils.GeneratorUtils; |
| | | |
| | | import java.sql.Connection; |
| | | import java.util.ArrayList; |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.regex.Matcher; |
| | | import java.util.regex.Pattern; |
| | | |
| | | /** |
| | | * Created by vincent on 2019-06-18 |
| | | */ |
| | | public class Column { |
| | | |
| | | private String name; // 表字段名 |
| | | private String type; // 类型 |
| | | private String comment; // 备注 |
| | | private String humpName; // 小驼峰 |
| | | private boolean primaryKey; // 唯一主键 |
| | | private boolean mainKey; // 普通主键 |
| | | private boolean notNull; // 非空 |
| | | private boolean major; // 主要 |
| | | private boolean image; // 图片 |
| | | private boolean checkBox; // 复选框 |
| | | private String foreignKey; // 外健实例名(大驼峰,如sys_user ==> User) |
| | | private String foreignKeyMajor; // 外键(小驼峰) |
| | | private List<Map<String, Object>> enums; // 枚举值 |
| | | private Integer length; // 字段长度 |
| | | |
| | | public Column(Connection conn, String name, String type, String comment, boolean primaryKey, boolean mainKey, boolean notNull, Integer length, boolean init, SqlOsType sqlOsType) { |
| | | this.name = name; |
| | | this.type = type; |
| | | this.comment = ""; |
| | | if (!Cools.isEmpty(comment)){ |
| | | // 枚举 |
| | | Pattern pattern1 = Pattern.compile("(.+?)(?=\\{)"); |
| | | Matcher matcher1 = pattern1.matcher(comment); |
| | | // 外键 |
| | | Pattern pattern11 = Pattern.compile("(.+?)(?=\\[)"); |
| | | Matcher matcher11 = pattern11.matcher(comment); |
| | | // 枚举 |
| | | if (matcher1.find()) { |
| | | this.comment = matcher1.group(); |
| | | Pattern pattern2 = Pattern.compile("(?<=\\{)(.+?)(?=})"); |
| | | Matcher matcher2 = pattern2.matcher(comment); |
| | | if (matcher2.find()) { |
| | | String group = matcher2.group(); |
| | | if (!Cools.isEmpty(group)) { |
| | | String[] values = group.split(","); |
| | | this.enums = new ArrayList<>(); |
| | | for (String val : values) { |
| | | Map<String, Object> map = new HashMap<>(); |
| | | String[] split = val.split(":"); |
| | | map.put(split[0], split[1]); |
| | | enums.add(map); |
| | | } |
| | | } |
| | | } |
| | | // 外键 |
| | | } else if (matcher11.find()){ |
| | | this.comment = matcher11.group(); |
| | | Pattern pattern22 = Pattern.compile("(?<=\\[)(.+?)(?=])"); |
| | | Matcher matcher22 = pattern22.matcher(comment); |
| | | if (matcher22.find()) { |
| | | String group = matcher22.group(); |
| | | if (!Cools.isEmpty(group)) { |
| | | this.foreignKey = GeneratorUtils.getNameSpace(group); |
| | | List<Column> foreignColumns = new ArrayList<>(); |
| | | if (init) { |
| | | try { |
| | | switch (sqlOsType) { |
| | | case MYSQL: |
| | | foreignColumns = CoolGenerator.getMysqlColumns(conn, group, false, sqlOsType); |
| | | break; |
| | | case SQL_SERVER: |
| | | foreignColumns = CoolGenerator.getSqlServerColumns(conn, group, false, sqlOsType); |
| | | break; |
| | | default: |
| | | break; |
| | | } |
| | | |
| | | } catch (Exception e){ |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | if (!Cools.isEmpty(foreignColumns)){ |
| | | for (Column column : foreignColumns){ |
| | | if (column.isMajor()){ |
| | | this.foreignKeyMajor = GeneratorUtils.firstCharConvert(column.getHumpName(), false); |
| | | } |
| | | } |
| | | if (Cools.isEmpty(this.foreignKeyMajor)){ |
| | | this.foreignKeyMajor = "Id"; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } else { |
| | | this.comment = comment; |
| | | } |
| | | // 主要字段 |
| | | if (comment.endsWith("(*)")){ |
| | | this.comment = comment.substring(0, comment.length()-3); |
| | | this.major = true; |
| | | } |
| | | // 图片字段 |
| | | if (comment.endsWith("(img)")){ |
| | | this.comment = comment.substring(0, comment.length()-5); |
| | | this.image = true; |
| | | } |
| | | // 复选框 |
| | | if (comment.endsWith("(checkbox)")){ |
| | | this.comment = comment.substring(0, comment.length()-10); |
| | | this.checkBox = true; |
| | | } |
| | | } |
| | | // if (primaryKey || mainKey){ |
| | | // this.primaryKey = true; |
| | | // } else { |
| | | // this.primaryKey = false; |
| | | // } |
| | | this.primaryKey = primaryKey; |
| | | this.mainKey = mainKey; |
| | | this.notNull = notNull; |
| | | this.length = length; |
| | | this.humpName = GeneratorUtils._convert(name); |
| | | } |
| | | |
| | | public String getName() { |
| | | return name; |
| | | } |
| | | |
| | | public void setName(final String name) { |
| | | this.name = name; |
| | | } |
| | | |
| | | public String getType() { |
| | | return type; |
| | | } |
| | | |
| | | public void setType(final String type) { |
| | | this.type = type; |
| | | } |
| | | |
| | | public String getComment() { |
| | | return comment; |
| | | } |
| | | |
| | | public String getWholeComment() { |
| | | if (!Cools.isEmpty(this.enums)){ |
| | | StringBuilder sb = new StringBuilder(" "); |
| | | for (Map<String, Object> val : enums){ |
| | | for (Map.Entry<String, Object> entry : val.entrySet()){ |
| | | sb.append(entry.getKey()) |
| | | .append(": ") |
| | | .append(entry.getValue()) |
| | | .append(" "); |
| | | } |
| | | } |
| | | return comment + sb.toString(); |
| | | } |
| | | return comment; |
| | | } |
| | | |
| | | public void setComment(final String comment) { |
| | | this.comment = comment; |
| | | } |
| | | |
| | | public String getHumpName() { |
| | | return humpName; |
| | | } |
| | | |
| | | // public boolean isPrimaryKey() { |
| | | // return primaryKey || mainKey; |
| | | // } |
| | | |
| | | public boolean isPrimaryKey() { |
| | | return primaryKey; |
| | | } |
| | | |
| | | public boolean isOnly(){ |
| | | return primaryKey; |
| | | } |
| | | |
| | | public void setPrimaryKey(boolean primaryKey) { |
| | | this.primaryKey = primaryKey; |
| | | } |
| | | |
| | | public boolean isNotNull() { |
| | | return notNull; |
| | | } |
| | | |
| | | public void setNotNull(final boolean notNull) { |
| | | this.notNull = notNull; |
| | | } |
| | | |
| | | public String getForeignKey() { |
| | | return foreignKey; |
| | | } |
| | | |
| | | public String getForeignKey$() { |
| | | if (this.foreignKey != null) { |
| | | return this.foreignKey.substring(0, 1).toLowerCase() + this.foreignKey.substring(1); |
| | | } |
| | | return foreignKey; |
| | | } |
| | | |
| | | public void setForeignKey(final String foreignKey) { |
| | | this.foreignKey = foreignKey; |
| | | } |
| | | |
| | | public String getForeignKeyMajor() { |
| | | return foreignKeyMajor; |
| | | } |
| | | |
| | | public void setForeignKeyMajor(final String foreignKeyMajor) { |
| | | this.foreignKeyMajor = foreignKeyMajor; |
| | | } |
| | | |
| | | public List<Map<String, Object>> getEnums() { |
| | | return enums; |
| | | } |
| | | |
| | | public void setEnums(List<Map<String, Object>> enums) { |
| | | this.enums = enums; |
| | | } |
| | | |
| | | public Integer getLength() { |
| | | return length; |
| | | } |
| | | |
| | | public void setLength(final Integer length) { |
| | | this.length = length; |
| | | } |
| | | |
| | | public boolean isMajor() { |
| | | return major; |
| | | } |
| | | |
| | | public void setMajor(final boolean major) { |
| | | this.major = major; |
| | | } |
| | | |
| | | public boolean isImage() { |
| | | return image; |
| | | } |
| | | |
| | | public void setImage(final boolean image) { |
| | | this.image = image; |
| | | } |
| | | |
| | | public boolean isCheckBox() { |
| | | return checkBox; |
| | | } |
| | | |
| | | public void setCheckBox(boolean checkBox) { |
| | | this.checkBox = checkBox; |
| | | } |
| | | |
| | | public boolean isMainKey() { |
| | | return mainKey; |
| | | } |
| | | |
| | | public void setMainKey(boolean mainKey) { |
| | | this.mainKey = mainKey; |
| | | } |
| | | |
| | | @Override |
| | | public String toString() { |
| | | return "Column{" + |
| | | "name='" + name + '\'' + |
| | | ", type='" + type + '\'' + |
| | | ", comment='" + comment + '\'' + |
| | | ", humpName='" + humpName + '\'' + |
| | | ", primaryKey=" + primaryKey + |
| | | ", notNull=" + notNull + |
| | | ", major=" + major + |
| | | ", image=" + image + |
| | | ", foreignKey='" + foreignKey + '\'' + |
| | | ", foreignKeyMajor='" + foreignKeyMajor + '\'' + |
| | | ", enums=" + enums + |
| | | ", length=" + length + |
| | | '}'; |
| | | } |
| | | |
| | | } |
| | | package com.zy.asrs.framework.generators.domain;
|
| | |
|
| | | import com.zy.asrs.framework.common.Cools;
|
| | | import com.zy.asrs.framework.generators.CoolGenerator;
|
| | | import com.zy.asrs.framework.generators.constant.SqlOsType;
|
| | | import com.zy.asrs.framework.generators.utils.GeneratorUtils;
|
| | |
|
| | | import java.sql.Connection;
|
| | | import java.util.ArrayList;
|
| | | import java.util.HashMap;
|
| | | import java.util.List;
|
| | | import java.util.Map;
|
| | | import java.util.regex.Matcher;
|
| | | import java.util.regex.Pattern;
|
| | |
|
| | | /**
|
| | | * Created by vincent on 2019-06-18
|
| | | */
|
| | | public class Column {
|
| | |
|
| | | private String name; // 表字段名
|
| | | private String type; // 类型
|
| | | private String comment; // 备注
|
| | | private String humpName; // 小驼峰
|
| | | private boolean primaryKey; // 唯一主键
|
| | | private boolean mainKey; // 普通主键
|
| | | private boolean notNull; // 非空
|
| | | private boolean major; // 主要
|
| | | private boolean image; // 图片
|
| | | private boolean checkBox; // 复选框
|
| | | private String foreignKey; // 外健实例名(大驼峰,如sys_user ==> User)
|
| | | private String foreignKeyMajor; // 外键(小驼峰)
|
| | | private List<Map<String, Object>> enums; // 枚举值
|
| | | private Integer length; // 字段长度
|
| | |
|
| | | public Column(Connection conn, String name, String type, String comment, boolean primaryKey, boolean mainKey, boolean notNull, Integer length, boolean init, SqlOsType sqlOsType) {
|
| | | this.name = name;
|
| | | this.type = type;
|
| | | this.comment = "";
|
| | | if (!Cools.isEmpty(comment)){
|
| | | // 枚举
|
| | | Pattern pattern1 = Pattern.compile("(.+?)(?=\\{)");
|
| | | Matcher matcher1 = pattern1.matcher(comment);
|
| | | // 外键
|
| | | Pattern pattern11 = Pattern.compile("(.+?)(?=\\[)");
|
| | | Matcher matcher11 = pattern11.matcher(comment);
|
| | | // 枚举
|
| | | if (matcher1.find()) {
|
| | | this.comment = matcher1.group();
|
| | | Pattern pattern2 = Pattern.compile("(?<=\\{)(.+?)(?=})");
|
| | | Matcher matcher2 = pattern2.matcher(comment);
|
| | | if (matcher2.find()) {
|
| | | String group = matcher2.group();
|
| | | if (!Cools.isEmpty(group)) {
|
| | | String[] values = group.split(",");
|
| | | this.enums = new ArrayList<>();
|
| | | for (String val : values) {
|
| | | Map<String, Object> map = new HashMap<>();
|
| | | String[] split = val.split(":");
|
| | | map.put(split[0], split[1]);
|
| | | enums.add(map);
|
| | | }
|
| | | }
|
| | | }
|
| | | // 外键
|
| | | } else if (matcher11.find()){
|
| | | this.comment = matcher11.group();
|
| | | Pattern pattern22 = Pattern.compile("(?<=\\[)(.+?)(?=])");
|
| | | Matcher matcher22 = pattern22.matcher(comment);
|
| | | if (matcher22.find()) {
|
| | | String group = matcher22.group();
|
| | | if (!Cools.isEmpty(group)) {
|
| | | this.foreignKey = GeneratorUtils.getNameSpace(group);
|
| | | List<Column> foreignColumns = new ArrayList<>();
|
| | | if (init) {
|
| | | try {
|
| | | switch (sqlOsType) {
|
| | | case MYSQL:
|
| | | foreignColumns = CoolGenerator.getMysqlColumns(conn, group, false, sqlOsType);
|
| | | break;
|
| | | case SQL_SERVER:
|
| | | foreignColumns = CoolGenerator.getSqlServerColumns(conn, group, false, sqlOsType);
|
| | | break;
|
| | | default:
|
| | | break;
|
| | | }
|
| | |
|
| | | } catch (Exception e){
|
| | | e.printStackTrace();
|
| | | }
|
| | | }
|
| | | if (!Cools.isEmpty(foreignColumns)){
|
| | | for (Column column : foreignColumns){
|
| | | if (column.isMajor()){
|
| | | this.foreignKeyMajor = GeneratorUtils.firstCharConvert(column.getHumpName(), false);
|
| | | }
|
| | | }
|
| | | if (Cools.isEmpty(this.foreignKeyMajor)){
|
| | | this.foreignKeyMajor = "Id";
|
| | | }
|
| | | }
|
| | | }
|
| | | }
|
| | | } else {
|
| | | this.comment = comment;
|
| | | }
|
| | | // 主要字段
|
| | | if (comment.endsWith("(*)")){
|
| | | this.comment = comment.substring(0, comment.length()-3);
|
| | | this.major = true;
|
| | | }
|
| | | // 图片字段
|
| | | if (comment.endsWith("(img)")){
|
| | | this.comment = comment.substring(0, comment.length()-5);
|
| | | this.image = true;
|
| | | }
|
| | | // 复选框
|
| | | if (comment.endsWith("(checkbox)")){
|
| | | this.comment = comment.substring(0, comment.length()-10);
|
| | | this.checkBox = true;
|
| | | }
|
| | | }
|
| | | // if (primaryKey || mainKey){
|
| | | // this.primaryKey = true;
|
| | | // } else {
|
| | | // this.primaryKey = false;
|
| | | // }
|
| | | this.primaryKey = primaryKey;
|
| | | this.mainKey = mainKey;
|
| | | this.notNull = notNull;
|
| | | this.length = length;
|
| | | this.humpName = GeneratorUtils._convert(name);
|
| | | }
|
| | |
|
| | | public String getName() {
|
| | | return name;
|
| | | }
|
| | |
|
| | | public void setName(final String name) {
|
| | | this.name = name;
|
| | | }
|
| | |
|
| | | public String getType() {
|
| | | return type;
|
| | | }
|
| | |
|
| | | public void setType(final String type) {
|
| | | this.type = type;
|
| | | }
|
| | |
|
| | | public String getComment() {
|
| | | return comment;
|
| | | }
|
| | |
|
| | | public String getWholeComment() {
|
| | | if (!Cools.isEmpty(this.enums)){
|
| | | StringBuilder sb = new StringBuilder(" ");
|
| | | for (Map<String, Object> val : enums){
|
| | | for (Map.Entry<String, Object> entry : val.entrySet()){
|
| | | sb.append(entry.getKey())
|
| | | .append(": ")
|
| | | .append(entry.getValue())
|
| | | .append(" ");
|
| | | }
|
| | | }
|
| | | return comment + sb.toString();
|
| | | }
|
| | | return comment;
|
| | | }
|
| | |
|
| | | public void setComment(final String comment) {
|
| | | this.comment = comment;
|
| | | }
|
| | |
|
| | | public String getHumpName() {
|
| | | return humpName;
|
| | | }
|
| | |
|
| | | // public boolean isPrimaryKey() {
|
| | | // return primaryKey || mainKey;
|
| | | // }
|
| | |
|
| | | public boolean isPrimaryKey() {
|
| | | return primaryKey;
|
| | | }
|
| | |
|
| | | public boolean isOnly(){
|
| | | return primaryKey;
|
| | | }
|
| | |
|
| | | public void setPrimaryKey(boolean primaryKey) {
|
| | | this.primaryKey = primaryKey;
|
| | | }
|
| | |
|
| | | public boolean isNotNull() {
|
| | | return notNull;
|
| | | }
|
| | |
|
| | | public void setNotNull(final boolean notNull) {
|
| | | this.notNull = notNull;
|
| | | }
|
| | |
|
| | | public String getForeignKey() {
|
| | | return foreignKey;
|
| | | }
|
| | |
|
| | | public String getForeignKey$() {
|
| | | if (this.foreignKey != null) {
|
| | | return this.foreignKey.substring(0, 1).toLowerCase() + this.foreignKey.substring(1);
|
| | | }
|
| | | return foreignKey;
|
| | | }
|
| | |
|
| | | public void setForeignKey(final String foreignKey) {
|
| | | this.foreignKey = foreignKey;
|
| | | }
|
| | |
|
| | | public String getForeignKeyMajor() {
|
| | | return foreignKeyMajor;
|
| | | }
|
| | |
|
| | | public void setForeignKeyMajor(final String foreignKeyMajor) {
|
| | | this.foreignKeyMajor = foreignKeyMajor;
|
| | | }
|
| | |
|
| | | public List<Map<String, Object>> getEnums() {
|
| | | return enums;
|
| | | }
|
| | |
|
| | | public void setEnums(List<Map<String, Object>> enums) {
|
| | | this.enums = enums;
|
| | | }
|
| | |
|
| | | public Integer getLength() {
|
| | | return length;
|
| | | }
|
| | |
|
| | | public void setLength(final Integer length) {
|
| | | this.length = length;
|
| | | }
|
| | |
|
| | | public boolean isMajor() {
|
| | | return major;
|
| | | }
|
| | |
|
| | | public void setMajor(final boolean major) {
|
| | | this.major = major;
|
| | | }
|
| | |
|
| | | public boolean isImage() {
|
| | | return image;
|
| | | }
|
| | |
|
| | | public void setImage(final boolean image) {
|
| | | this.image = image;
|
| | | }
|
| | |
|
| | | public boolean isCheckBox() {
|
| | | return checkBox;
|
| | | }
|
| | |
|
| | | public void setCheckBox(boolean checkBox) {
|
| | | this.checkBox = checkBox;
|
| | | }
|
| | |
|
| | | public boolean isMainKey() {
|
| | | return mainKey;
|
| | | }
|
| | |
|
| | | public void setMainKey(boolean mainKey) {
|
| | | this.mainKey = mainKey;
|
| | | }
|
| | |
|
| | | @Override
|
| | | public String toString() {
|
| | | return "Column{" +
|
| | | "name='" + name + '\'' +
|
| | | ", type='" + type + '\'' +
|
| | | ", comment='" + comment + '\'' +
|
| | | ", humpName='" + humpName + '\'' +
|
| | | ", primaryKey=" + primaryKey +
|
| | | ", notNull=" + notNull +
|
| | | ", major=" + major +
|
| | | ", image=" + image +
|
| | | ", foreignKey='" + foreignKey + '\'' +
|
| | | ", foreignKeyMajor='" + foreignKeyMajor + '\'' +
|
| | | ", enums=" + enums +
|
| | | ", length=" + length +
|
| | | '}';
|
| | | }
|
| | |
|
| | | }
|