forked from rodhoward/node-sybase
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathStdInputReader.java
More file actions
91 lines (75 loc) · 2.01 KB
/
StdInputReader.java
File metadata and controls
91 lines (75 loc) · 2.01 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import net.minidev.json.JSONObject;
import net.minidev.json.JSONValue;
/**
*
* @author rod
*/
public class StdInputReader {
private List<SQLRequestListener> listeners = new ArrayList<SQLRequestListener>();
private BufferedReader inputBuffer;
public StdInputReader() {
this(null);
}
public StdInputReader(String encoding) {
try {
if (encoding != null && !encoding.isEmpty()) {
inputBuffer = new BufferedReader(new InputStreamReader(System.in, encoding));
} else {
inputBuffer = new BufferedReader(new InputStreamReader(System.in));
}
} catch (Exception e) {
System.err.println("Error setting encoding '" + encoding + "', falling back to default: " + e.getMessage());
inputBuffer = new BufferedReader(new InputStreamReader(System.in));
}
}
public void startReadLoop()
{
String nextLine;
try {
while ((nextLine = inputBuffer.readLine()) != null) {
nextLine = nextLine.replaceAll("\\n", "\n");
sendEvent(nextLine);
}
} catch (IOException ex) {
System.err.println("IO exception: " + ex);
}
}
private void sendEvent(String sqlRequest)
{
long startTime = System.currentTimeMillis();
SQLRequest request;
try {
JSONObject val = (JSONObject) JSONValue.parse(sqlRequest);
request = new SQLRequest();
request.msgId = (Integer)val.get("msgId");
request.sql = (String)val.get("sql");
request.javaStartTime = startTime;
} catch (Exception e)
{
request = null;
}
if (request == null || request.sql == null)
{
System.err.println("Error parsing json not a valid SQLRequest object. " + sqlRequest);
return;
}
for (SQLRequestListener l : listeners)
l.sqlRequest(request);
}
public boolean addListener(SQLRequestListener l)
{
if (listeners.contains(l))
return false;
listeners.add(l);
return true;
}
public boolean removeListener(SQLRequestListener l)
{
return listeners.remove(l);
}
}