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