add dict model

This commit is contained in:
oppofind 2019-10-31 23:25:38 +08:00
parent e9b66b13e4
commit b6a82bbf6c
5 changed files with 103 additions and 22 deletions

View File

@ -87,7 +87,7 @@ public class ApiConfig {
/**
* api data dictionary
*/
private List<ApiDataDictionary> dataDictionaries;
private List<ApiDataDictConfig> dataDictConfigs;
public String getServerUrl() {
@ -196,11 +196,13 @@ public class ApiConfig {
this.adoc = adoc;
}
public List<ApiDataDictionary> getDataDictionaries() {
return dataDictionaries;
public List<ApiDataDictConfig> getDataDictConfigs() {
return dataDictConfigs;
}
public void setDataDictionaries(ApiDataDictionary... dataDictionary) {
this.dataDictionaries = CollectionUtil.asList(dataDictionary);
public void setDataDictConfigs(ApiDataDictConfig... dataDictConfigs) {
this.dataDictConfigs = CollectionUtil.asList(dataDictConfigs);
}
}

View File

@ -3,7 +3,7 @@ package com.power.doc.model;
/**
* @author yu 2019/10/31.
*/
public class ApiDataDictionary {
public class ApiDataDictConfig {
/**
* Dictionary
@ -15,6 +15,11 @@ public class ApiDataDictionary {
*/
private Class enumClass;
/**
* enum class name
*/
private String enumClassName;
/**
* value field
*/
@ -26,15 +31,15 @@ public class ApiDataDictionary {
private String descField;
public static ApiDataDictionary dict() {
return new ApiDataDictionary();
public static ApiDataDictConfig dict() {
return new ApiDataDictConfig();
}
public String getTitle() {
return title;
}
public ApiDataDictionary setTitle(String title) {
public ApiDataDictConfig setTitle(String title) {
this.title = title;
return this;
}
@ -43,7 +48,7 @@ public class ApiDataDictionary {
return enumClass;
}
public ApiDataDictionary setEnumClass(Class enumClass) {
public ApiDataDictConfig setEnumClass(Class enumClass) {
this.enumClass = enumClass;
return this;
}
@ -52,7 +57,7 @@ public class ApiDataDictionary {
return valueField;
}
public ApiDataDictionary setValueField(String valueField) {
public ApiDataDictConfig setValueField(String valueField) {
this.valueField = valueField;
return this;
}
@ -61,8 +66,17 @@ public class ApiDataDictionary {
return descField;
}
public ApiDataDictionary setDescField(String descField) {
public ApiDataDictConfig setDescField(String descField) {
this.descField = descField;
return this;
}
public String getEnumClassName() {
return enumClassName;
}
public ApiDataDictConfig setEnumClassName(String enumClassName) {
this.enumClassName = enumClassName;
return this;
}
}

View File

@ -0,0 +1,27 @@
package com.power.doc.model;
import lombok.Data;
import java.util.List;
/**
* @author yu 2019/10/31.
*/
@Data
public class ApiDocDict {
/**
* order
*/
private int order;
/**
* dict title
*/
private String title;
/**
* data dict
*/
private List<DataDict> dataDictList;
}

View File

@ -0,0 +1,20 @@
package com.power.doc.model;
import lombok.Data;
/**
* @author yu 2019/10/31.
*/
@Data
public class DataDict {
/**
* dict value
*/
private String value;
/**
* dict desc
*/
private String desc;
}

View File

@ -3,16 +3,14 @@ package com.power.doc;
import com.power.common.util.DateTimeUtil;
import com.power.common.util.StringUtil;
import com.power.doc.enums.OrderEnum;
import com.power.doc.model.ApiConfig;
import com.power.doc.model.ApiDataDictionary;
import com.power.doc.model.RevisionLog;
import com.power.doc.model.SourceCodePath;
import com.power.doc.model.*;
import org.junit.Test;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
/**
* Description:
@ -54,8 +52,8 @@ public class ApiDocTest {
//SourcePath.path().setPath("F:\\Personal\\project\\smart\\src\\main\\java")
//SourcePath.path().setDesc("加载项目外代码").setPath("E:\\ApplicationPower\\ApplicationPower\\Common-util\\src\\main\\java")
);
config.setDataDictionaries(
ApiDataDictionary.dict().setTitle("订单字典").setEnumClass(OrderEnum.class).setValueField("code").setDescField("desc")
config.setDataDictConfigs(
ApiDataDictConfig.dict().setTitle("订单字典").setEnumClass(OrderEnum.class).setValueField("code").setDescField("desc")
);
//设置请求头如果没有请求头可以不用设置
/* config.setRequestHeaders(
@ -78,14 +76,28 @@ public class ApiDocTest {
RevisionLog.getLog().setRevisionTime("2018/12/16").setAuthor("chen2").setRemarks("测试2").setStatus("修改").setVersion("V2.0")
);
List<ApiDataDictionary> apiDataDictionaryList = config.getDataDictionaries();
List<ApiDataDictConfig> apiDataDictionaryList = config.getDataDictConfigs();
try {
for (ApiDataDictionary apiDataDictionary : apiDataDictionaryList) {
List<ApiDocDict> apiDocDictList = new ArrayList<>();//模板中遍历这个字典表生成字典文档
int order = 0;
for (ApiDataDictConfig apiDataDictionary : apiDataDictionaryList) {
System.out.println("dictionary" + apiDataDictionary.getTitle());
order++;
ApiDocDict apiDocDict = new ApiDocDict();
apiDocDict.setOrder(order);//设置方便在文档中的小结顺序
apiDocDict.setTitle(apiDataDictionary.getTitle());
Class<?> clzz = apiDataDictionary.getEnumClass();
if (Objects.isNull(clzz)) {
if (StringUtil.isEmpty(apiDataDictionary.getEnumClassName())) {
throw new RuntimeException(" enum class name can't be null.");
}
//如果没有设置class那么检查是否设置了字符串类型的class name
clzz = Class.forName(apiDataDictionary.getEnumClassName());
}
if (!clzz.isEnum()) {
throw new RuntimeException(clzz.getCanonicalName() + " is not an enum class.");
}
List<DataDict> dataDictList = new ArrayList<>();
Object[] objects = clzz.getEnumConstants();
String valueMethodName = "get" + StringUtil.firstToUpperCase(apiDataDictionary.getValueField());
String descMethodName = "get" + StringUtil.firstToUpperCase(apiDataDictionary.getDescField());
@ -94,11 +106,17 @@ public class ApiDocTest {
for (Object object : objects) {
Object val = valueMethod.invoke(object);
Object desc = descMethod.invoke(object);
DataDict dataDict = new DataDict();
dataDict.setDesc(desc.toString());
dataDict.setValue(val.toString());
dataDictList.add(dataDict);
System.out.println("enum value=" + val + "desc=" + desc);
}
apiDocDict.setDataDictList(dataDictList);
apiDocDictList.add(apiDocDict);
}
} catch (NoSuchMethodException | InvocationTargetException | IllegalAccessException e) {
} catch (NoSuchMethodException | InvocationTargetException | IllegalAccessException | ClassNotFoundException e) {
e.fillInStackTrace();
}