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

View File

@ -3,7 +3,7 @@ package com.power.doc.model;
/** /**
* @author yu 2019/10/31. * @author yu 2019/10/31.
*/ */
public class ApiDataDictionary { public class ApiDataDictConfig {
/** /**
* Dictionary * Dictionary
@ -15,6 +15,11 @@ public class ApiDataDictionary {
*/ */
private Class enumClass; private Class enumClass;
/**
* enum class name
*/
private String enumClassName;
/** /**
* value field * value field
*/ */
@ -26,15 +31,15 @@ public class ApiDataDictionary {
private String descField; private String descField;
public static ApiDataDictionary dict() { public static ApiDataDictConfig dict() {
return new ApiDataDictionary(); return new ApiDataDictConfig();
} }
public String getTitle() { public String getTitle() {
return title; return title;
} }
public ApiDataDictionary setTitle(String title) { public ApiDataDictConfig setTitle(String title) {
this.title = title; this.title = title;
return this; return this;
} }
@ -43,7 +48,7 @@ public class ApiDataDictionary {
return enumClass; return enumClass;
} }
public ApiDataDictionary setEnumClass(Class enumClass) { public ApiDataDictConfig setEnumClass(Class enumClass) {
this.enumClass = enumClass; this.enumClass = enumClass;
return this; return this;
} }
@ -52,7 +57,7 @@ public class ApiDataDictionary {
return valueField; return valueField;
} }
public ApiDataDictionary setValueField(String valueField) { public ApiDataDictConfig setValueField(String valueField) {
this.valueField = valueField; this.valueField = valueField;
return this; return this;
} }
@ -61,8 +66,17 @@ public class ApiDataDictionary {
return descField; return descField;
} }
public ApiDataDictionary setDescField(String descField) { public ApiDataDictConfig setDescField(String descField) {
this.descField = descField; this.descField = descField;
return this; 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.DateTimeUtil;
import com.power.common.util.StringUtil; import com.power.common.util.StringUtil;
import com.power.doc.enums.OrderEnum; import com.power.doc.enums.OrderEnum;
import com.power.doc.model.ApiConfig; import com.power.doc.model.*;
import com.power.doc.model.ApiDataDictionary;
import com.power.doc.model.RevisionLog;
import com.power.doc.model.SourceCodePath;
import org.junit.Test; import org.junit.Test;
import java.lang.reflect.InvocationTargetException; import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method; import java.lang.reflect.Method;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Objects;
/** /**
* Description: * Description:
@ -54,8 +52,8 @@ public class ApiDocTest {
//SourcePath.path().setPath("F:\\Personal\\project\\smart\\src\\main\\java") //SourcePath.path().setPath("F:\\Personal\\project\\smart\\src\\main\\java")
//SourcePath.path().setDesc("加载项目外代码").setPath("E:\\ApplicationPower\\ApplicationPower\\Common-util\\src\\main\\java") //SourcePath.path().setDesc("加载项目外代码").setPath("E:\\ApplicationPower\\ApplicationPower\\Common-util\\src\\main\\java")
); );
config.setDataDictionaries( config.setDataDictConfigs(
ApiDataDictionary.dict().setTitle("订单字典").setEnumClass(OrderEnum.class).setValueField("code").setDescField("desc") ApiDataDictConfig.dict().setTitle("订单字典").setEnumClass(OrderEnum.class).setValueField("code").setDescField("desc")
); );
//设置请求头如果没有请求头可以不用设置 //设置请求头如果没有请求头可以不用设置
/* config.setRequestHeaders( /* config.setRequestHeaders(
@ -78,14 +76,28 @@ public class ApiDocTest {
RevisionLog.getLog().setRevisionTime("2018/12/16").setAuthor("chen2").setRemarks("测试2").setStatus("修改").setVersion("V2.0") 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 { try {
for (ApiDataDictionary apiDataDictionary : apiDataDictionaryList) { List<ApiDocDict> apiDocDictList = new ArrayList<>();//模板中遍历这个字典表生成字典文档
int order = 0;
for (ApiDataDictConfig apiDataDictionary : apiDataDictionaryList) {
System.out.println("dictionary" + apiDataDictionary.getTitle()); System.out.println("dictionary" + apiDataDictionary.getTitle());
order++;
ApiDocDict apiDocDict = new ApiDocDict();
apiDocDict.setOrder(order);//设置方便在文档中的小结顺序
apiDocDict.setTitle(apiDataDictionary.getTitle());
Class<?> clzz = apiDataDictionary.getEnumClass(); 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()) { if (!clzz.isEnum()) {
throw new RuntimeException(clzz.getCanonicalName() + " is not an enum class."); throw new RuntimeException(clzz.getCanonicalName() + " is not an enum class.");
} }
List<DataDict> dataDictList = new ArrayList<>();
Object[] objects = clzz.getEnumConstants(); Object[] objects = clzz.getEnumConstants();
String valueMethodName = "get" + StringUtil.firstToUpperCase(apiDataDictionary.getValueField()); String valueMethodName = "get" + StringUtil.firstToUpperCase(apiDataDictionary.getValueField());
String descMethodName = "get" + StringUtil.firstToUpperCase(apiDataDictionary.getDescField()); String descMethodName = "get" + StringUtil.firstToUpperCase(apiDataDictionary.getDescField());
@ -94,11 +106,17 @@ public class ApiDocTest {
for (Object object : objects) { for (Object object : objects) {
Object val = valueMethod.invoke(object); Object val = valueMethod.invoke(object);
Object desc = descMethod.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); 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();
} }