package org.fastcatsearch.http.action.management.analysis;
import java.io.Writer;
import java.util.Collection;
import java.util.List;
import org.fastcatsearch.http.ActionAuthority;
import org.fastcatsearch.http.ActionAuthorityLevel;
import org.fastcatsearch.http.ActionMapping;
import org.fastcatsearch.http.action.ActionRequest;
import org.fastcatsearch.http.action.ActionResponse;
import org.fastcatsearch.http.action.AuthAction;
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.DictionarySetting;
import org.fastcatsearch.service.ServiceManager;
import org.fastcatsearch.util.ResponseWriter;
@ActionMapping(value = "/management/analysis/plugin-list", authority = ActionAuthority.Analysis, authorityLevel = ActionAuthorityLevel.NONE)
public class GetAnalysisPluginList extends AuthAction {
@Override
public void doAuthAction(ActionRequest request, ActionResponse response) throws Exception {
PluginService pluginService = ServiceManager.getInstance().getService(PluginService.class);
Collection<Plugin> pluginList = pluginService.getPlugins();
Writer writer = response.getWriter();
ResponseWriter responseWriter = getDefaultResponseWriter(writer);
responseWriter.object().key("pluginList").array("plugin");
for(Plugin plugin : pluginList){
PluginSetting pluginSetting = plugin.getPluginSetting();
if(pluginSetting instanceof AnalysisPluginSetting){
List<DictionarySetting> dictionaryList = ((AnalysisPluginSetting) pluginSetting).getDictionarySettingList();
responseWriter.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("hasDictionary").value(dictionaryList != null && dictionaryList.size() > 0)
.endObject();
}
}
responseWriter.endArray().endObject();
responseWriter.done();
if (writer != null) {
writer.close();
}
}
}