package org.fastcatsearch.job.plugin; import org.fastcatsearch.common.io.Streamable; import org.fastcatsearch.exception.FastcatSearchException; import org.fastcatsearch.ir.io.DataInput; import org.fastcatsearch.ir.io.DataOutput; import org.fastcatsearch.job.Job; import org.fastcatsearch.job.result.BasicStringResult; import org.fastcatsearch.plugin.Plugin; import org.fastcatsearch.plugin.PluginService; import org.fastcatsearch.plugin.PluginSetting; import org.fastcatsearch.plugin.analysis.AnalysisPluginSetting; import org.fastcatsearch.plugin.analysis.AnalysisPluginSetting.Analyzer; import org.fastcatsearch.service.ServiceManager; import org.json.JSONException; import org.json.JSONStringer; import java.io.IOException; import java.util.Collection; import java.util.List; public class GetPluginAnalyzerJob extends Job implements Streamable { private static final long serialVersionUID = -4342583698931447970L; @Override public JobResult doRun() throws FastcatSearchException { PluginService pluginService = ServiceManager.getInstance().getService(PluginService.class); Collection<Plugin> pluginList = pluginService.getPlugins(); JSONStringer stringer = new JSONStringer(); try { stringer.object().key("pluginList").array(); for(Plugin plugin : pluginList){ PluginSetting pluginSetting = plugin.getPluginSetting(); if(pluginSetting instanceof AnalysisPluginSetting){ AnalysisPluginSetting setting = (AnalysisPluginSetting) pluginSetting; List<Analyzer> analyzerList = setting.getAnalyzerList(); stringer.object() .key("id").value(pluginSetting.getId()) .key("name").value(pluginSetting.getName()) .key("version").value(pluginSetting.getVersion()) .key("description").value(pluginSetting.getDescription()) .key("className").value(pluginSetting.getClassName()) .key("licenseStatus").value(plugin.getLicenseStatus()) .key("analyzer").array(); if(analyzerList != null) { for (Analyzer analyzer : analyzerList) { stringer.object() .key("id").value(analyzer.getId()) .key("name").value(analyzer.getName()) .endObject(); } } stringer.endArray().endObject(); } } stringer.endArray().endObject(); BasicStringResult result = new BasicStringResult(); result.setResult(stringer.toString()); return new JobResult(result); } catch (JSONException e) { logger.debug("error orrurs : {}",e.getMessage()); } finally { } return new JobResult(false); } @Override public void readFrom(DataInput input) throws IOException { } @Override public void writeTo(DataOutput output) throws IOException { } }