14 package cz.vutbr.fit.knot.annotations.modules.suggestionManager;
18 import java.io.BufferedReader;
19 import java.io.BufferedWriter;
21 import java.io.IOException;
22 import java.io.InputStream;
23 import java.io.InputStreamReader;
24 import java.io.OutputStream;
25 import java.io.OutputStreamWriter;
26 import java.util.List;
27 import java.util.logging.Level;
28 import java.util.logging.Logger;
41 public static final String
NER_COMMAND =
"/var/sec/NER/ner.py";
46 public static final String
NER_PATH =
"/var/sec/NER/";
51 public static final String
NER_KB_PATH =
"/var/sec/NER/KBstatsMetrics.all";
135 public synchronized boolean init() {
146 @SuppressWarnings(
"unchecked")
147 List<ServerSetting> settingsList = AppBean.getPersistenceManager().queryDB(
"ServerSetting.findByName",params);
148 if(settingsList != null && !settingsList.isEmpty()){
149 nerCommand = settingsList.get(0).getSettingValue();
153 @SuppressWarnings(
"unchecked")
154 List<ServerSetting> settingsListP = AppBean.getPersistenceManager().queryDB(
"ServerSetting.findByName",paramsP);
155 if(settingsListP != null && !settingsListP.isEmpty()){
156 nerPath = settingsListP.get(0).getSettingValue();
160 @SuppressWarnings(
"unchecked")
161 List<ServerSetting> settingsListK = AppBean.getPersistenceManager().queryDB(
"ServerSetting.findByName",paramsK);
162 if(settingsListK != null && !settingsListK.isEmpty()){
163 nerKBPath = settingsListK.get(0).getSettingValue();
168 processBuilder =
new ProcessBuilder (nerCommand,
"-d",
"-k",nerKBPath);
169 processBuilder.directory(
new File(nerPath));
170 processBuilder.redirectErrorStream(
true);
172 }
catch (IOException e) {
176 stdin = processVar.getOutputStream ();
177 stderr = processVar.getErrorStream ();
178 stdout = processVar.getInputStream ();
179 brStdIn =
new BufferedWriter(
new OutputStreamWriter(
stdin));
180 brStdOut =
new BufferedReader(
new InputStreamReader(stdout));
181 brStdErrOut =
new BufferedReader(
new InputStreamReader(stdout));
194 public synchronized String
process(String s)
throws Exception {
195 StringBuilder output =
new StringBuilder();
201 boolean processEnd =
false;
202 int possibleSeparatorLength = 1000;
204 output.append((char)
brStdOut.read());
205 if (counter > possibleSeparatorLength) {
207 processVar.exitValue();
210 }
catch (Exception e) {
213 throw new Exception(
"Process was terminated");
219 }
while ((possibleSeparatorLength >= 0) ? (!output.substring(possibleSeparatorLength).equals(
IO_SEPARATOR) &&
221 }
catch (IOException e) {
223 StringBuilder erStr =
new StringBuilder(
"");
224 String row = brStdErrOut.readLine();
225 while (row != null) {
227 row = brStdErrOut.readLine();
229 Logger.getLogger(NERInterface.class.getName()).log(Level.SEVERE,
"NER terminated! Error stream: " + erStr.toString());
230 }
catch (Exception exc) {
232 throw new Exception(
"Process was terminated");
234 return output.toString();
246 }
catch (Exception exception) {
251 BufferedReader brCleanUp =
new BufferedReader(
new InputStreamReader(
stderr));
252 while (brCleanUp.readLine() != null) {
257 processVar.destroy();
258 }
catch (IOException e) {}
static final String IO_SEPARATOR_EMPTY
static final String NER_PATH
Class representing parameter of server settings.
static final String NER_KB_PATH
Singleton for storing global variables.
BufferedReader brStdErrOut
static final String NER_KB_SETTING_NAME
ProcessBuilder processBuilder
synchronized String process(String s)
static final String NER_COMMAND
static final String IO_SEPARATOR
Interface for call of external program (deamon)
static final String NER_PATH_SETTING_NAME
static final String ENDING_COMMAND
static final String CLEANED_IO_SEPARATOR
synchronized boolean init()
static final String NER_SETTING_NAME