skyouc
2024-12-21 c635d78b479510ebe2556a420948effcd30a0731
zy-asrs-framework/src/main/java/com/zy/asrs/framework/generators/domain/Column.java
@@ -1,292 +1,292 @@
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 +
                '}';
    }
}