diff --git a/src/main/java/com/github/restful/tool/actions/OutPutAction.java b/src/main/java/com/github/restful/tool/actions/OutPutAction.java new file mode 100644 index 0000000..663ac36 --- /dev/null +++ b/src/main/java/com/github/restful/tool/actions/OutPutAction.java @@ -0,0 +1,74 @@ +package com.github.restful.tool.actions; + +import cn.hutool.core.text.csv.CsvUtil; +import cn.hutool.core.text.csv.CsvWriter; +import cn.hutool.core.util.CharsetUtil; +import com.github.restful.tool.beans.ApiService; +import com.github.restful.tool.utils.ApiServices; +import com.github.restful.tool.utils.data.Bundle; +import com.intellij.icons.AllIcons; +import com.intellij.openapi.actionSystem.AnActionEvent; +import com.intellij.openapi.fileChooser.FileChooser; +import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory; +import com.intellij.openapi.project.DumbAwareAction; +import com.intellij.openapi.project.Project; +import com.intellij.openapi.vfs.VirtualFile; +import com.intellij.util.Consumer; +import org.jetbrains.annotations.NotNull; + +import java.util.List; +import java.util.Map; + +/** + * + * @version 1.0 + */ +public class OutPutAction extends DumbAwareAction { + + public OutPutAction() { + getTemplatePresentation().setText(Bundle.getString("action.OutPutAction.text")); + getTemplatePresentation().setIcon(AllIcons.Actions.Download); + } + + @Override + public void actionPerformed(@NotNull AnActionEvent e) { + Project project = e.getProject(); + if (project == null) { + return; + } + FileChooser.chooseFile(FileChooserDescriptorFactory.createSingleFileDescriptor(), null, null, + new Consumer() { + @Override + public void consume(VirtualFile virtualFile) { + Map> apis = ApiServices.getApis(project); + + String path; + if (virtualFile.isDirectory()) { + path = virtualFile.getPath() + "request.csv"; + } else { + path = virtualFile.getPath(); + } + + String[] rows = new String[]{ + "模块", "接口" + }; + + CsvWriter writer = CsvUtil.getWriter(path, CharsetUtil.CHARSET_UTF_8); + + writer.write(rows); + + for (Map.Entry> entry : apis.entrySet()) { + + rows[0] = entry.getKey(); + + for (ApiService service : entry.getValue()) { + rows[1] = service.getPath(); + writer.write(rows); + } + } + + writer.close(); + } + }); + } +} diff --git a/src/main/java/com/github/restful/tool/view/window/frame/Window.java b/src/main/java/com/github/restful/tool/view/window/frame/Window.java index 6a879b1..77affb8 100644 --- a/src/main/java/com/github/restful/tool/view/window/frame/Window.java +++ b/src/main/java/com/github/restful/tool/view/window/frame/Window.java @@ -1,5 +1,6 @@ package com.github.restful.tool.view.window.frame; +import com.github.restful.tool.actions.OutPutAction; import com.github.restful.tool.actions.RefreshAction; import com.github.restful.tool.actions.WithLibraryAction; import com.github.restful.tool.actions.filters.HttpMethodFilterAction; @@ -177,6 +178,7 @@ private ActionToolbar initToolbar() { DefaultActionGroup group = new DefaultActionGroup(); group.add(new RefreshAction()); + group.add(new OutPutAction()); group.add(ActionManager.getInstance().getAction("Tool.GotoRequestService")); group.addSeparator(); diff --git a/src/main/resources/messages/RestfulToolBundle.properties b/src/main/resources/messages/RestfulToolBundle.properties index 5d24fc9..05cc5a7 100644 --- a/src/main/resources/messages/RestfulToolBundle.properties +++ b/src/main/resources/messages/RestfulToolBundle.properties @@ -21,6 +21,7 @@ action.ModuleFilter.text=Module Filter action.OpenModuleProperties.text=Module Properties action.TreeExpandAction.text=Expand Tree action.TreeCollapseAction.text=Collapse Tree +action.OutPutAction.text=Out Put ## Http Tool http.tool.tab.head=head