25 changed files with 651 additions and 467 deletions
Binary file not shown.
@ -1,9 +0,0 @@ |
|||||
{ |
|
||||
"recommendations": [ |
|
||||
"Vue.volar", |
|
||||
"Vue.vscode-typescript-vue-plugin", |
|
||||
"bradlc.vscode-tailwindcss", |
|
||||
"christian-kohler.path-intellisense", |
|
||||
// "esbenp.prettier-vscode" |
|
||||
] |
|
||||
} |
|
||||
@ -0,0 +1,5 @@ |
|||||
|
dependencies { |
||||
|
api( |
||||
|
project(":io.sc.platform.mvc"), |
||||
|
) |
||||
|
} |
||||
@ -0,0 +1,68 @@ |
|||||
|
package io.sc.platform.help.plugins; |
||||
|
|
||||
|
import com.fasterxml.jackson.core.type.TypeReference; |
||||
|
import io.sc.platform.core.plugins.Plugin; |
||||
|
import io.sc.platform.core.plugins.PluginParser; |
||||
|
import io.sc.platform.help.plugins.item.Help; |
||||
|
|
||||
|
import java.util.ArrayList; |
||||
|
import java.util.List; |
||||
|
|
||||
|
/** |
||||
|
* 帮助文档处理插件 |
||||
|
*/ |
||||
|
public class PluginManager { |
||||
|
private static final String HELP_LOCATION ="META-INF/platform/plugins/helps.json"; |
||||
|
|
||||
|
//系统参数插件
|
||||
|
private List<Plugin<List<Help>>> helpPlugins; |
||||
|
private List<Help> helps; //按优先级合并后的列表
|
||||
|
|
||||
|
/** |
||||
|
* 获取单例模式实例 |
||||
|
* @return 实例 |
||||
|
*/ |
||||
|
public static PluginManager getInstance(){ |
||||
|
return PluginManagerHolder.instance; |
||||
|
} |
||||
|
|
||||
|
private static class PluginManagerHolder{ |
||||
|
private static PluginManager instance =new PluginManager(); |
||||
|
} |
||||
|
|
||||
|
private PluginManager(){ |
||||
|
PluginParser parser =new PluginParser(); |
||||
|
loadHelpPlugins(parser); |
||||
|
} |
||||
|
|
||||
|
public List<Plugin<List<Help>>> getHelpPlugins() { |
||||
|
return helpPlugins; |
||||
|
} |
||||
|
public void setHelpPlugins(List<Plugin<List<Help>>> helpPlugins) { |
||||
|
this.helpPlugins = helpPlugins; |
||||
|
} |
||||
|
public List<Help> getHelps() { |
||||
|
return helps; |
||||
|
} |
||||
|
public void setHelps(List<Help> helps) { |
||||
|
this.helps = helps; |
||||
|
} |
||||
|
|
||||
|
private void loadHelpPlugins(PluginParser parser) { |
||||
|
helpPlugins =parser.parse(HELP_LOCATION,new TypeReference<List<Help>>(){}); |
||||
|
//处理未按优先级合并的贡献项列表
|
||||
|
if(helpPlugins!=null && !helpPlugins.isEmpty()){ |
||||
|
List<Help> items =new ArrayList<>(); |
||||
|
for(Plugin<List<Help>> plugin : helpPlugins){ |
||||
|
List<Help> innerHelps =plugin.getValue(); |
||||
|
if(innerHelps!=null && !innerHelps.isEmpty()){ |
||||
|
for(Help entity : innerHelps){ |
||||
|
entity.setConfigurationFileUrl(plugin.getFileUrl()); |
||||
|
} |
||||
|
items.addAll(innerHelps); |
||||
|
} |
||||
|
} |
||||
|
this.helps =items; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,12 @@ |
|||||
|
package io.sc.platform.help.plugins; |
||||
|
|
||||
|
import io.sc.platform.core.spi.PluginSpiService; |
||||
|
|
||||
|
/** |
||||
|
* 该类为 java SPI(Service Provider Interface) 模式的实现类, 用于加载插件 |
||||
|
*/ |
||||
|
public class PluginSpiServiceImpl implements PluginSpiService { |
||||
|
public PluginSpiServiceImpl(){ |
||||
|
PluginManager.getInstance(); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,33 @@ |
|||||
|
package io.sc.platform.help.plugins.item; |
||||
|
|
||||
|
public class Help { |
||||
|
protected String id; |
||||
|
protected String url; |
||||
|
|
||||
|
//附加属性
|
||||
|
private String configurationFileUrl; //帮助贡献项配置文件位置
|
||||
|
|
||||
|
public String getId() { |
||||
|
return id; |
||||
|
} |
||||
|
|
||||
|
public void setId(String id) { |
||||
|
this.id = id; |
||||
|
} |
||||
|
|
||||
|
public String getUrl() { |
||||
|
return url; |
||||
|
} |
||||
|
|
||||
|
public void setUrl(String url) { |
||||
|
this.url = url; |
||||
|
} |
||||
|
|
||||
|
public String getConfigurationFileUrl() { |
||||
|
return configurationFileUrl; |
||||
|
} |
||||
|
|
||||
|
public void setConfigurationFileUrl(String configurationFileUrl) { |
||||
|
this.configurationFileUrl = configurationFileUrl; |
||||
|
} |
||||
|
} |
||||
Loading…
Reference in new issue