package org.yeshi.utils.generater.entity;
|
|
import org.springframework.data.annotation.Id;
|
import org.springframework.data.annotation.Transient;
|
|
import java.lang.annotation.Annotation;
|
import java.lang.reflect.Field;
|
import java.util.ArrayList;
|
import java.util.List;
|
|
public class MongoDBDaoData extends BaseData {
|
|
private String baseDaoClass;
|
private String daoName;
|
private String baseDaoClassName;
|
private String entityClassName;
|
|
private ColumnData identityColumn;
|
private List<ColumnData> columnDataList;
|
|
public static class Builder {
|
|
private Class baseDaoClass;
|
|
private Class entityClass;
|
|
private String daoPackageName;
|
|
private String daoName;
|
|
|
public Builder setBaseDaoClass(Class clazz) {
|
this.baseDaoClass = clazz;
|
return this;
|
}
|
|
public Builder setEntityClass(Class clazz) {
|
this.entityClass = clazz;
|
return this;
|
}
|
|
public Builder setDaoPackageName(String daoPackageName) {
|
this.daoPackageName = daoPackageName;
|
return this;
|
}
|
|
public Builder setDaoName(String daoName) {
|
this.daoName = daoName;
|
return this;
|
}
|
|
|
public MongoDBDaoData create() {
|
|
if (daoName == null) {
|
daoName = entityClass.getSimpleName() + "Dao";
|
}
|
|
Field[] fields = entityClass.getDeclaredFields();
|
String identityColumnName = null;
|
List<String> columNamelist = new ArrayList<>();
|
for (Field fd : fields) {
|
//private/public 非final,static属性才会参与解析
|
if (fd.getModifiers() != 1 && fd.getModifiers() != 2) {
|
continue;
|
}
|
|
String columName = fd.getName();
|
Annotation[] as = fd.getAnnotations();
|
|
|
if (columName != null) {
|
for (Annotation a : as) {
|
//主键
|
if (a instanceof Id) {
|
identityColumnName = new String(columName);
|
columName = null;
|
break;
|
}
|
}
|
}
|
|
for (Annotation a : as) {
|
//不参与解析
|
if (a instanceof Transient || a instanceof java.beans.Transient) {
|
columName = null;
|
break;
|
}
|
}
|
|
|
if (columName != null) {
|
columNamelist.add(columName);
|
}
|
}
|
|
List<ColumnData> columnDataList = new ArrayList<>();
|
for (String columnName : columNamelist) {
|
//更新时间不参与更新
|
if (!"updateTime".equalsIgnoreCase(columnName)) {
|
columnDataList.add(new ColumnData(columnName));
|
}
|
}
|
|
MongoDBDaoData data = new MongoDBDaoData();
|
data.setBaseDaoClass(baseDaoClass.getName());
|
data.setBaseDaoClassName(baseDaoClass.getSimpleName());
|
data.setColumnDataList(columnDataList);
|
data.setDaoName(daoName);
|
data.setEntityClass(entityClass.getName());
|
data.setEntityClassName(entityClass.getSimpleName());
|
data.setIdentityColumn(new ColumnData(identityColumnName));
|
data.setPackageName(daoPackageName);
|
|
|
return data;
|
}
|
}
|
|
|
public String getBaseDaoClass() {
|
return baseDaoClass;
|
}
|
|
public void setBaseDaoClass(String baseDaoClass) {
|
this.baseDaoClass = baseDaoClass;
|
}
|
|
public String getDaoName() {
|
return daoName;
|
}
|
|
public void setDaoName(String daoName) {
|
this.daoName = daoName;
|
}
|
|
public String getBaseDaoClassName() {
|
return baseDaoClassName;
|
}
|
|
public void setBaseDaoClassName(String baseDaoClassName) {
|
this.baseDaoClassName = baseDaoClassName;
|
}
|
|
public String getEntityClassName() {
|
return entityClassName;
|
}
|
|
public void setEntityClassName(String entityClassName) {
|
this.entityClassName = entityClassName;
|
}
|
|
|
public ColumnData getIdentityColumn() {
|
return identityColumn;
|
}
|
|
public void setIdentityColumn(ColumnData identityColumn) {
|
this.identityColumn = identityColumn;
|
}
|
|
|
public List<ColumnData> getColumnDataList() {
|
return columnDataList;
|
}
|
|
public void setColumnDataList(List<ColumnData> columnDataList) {
|
this.columnDataList = columnDataList;
|
}
|
|
|
}
|