package org.fastcatsearch.ir.dictionary; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.util.List; import java.util.regex.Pattern; import org.fastcatsearch.ir.io.CharVector; import org.fastcatsearch.plugin.analysis.AnalysisPluginSetting.ColumnSetting; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public abstract class SourceDictionary implements ReloadableDictionary, WritableDictionary, ReadableDictionary { protected static Logger logger = LoggerFactory.getLogger(SourceDictionary.class); protected boolean ignoreCase; private Pattern whitespacePattern = Pattern.compile(" "); public SourceDictionary(boolean ignoreCase){ this.ignoreCase = ignoreCase; } public void loadSource(File file) { InputStream is = null; try { is = new FileInputStream(file); loadSource(is); } catch (FileNotFoundException e) { logger.error("사전소스파일을 찾을수 없습니다.", e); } finally { if (is != null) { try { is.close(); } catch (IOException ignore) { } } } } public void loadSource(InputStream is) { try { BufferedReader br = new BufferedReader(new InputStreamReader(is, "utf-8")); String line = null; while ((line = br.readLine()) != null) { addSourceLineEntry(line); } } catch (IOException e) { logger.error("", e); } } public void clear() { } public void addEntry(String keyword, Object[] values) { addEntry(keyword, values, null); } public abstract void addEntry(String keyword, Object[] values, List<ColumnSetting> columnSettingList); public abstract void addSourceLineEntry(String line); }