/*
* Copyright (c) 2013 Websquared, Inc.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the GNU Public License v2.0
* which accompanies this distribution, and is available at
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
*
* Contributors:
* swsong - initial API and implementation
*/
package org.fastcatsearch.job;
import org.fastcatsearch.exception.FastcatSearchException;
import org.fastcatsearch.plugin.LicenseInvalidException;
import org.fastcatsearch.plugin.PluginService;
import org.fastcatsearch.plugin.analysis.AnalysisPlugin;
import org.fastcatsearch.service.ServiceManager;
import java.io.IOException;
import java.util.Map;
public class DictionaryCompileApplyJob extends MasterNodeJob {
private static final long serialVersionUID = 8615645248824825498L;
@Override
public JobResult doRun() throws FastcatSearchException {
Map<String, Object> args = getMapArgs();
String pluginId = (String) args.get("pluginId");
String dictListStr = (String) args.get("dictionary");
String[] dictList = null;
if (dictListStr != null && dictListStr.length() > 0) {
dictList = dictListStr.split(",");
}else{
return new JobResult("dictionary가 전달되지 않았습니다. >> "+dictListStr);
}
PluginService pluginService = ServiceManager.getInstance().getService(PluginService.class);
AnalysisPlugin analysisPlugin = (AnalysisPlugin) pluginService.getPlugin(pluginId);
if(analysisPlugin == null){
logger.error("Plugin을 찾을수 없습니다. >> {}", pluginId);
return new JobResult("Plugin을 찾을수 없습니다. >> "+pluginId);
}
try {
for (String dictionaryId : dictList) {
analysisPlugin.compileDictionaryFromDAO(dictionaryId);
}
} catch (IOException e) {
throw new FastcatSearchException(e);
}
logger.debug("사전컴파일후 플러그인 {}를 재로딩합니다.", pluginId);
try {
analysisPlugin.reload(environment.isMasterNode());
} catch (LicenseInvalidException e) {
throw new FastcatSearchException(e.getMessage());
}
return new JobResult(true);
}
// private void compileSetDictionary(List<SetDictionaryVO> result, String filePath) throws Exception {
// org.fastcatsearch.ir.dictionary.HashSetDictionary dictionary = new org.fastcatsearch.ir.dictionary.HashSetDictionary();
// for (int i = 0; i < result.size(); i++) {
// SetDictionaryVO vo = result.get(i);
// dictionary.addEntry(vo.keyword);
// }
// OutputStream out = null;
// try {
// out = new FileOutputStream(filePath);
// dictionary.writeTo(out);
// } finally {
// if (out != null) {
// try {
// out.close();
// } catch (IOException ignore) {
// }
// }
// }
//
// }
}