package org.yeshi.utils.generater.vo.admin.controller;
|
|
import org.springframework.data.annotation.Transient;
|
import org.yeshi.utils.generater.entity.ClassInfo;
|
import org.yeshi.utils.generater.entity.ColumnData;
|
|
import java.lang.annotation.Annotation;
|
import java.lang.reflect.Field;
|
import java.util.ArrayList;
|
import java.util.List;
|
|
/**
|
* @author hxh
|
* @title: AdminVO
|
* @description: TODO
|
* @date 2022/4/7 18:24
|
*/
|
public class AdminVOVO {
|
|
private String name;
|
private String packageName;
|
private ClassInfo entity;
|
private List<ColumnData> columns;
|
|
public static class Builder {
|
private Class entity;
|
private String packageName;
|
|
public Builder setEntity(Class entity) {
|
this.entity = entity;
|
return this;
|
}
|
|
public Builder setPackageName(String packageName) {
|
this.packageName = packageName;
|
return this;
|
}
|
|
public AdminVOVO build() throws Exception {
|
if (entity == null) {
|
throw new Exception("entity不能为空");
|
}
|
if (packageName == null) {
|
throw new Exception("packageName不能为空");
|
}
|
AdminVOVO vo = new AdminVOVO();
|
vo.setEntity(ClassInfo.create(entity));
|
vo.setName(entity.getSimpleName() + "AdminVO");
|
vo.setPackageName(packageName);
|
List<ColumnData> columnList = new ArrayList<>();
|
Field[] fields = entity.getDeclaredFields();
|
for (Field fd : fields) {
|
//private/public 非final,static属性才会参与解析
|
if (fd.getModifiers() != 1 && fd.getModifiers() != 2) {
|
continue;
|
}
|
boolean valid = true;
|
|
Annotation[] as = fd.getAnnotations();
|
for (Annotation a : as) {
|
//不参与解析
|
if (a instanceof Transient || a instanceof java.beans.Transient) {
|
valid = false;
|
break;
|
}
|
}
|
if (!valid) {
|
continue;
|
}
|
|
String property = fd.getName();
|
|
if(property.equalsIgnoreCase("createTime")||property.equalsIgnoreCase("updateTime")){
|
continue;
|
}
|
|
String type = fd.getType().getSimpleName();
|
ColumnData columnData = new ColumnData(property, type);
|
columnList.add(columnData);
|
}
|
vo.setColumns(columnList);
|
return vo;
|
}
|
|
}
|
|
|
public String getName() {
|
return name;
|
}
|
|
public void setName(String name) {
|
this.name = name;
|
}
|
|
public String getPackageName() {
|
return packageName;
|
}
|
|
public void setPackageName(String packageName) {
|
this.packageName = packageName;
|
}
|
|
public ClassInfo getEntity() {
|
return entity;
|
}
|
|
public void setEntity(ClassInfo entity) {
|
this.entity = entity;
|
}
|
|
public List<ColumnData> getColumns() {
|
return columns;
|
}
|
|
public void setColumns(List<ColumnData> columns) {
|
this.columns = columns;
|
}
|
}
|