package com.brframework.generate.template; import com.brframework.generate.BaseUtil; import com.brframework.generate.Constant; import com.brframework.generate.base.JavaFile; import java.util.ArrayList; import java.util.LinkedList; import java.util.List; import java.util.Map; import static com.brframework.generate.BaseUtil.generateField; /** * @Author: ljr * @Date: 2019/8/14 15:59 * @Description: */ public class EntityClassFile extends JavaFile { public EntityClassFile(String route, String packageDir, String entity, String function, Map notes, String abbreviation, String content) { fileDir = route + "/" + Constant.PACKAGE_ENTITY + "/" + function; packageDir = BaseUtil.toPackage(packageDir); String className = BaseUtil.getClassWithoutSuffix(entity); fileName = className + Constant.SUFFIX_CLASS_TYPE; filePackageName = packageDir + "." + Constant.PACKAGE_ENTITY + "." + function; type = Constant.CLASS_TYPE; name = className; List imports = getImports(); List classAnnotations = getClassAnnotations(entity, abbreviation); List extendss = getExtendss(); List implementss = getImplementss(); List fields = getFields(content); List methods = getMethods(); super.init(imports, notes, classAnnotations, extendss, implementss, fields, methods); } public List getImports(){ List imports = new LinkedList<>(); imports.add("com.alibaba.fastjson.annotation.JSONField"); imports.add("io.swagger.annotations.ApiModelProperty"); imports.add("lombok.AllArgsConstructor"); imports.add("lombok.Builder"); imports.add("lombok.Data"); imports.add("lombok.NoArgsConstructor"); imports.add("javax.persistence.*"); imports.add("java.time.LocalDateTime"); return imports; } public List getClassAnnotations(String entity, String abbreviation){ List classAnnotations = new LinkedList<>(); classAnnotations.add("Entity"); classAnnotations.add("Data"); classAnnotations.add("NoArgsConstructor"); classAnnotations.add("AllArgsConstructor"); classAnnotations.add("Table(name=\"" + abbreviation + "_" + entity.replaceAll("[A-Z]", "_$0").toLowerCase() + "\")"); classAnnotations.add("Builder"); return classAnnotations; } public List getExtendss(){ List extendss = new LinkedList<>(); return extendss; } public List getImplementss(){ List implementss = new LinkedList<>(); return implementss; } public List getFields(String content){ List fields = new LinkedList<>(); //设置id的注解 List idFieldAnnotations = new ArrayList<>(); idFieldAnnotations.add("Id"); idFieldAnnotations.add("GeneratedValue(strategy = GenerationType.IDENTITY)"); idFieldAnnotations.add("ApiModelProperty(value = \"id\", required = true, example = \"1\")"); //设置createDate的注解 List createDateFieldAnnotations = new ArrayList<>(); createDateFieldAnnotations.add("JSONField(format = \"yyyy-MM-dd HH:mm:ss\")"); createDateFieldAnnotations.add("ApiModelProperty(value = \"创建时间\", required = true, example = \"2018-03-12 21:32:33\")"); String fmodifier = "private"; fields.add(BaseUtil.generateField(idFieldAnnotations, fmodifier , "Long", "id", null)); fields.add(BaseUtil.generateField(createDateFieldAnnotations, fmodifier , "LocalDateTime", "createDate", null)); fields.addAll(contentHandle(content)); return fields; } private List contentHandle(String content){ List fields = new LinkedList<>(); String[] split = content.split("\n"); List descriptions = new ArrayList<>(); List fieldTypes = new ArrayList<>(); for (String info : split) { if (info.contains("/")) { descriptions.add(info.substring(info.lastIndexOf("/") + 1)); }else if (info.contains(":")){ fieldTypes.add(info); } if (info.contains(":")) { } } for (int i = 0; i < fieldTypes.size(); i++) { String fieldType = fieldTypes.get(i); String[] fieldInfo = fieldType.split(":"); List fieldAnnotations = new ArrayList<>(); String type = fieldInfo[1].trim(); String fieldName = fieldInfo[0].trim(); if (fieldName.equals("id") || fieldName.equals("createDate")) { continue; } fieldAnnotations.add("ApiModelProperty(value = \"" + descriptions.get(i) + "\", required = true, example = \"\")"); fields.add(BaseUtil.generateField(fieldAnnotations, "private" , type, fieldName, null)); } return fields; } public List getMethods(){ List methods = new LinkedList<>(); //methods,lombok不需要方法 return methods; } }