package xyz.wbsite.dbtool.javafx.tool; import java.io.*; import java.util.*; import java.util.regex.Matcher; import java.util.regex.Pattern; public class EntityReader { private File javaClass; private String packageName; private String domainName; private String moduleName; private List annotationList; private List importList; private Set deptReqList; private Set deptEntList; private String className; private String fatherName; private List body; private boolean hasList = false; private String findOrSearchflag = "0"; private String Tclass = null; public EntityReader(File javaClass) throws IOException { this.javaClass = javaClass; importList = new ArrayList<>(); annotationList = new ArrayList<>(); deptReqList = new HashSet<>(); deptEntList = new HashSet<>(); domainName = ""; read(); } private void read() throws IOException { BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(new FileInputStream(javaClass), "utf-8")); int step = 1;//1-读取package,2-读取import,3-读取类注释,4-读取类名、父类,5-读取类体 String line = null; StringBuffer zs = new StringBuffer(); StringBuffer sb = new StringBuffer(); while ((line = bufferedReader.readLine()) != null) { if (line.matches("\\s*package\\s(.*);")) { { Pattern compile = Pattern.compile("\\s*package\\s(.*);"); Matcher matcher = compile.matcher(line); if (matcher.find()) { packageName = matcher.group(1); } } { Pattern compile = Pattern.compile("\\s*package\\s(.*)\\.module\\.(.*).ent;"); Matcher matcher = compile.matcher(line); if (matcher.find()) { domainName = matcher.group(1); moduleName = matcher.group(2); } } continue; } if (line.matches("import\\s.*")) { if (line.contains(".ent.")) { Pattern compile = Pattern.compile("import\\s+(.*\\.ent\\..*);"); Matcher matcher = compile.matcher(line); if (matcher.find()) { String group = matcher.group(1); deptEntList.add(group); } } else if (line.contains(".req.")) { Pattern compile = Pattern.compile("import\\s+(.*\\.req\\..*);"); Matcher matcher = compile.matcher(line); if (matcher.find()) { String group = matcher.group(1); deptReqList.add(group); } } else if (!line.contains("frame")) { importList.add(line); } continue; } if (line.contains("/**") || line.contains("*") || line.contains("*/")) { if (zs != null) { zs.append(line + "\n"); annotationList.add(line); if (line.contains("*/")) { zs = null; } } } if (line.contains("class")) { line = line.replaceAll("\\{", " { "); line = line.replaceAll("}", " } "); line = line.replaceAll("\\s+", " "); String[] split = line.split("\\s"); for (int i = 0; i < split.length; i++) { if ("class".equals(split[i])) { className = split[i + 1]; } if ("extends".equals(split[i])) { fatherName = split[i + 1]; if (fatherName.contains("FindResponse") || fatherName.contains("GetAllResponse")) { hasList = true; Pattern pattern = Pattern.compile("<(.*?)>"); Matcher matcher = pattern.matcher(fatherName); if (matcher.find()) { String group = matcher.group(1); Tclass = group; } } if (fatherName.contains("FindRequest")) { findOrSearchflag = "1"; } else if (fatherName.contains("SearchRequest")) { findOrSearchflag = "2"; } } } } sb.append(line + "\n"); } body = new ArrayList<>(Arrays.asList(sb.substring(sb.indexOf("{")).split("\n"))); for (int i = 0; i < body.size(); i++) { if (body.get(i).contains("{")) { body.set(i, body.get(i).replaceAll("\\{", "")); String s = body.get(i); if (s.length() <= 1) { body.remove(i); } break; } } Iterator iterator = body.iterator(); while (iterator.hasNext()) { String next = iterator.next(); if (next.contains("@ColumnName")) { iterator.remove(); } if (next.contains("@ColumnDescription")) { iterator.remove(); } } for (int i = body.size() - 1; i >= 0; i--) { if (body.get(i).contains("}")) { body.set(i, body.get(i).replaceAll("}", "")); break; } } if (body.size() > 1 && "".equals(body.get(0))) { body.remove(0); } if (body.size() > 1 && "".equals(body.get(body.size() - 1))) { body.remove(body.size() - 1); } bufferedReader.close(); } public String getPackageName() { return packageName; } public void setPackageName(String packageName) { this.packageName = packageName; } public String getDomainName() { return domainName; } public void setDomainName(String domainName) { this.domainName = domainName; } public String getModuleName() { return moduleName; } public void setModuleName(String moduleName) { this.moduleName = moduleName; } public List getAnnotationList() { return annotationList; } public void setAnnotationList(List annotationList) { this.annotationList = annotationList; } public List getImportList() { return importList; } public void setImportList(List importList) { this.importList = importList; } public String getClassName() { return className; } public void setClassName(String className) { this.className = className; } public String getFatherName() { return fatherName; } public void setFatherName(String fatherName) { this.fatherName = fatherName; } public List getBody() { return body; } public void setBody(List body) { this.body = body; } public File getJavaClass() { return javaClass; } public void setJavaClass(File javaClass) { this.javaClass = javaClass; } public boolean isHasList() { return hasList; } public void setHasList(boolean hasList) { this.hasList = hasList; } public String getTclass() { return Tclass; } public String getFindOrSearchflag() { return findOrSearchflag; } public void setFindOrSearchflag(String findOrSearchflag) { this.findOrSearchflag = findOrSearchflag; } public void setTclass(String tclass) { Tclass = tclass; } public Set getDeptReqList() { return deptReqList; } public void setDeptReqList(Set deptReqList) { this.deptReqList = deptReqList; } public Set getDeptEntList() { return deptEntList; } public void setDeptEntList(Set deptEntList) { this.deptEntList = deptEntList; } public static void main(String[] args) throws IOException { EntityReader javaClassReader = new EntityReader(new File("D:\\wangbing\\Project\\dbtool\\target\\project\\EXAMPLE-WEB\\src\\main\\java\\com\\example\\module\\system\\rsp\\DictFindResponse.java")); System.out.println(); } }