Skip to content

Commit 6741996

Browse files
committed
sync(common): 同步 common 模块
1 parent 6f0a2ba commit 6741996

20 files changed

Lines changed: 490 additions & 201 deletions

src/main/java/cn/gudqs7/plugins/common/base/action/AbstractAction.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import cn.gudqs7.plugins.common.util.WebEnvironmentUtil;
44
import cn.gudqs7.plugins.common.util.jetbrain.ExceptionUtil;
5-
import cn.gudqs7.plugins.common.util.jetbrain.PsiTypeUtil;
5+
import cn.gudqs7.plugins.common.util.structure.PsiTypeUtil;
66
import com.intellij.openapi.actionSystem.AnAction;
77
import com.intellij.openapi.actionSystem.AnActionEvent;
88
import com.intellij.psi.*;

src/main/java/cn/gudqs7/plugins/common/base/action/AbstractBatchDocerSavior.java

Lines changed: 13 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
package cn.gudqs7.plugins.common.base.action;
22

33
import cn.gudqs7.plugins.common.enums.MoreCommentTagEnum;
4+
import cn.gudqs7.plugins.common.enums.PluginSettingEnum;
45
import cn.gudqs7.plugins.common.pojo.resolver.CommentInfo;
56
import cn.gudqs7.plugins.common.resolver.comment.AnnotationHolder;
6-
import cn.gudqs7.plugins.common.util.ConfigHolder;
7+
import cn.gudqs7.plugins.common.util.PluginSettingHelper;
78
import cn.gudqs7.plugins.common.util.file.FileUtil;
89
import cn.gudqs7.plugins.common.util.jetbrain.ClipboardUtil;
910
import cn.gudqs7.plugins.common.util.jetbrain.DialogUtil;
@@ -112,17 +113,13 @@ public void actionPerformed0(@NotNull AnActionEvent e) {
112113
initConfig(e, project, psiElement, firstClass.getContainingFile().getVirtualFile());
113114
final Set<PsiClass> finalPsiClassList = psiClassList;
114115

115-
String dirRoot = "api-doc";
116116
String dirPrefix = getDirPrefix();
117-
Map<String, String> config = ConfigHolder.getConfig();
118-
if (config != null) {
119-
dirRoot = config.getOrDefault("dir.root", dirRoot);
120-
String overrideDir = config.get("dir." + dirPrefix);
121-
if (StringUtils.isNotBlank(overrideDir)) {
122-
dirRoot = overrideDir;
123-
} else {
124-
dirRoot = dirRoot + File.separator + dirPrefix;
125-
}
117+
String dirRoot = PluginSettingHelper.getConfigItem(PluginSettingEnum.DIR_ROOT, "api-doc");
118+
String overrideDir = PluginSettingHelper.getConfigItem(PluginSettingEnum.PREFIX_DIR.getSettingKey() + dirPrefix);
119+
if (StringUtils.isNotBlank(overrideDir)) {
120+
dirRoot = overrideDir;
121+
} else {
122+
dirRoot = dirRoot + File.separator + dirPrefix;
126123
}
127124

128125
String projectFilePath = project.getBasePath();
@@ -147,16 +144,11 @@ public void run(@NotNull ProgressIndicator indicator) {
147144
Map<String, Object> otherMap = new HashMap<>(8);
148145
runLoopBefore(project, indicator, hasCancelAtomic, finalPsiClassList, docRootDirPath, otherMap);
149146
for (PsiClass psiClass0 : finalPsiClassList) {
150-
Thread.sleep(100);
151-
if (indicator.isCanceled()) {
152-
handleCancelTask(docRootDirPath, projectFilePath);
153-
hasCancelAtomic.set(true);
154-
return;
155-
}
147+
indicator.checkCanceled();
156148
AtomicReference<CommentInfo> apiModelPropertyAtomic = new AtomicReference<>(null);
157149
AtomicReference<String> moduleNameAtomic = new AtomicReference<>("");
158150

159-
IdeaApplicationUtil.invokeAndWait(() -> {
151+
IdeaApplicationUtil.runReadAction(() -> {
160152
AnnotationHolder psiClassHolder = AnnotationHolder.getPsiClassHolder(psiClass0);
161153
CommentInfo commentInfo = psiClassHolder.getCommentInfo();
162154
apiModelPropertyAtomic.set(commentInfo);
@@ -210,12 +202,12 @@ protected boolean isNotShow(@NotNull AnActionEvent e, Project project, PsiElemen
210202
}
211203

212204
protected void initConfig(AnActionEvent e, Project project, PsiElement psiElement, VirtualFile virtualFile) {
213-
ConfigHolder.initConfig(project, virtualFile);
205+
PluginSettingHelper.initConfig(project, virtualFile);
214206
}
215207

216208
@Override
217209
protected void destroy(AnActionEvent e) {
218-
ConfigHolder.removeConfig();
210+
PluginSettingHelper.clearConfigCache();
219211
}
220212

221213
private VirtualFile getFirstPsiFile(@NotNull AnActionEvent e, Project project, PsiElement psiElement, boolean isFromArray) {
@@ -409,7 +401,7 @@ protected void runLoop(Project project, PsiClass psiClass0, AtomicBoolean hasCan
409401
indicator.setText2("文件写入中:" + fileParentDir + File.separator + fullFileName);
410402
indicator.setFraction(fraction);
411403

412-
IdeaApplicationUtil.invokeAndWait(() -> {
404+
IdeaApplicationUtil.runReadAction(() -> {
413405
String fileContent = runLoop0(psiClass0, project, commentInfo, moduleName, fileName, fullFileName, otherMap);
414406
if (StringUtils.isNotBlank(fileContent)) {
415407
FileUtil.writeStringToFile(fileContent, parent, fullFileName);

src/main/java/cn/gudqs7/plugins/common/base/action/AbstractOnRightClickSavior.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package cn.gudqs7.plugins.common.base.action;
22

33
import cn.gudqs7.plugins.common.resolver.comment.AnnotationHolder;
4-
import cn.gudqs7.plugins.common.util.ConfigHolder;
4+
import cn.gudqs7.plugins.common.util.PluginSettingHelper;
55
import cn.gudqs7.plugins.common.util.WebEnvironmentUtil;
66
import cn.gudqs7.plugins.common.util.jetbrain.ClipboardUtil;
77
import cn.gudqs7.plugins.common.util.jetbrain.DialogUtil;
@@ -80,7 +80,7 @@ public void actionPerformed0(@NotNull AnActionEvent e) {
8080
}
8181

8282
if (virtualFile != null) {
83-
ConfigHolder.initConfig(project, virtualFile);
83+
PluginSettingHelper.initConfig(project, virtualFile);
8484
}
8585

8686
if (isRightClickOnMethod) {

src/main/java/cn/gudqs7/plugins/common/base/action/intention/AbstractEditorIntentionAction.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import cn.gudqs7.plugins.common.base.action.intention.helper.CodeInsertHelper;
44
import cn.gudqs7.plugins.common.base.action.intention.helper.CodeInsertHelperFactory;
55
import cn.gudqs7.plugins.common.util.jetbrain.ExceptionUtil;
6-
import cn.gudqs7.plugins.common.util.jetbrain.PsiTypeUtil;
6+
import cn.gudqs7.plugins.common.util.structure.PsiTypeUtil;
77
import com.intellij.codeInsight.intention.PsiElementBaseIntentionAction;
88
import com.intellij.openapi.editor.Document;
99
import com.intellij.openapi.editor.Editor;

src/main/java/cn/gudqs7/plugins/common/base/postfix/template/AbstractPostfixTemplate.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package cn.gudqs7.plugins.common.base.postfix.template;
22

33
import cn.gudqs7.plugins.common.util.jetbrain.ExceptionUtil;
4-
import cn.gudqs7.plugins.common.util.jetbrain.PsiTypeUtil;
4+
import cn.gudqs7.plugins.common.util.structure.PsiTypeUtil;
55
import com.intellij.codeInsight.template.postfix.templates.PostfixTemplateExpressionSelectorBase;
66
import com.intellij.codeInsight.template.postfix.templates.PostfixTemplateWithExpressionSelector;
77
import com.intellij.codeInsight.template.postfix.util.JavaPostfixTemplatesUtils;
Lines changed: 127 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,127 @@
1+
package cn.gudqs7.plugins.common.enums;
2+
3+
import lombok.Getter;
4+
5+
/**
6+
* @author wenquan
7+
* @date 2022/7/6
8+
*/
9+
@Getter
10+
public enum PluginSettingEnum {
11+
12+
// region Postman setting
13+
14+
/**
15+
* 是否自动导出到 Postman 账号下 workspace (通过 Postman Open Api)
16+
*/
17+
POSTMAN_ENABLE("postman.enable", PluginSettingTypeEnum.BOOL),
18+
/**
19+
* Postman Api key, 获取方式见 <a href="https://web.postman.co/settings/me/api-keys">Postman Api keys</a>
20+
*/
21+
POSTMAN_KEY("postman.key", PluginSettingTypeEnum.STRING),
22+
/**
23+
* Postman 文件名称及 workspace 下 Collection 名称
24+
*/
25+
POSTMAN_NAME("postman.name", PluginSettingTypeEnum.STRING),
26+
/**
27+
* 导出到 Postman 账号下 workspace 时, 遇到已存在的 Collection (根据名称) 是否覆盖所有内容~
28+
*/
29+
POSTMAN_OVERRIDE("postman.override", PluginSettingTypeEnum.BOOL),
30+
31+
// endregion Postman setting
32+
33+
// region Amp setting
34+
35+
AMP_ENABLE("amp.enable", PluginSettingTypeEnum.BOOL),
36+
AMP_DATA_MODE("amp.data.mode", PluginSettingTypeEnum.STRING),
37+
AMP_HOST_DAILY("amp.host.daily", PluginSettingTypeEnum.STRING),
38+
AMP_HOST_PRE("amp.host.pre", PluginSettingTypeEnum.STRING),
39+
AMP_HOST_PRO("amp.host.pro", PluginSettingTypeEnum.STRING),
40+
AMP_BACK_APP_NAME("amp.backendService.appName", PluginSettingTypeEnum.STRING),
41+
AMP_PARAM_SYSTEM("amp.param.system", PluginSettingTypeEnum.STRING),
42+
AMP_PARAM_REQUEST("amp.param.req", PluginSettingTypeEnum.STRING),
43+
44+
// endregion Amp setting
45+
46+
47+
// region OneApi setting
48+
ONE_API_ENABLE("oneApi.enable", PluginSettingTypeEnum.BOOL),
49+
ONE_API_NO_TAG("oneApi.noTag", PluginSettingTypeEnum.BOOL),
50+
ONE_API_NO_MAIN("oneApi.noMain", PluginSettingTypeEnum.BOOL),
51+
ONE_API_PROJECT_CODE("oneApi.projectCode", PluginSettingTypeEnum.STRING),
52+
ONE_API_CATALOG_ID("oneApi.catalogId", PluginSettingTypeEnum.STRING),
53+
ONE_API_API_URL("oneApi.createUrl", PluginSettingTypeEnum.STRING),
54+
ONE_API_TAG_URL("oneApi.updateTagUrl", PluginSettingTypeEnum.STRING),
55+
ONE_API_PARAM_REQ("oneApi.param.req", PluginSettingTypeEnum.STRING),
56+
ONE_API_COOKIE("oneApi.cookie", PluginSettingTypeEnum.STRING),
57+
58+
// endregion OneApi setting
59+
60+
// region other setting
61+
62+
/**
63+
* 给IP设定一个默认值
64+
*/
65+
DEFAULT_IP("default.ip", PluginSettingTypeEnum.STRING),
66+
/**
67+
* 给URL设置一个前缀, 设置后, IP 失效; 此前缀不包含最后的 /
68+
*/
69+
DEFAULT_URL_PREFIX("default.url", PluginSettingTypeEnum.STRING),
70+
/**
71+
* 若设置为 true, 则生成数据时不生成随机数据(主要用于作者测试)
72+
*/
73+
DEFAULT_NOT_RANDOM("default.notUsingRandom", PluginSettingTypeEnum.BOOL),
74+
/**
75+
* 生成文档所在根目录, 基于IDEA项目根目录下相对路径
76+
*/
77+
DIR_ROOT("dir.root", PluginSettingTypeEnum.STRING),
78+
79+
// endregion other setting
80+
81+
// region prefix
82+
83+
/**
84+
* 为原本在文档根目录下子目录们指定新目录, 基于IDEA项目根目录下相对路径; 可能值有 rpc/restful/postman/html..
85+
*/
86+
PREFIX_DIR("dir.", PluginSettingTypeEnum.STRING),
87+
/**
88+
* 尝试指定其他文档模版(整体模版); 可能值为 hsf/restful; 如 template\ftl\restful\method.ftl
89+
*/
90+
PREFIX_THEME_METHOD("docer.theme.method.", PluginSettingTypeEnum.STRING),
91+
/**
92+
* 尝试指定其他文档模版(仅参数模版); 可能值为 hsf/restful; 如 template\ftl\restful\field.ftl
93+
*/
94+
PREFIX_THEME_FIELD("docer.theme.field.", PluginSettingTypeEnum.STRING),
95+
96+
// endregion prefix
97+
98+
;
99+
100+
101+
private final String settingKey;
102+
private final PluginSettingTypeEnum type;
103+
104+
PluginSettingEnum(String settingKey, PluginSettingTypeEnum type) {
105+
this.settingKey = settingKey;
106+
this.type = type;
107+
}
108+
109+
@Getter
110+
public enum PluginSettingTypeEnum {
111+
112+
/**
113+
* 设置值类型
114+
*/
115+
STRING(1),
116+
BOOL(2),
117+
INTEGER(3),
118+
;
119+
120+
private final int type;
121+
122+
PluginSettingTypeEnum(int type) {
123+
this.type = type;
124+
}
125+
}
126+
127+
}

src/main/java/cn/gudqs7/plugins/common/resolver/comment/AbstractAnnotationHolder.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
import cn.gudqs7.plugins.common.enums.MoreCommentTagEnum;
55
import cn.gudqs7.plugins.common.pojo.resolver.CommentInfo;
66
import cn.gudqs7.plugins.common.pojo.resolver.CommentInfoTag;
7-
import cn.gudqs7.plugins.common.util.jetbrain.PsiAnnotationUtil;
87
import cn.gudqs7.plugins.common.util.structure.BaseTypeParseUtil;
8+
import cn.gudqs7.plugins.common.util.structure.PsiAnnotationUtil;
99
import com.intellij.psi.PsiAnnotation;
1010
import org.apache.commons.lang3.StringUtils;
1111

src/main/java/cn/gudqs7/plugins/common/resolver/comment/PsiMethodAnnotationHolderImpl.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,16 @@
33
import cn.gudqs7.plugins.common.consts.CommonConst;
44
import cn.gudqs7.plugins.common.enums.CommentTagEnum;
55
import cn.gudqs7.plugins.common.enums.MoreCommentTagEnum;
6+
import cn.gudqs7.plugins.common.enums.PluginSettingEnum;
67
import cn.gudqs7.plugins.common.pojo.resolver.CommentInfo;
78
import cn.gudqs7.plugins.common.pojo.resolver.CommentInfoTag;
89
import cn.gudqs7.plugins.common.pojo.resolver.RequestMapping;
910
import cn.gudqs7.plugins.common.pojo.resolver.ResponseCodeInfo;
11+
import cn.gudqs7.plugins.common.util.PluginSettingHelper;
1012
import cn.gudqs7.plugins.common.util.WebEnvironmentUtil;
1113
import cn.gudqs7.plugins.common.util.jetbrain.ExceptionUtil;
12-
import cn.gudqs7.plugins.common.util.jetbrain.PsiAnnotationUtil;
13-
import cn.gudqs7.plugins.common.util.jetbrain.PsiTypeUtil;
14+
import cn.gudqs7.plugins.common.util.structure.PsiAnnotationUtil;
15+
import cn.gudqs7.plugins.common.util.structure.PsiTypeUtil;
1416
import com.intellij.psi.*;
1517
import org.apache.commons.collections.CollectionUtils;
1618
import org.apache.commons.lang3.StringUtils;
@@ -277,6 +279,10 @@ private void dealRequestMapping(CommentInfo commentInfo) {
277279
}
278280

279281
private String getHostPrefix() {
282+
String urlPrefix = PluginSettingHelper.getConfigItem(PluginSettingEnum.DEFAULT_URL_PREFIX);
283+
if (StringUtils.isNotBlank(urlPrefix)) {
284+
return urlPrefix + "/";
285+
}
280286
String hostPrefix = "http://%s:%s/";
281287
String ip = WebEnvironmentUtil.getIp();
282288
String port = "8080";

src/main/java/cn/gudqs7/plugins/common/resolver/structure/StructureAndCommentResolver.java

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,7 @@
77
import cn.gudqs7.plugins.common.pojo.resolver.StructureAndCommentInfo;
88
import cn.gudqs7.plugins.common.resolver.comment.AnnotationHolder;
99
import cn.gudqs7.plugins.common.util.jetbrain.ExceptionUtil;
10-
import cn.gudqs7.plugins.common.util.jetbrain.PsiTypeUtil;
11-
import cn.gudqs7.plugins.common.util.structure.BaseTypeUtil;
12-
import cn.gudqs7.plugins.common.util.structure.FieldJumpUtil;
13-
import cn.gudqs7.plugins.common.util.structure.PsiClassUtil;
14-
import cn.gudqs7.plugins.common.util.structure.ResolverContextHolder;
10+
import cn.gudqs7.plugins.common.util.structure.*;
1511
import com.intellij.openapi.project.Project;
1612
import com.intellij.openapi.vfs.VirtualFile;
1713
import com.intellij.openapi.vfs.VirtualFileManager;

0 commit comments

Comments
 (0)