-
Notifications
You must be signed in to change notification settings - Fork 25
Expand file tree
/
Copy pathConfigServlet.java
More file actions
156 lines (121 loc) · 3.46 KB
/
Copy pathConfigServlet.java
File metadata and controls
156 lines (121 loc) · 3.46 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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
package javaforce.service;
import java.io.*;
import javaforce.*;
import javaforce.bus.*;
import javaforce.webui.*;
import javaforce.webui.panel.*;
/** Common Config Servlet.
*
* Service must implement IPC methods:
* String getConfig()
* boolean setConfig(String cfg)
* String getLogFile()
*
* @author pquiring
*/
public abstract class ConfigServlet implements WebUIServlet {
private String appName;
private JBusClient busClient;
private String busName;
public abstract String getAppName();
public abstract String getBusName();
public abstract String getHelpURL();
private class UI {
TextArea view_log_textarea;
}
public void init() {
try {
appName = getAppName();
busName = getBusName();
JFLog.init(JF.getLogPath() + "/" + appName + "-servlet.log", true);
busClient = new JBusClient(null);
busClient.connect();
} catch (Throwable t) {
JFLog.log(t);
}
}
public void destroy() {
}
public String getName() {
return appName;
}
public Panel getPanel(String name, HTTP.Parameters params, WebUIClient client) {
String user = client.getUser();
if (user == null) {
return new LoginPanel(appName, client);
}
Panel panel = new Panel();
UI ui = new UI();
Panel viewLogPanel = getViewLogPanel(ui);
panel.add(viewLogPanel);
ToolBar tools = new ToolBar();
panel.add(tools);
Label title = new Label(appName + " Configuration");
tools.add(title);
Button load = new Button("Load Config");
tools.add(load);
Button save = new Button("Save Config");
tools.add(save);
Button view_log = new Button("View Log");
tools.add(view_log);
Button help = new Button("Help");
tools.add(help);
TextArea config = new TextArea("");
config.setMaxWidth();
config.setFlex(true);
panel.add(config);
help.addClickListener((me, cmp) -> {
client.openURL(getHelpURL());
});
view_log.addClickListener((me, cmp) -> {
viewLogRefresh(ui);
viewLogPanel.setVisible(true);
});
load.addClickListener((me, cmp) -> {
String cfg = (String)busClient.invoke(busName, "getConfig");
config.setText(cfg);
});
save.addClickListener((me, cmp) -> {
String cfg = (String)config.getText();
if (cfg.length() == 0) return;
busClient.invoke(busName, "setConfig", cfg);
});
return panel;
}
public byte[] getResource(String url, HTTP.Parameters params, WebRequest request, WebResponse response) {
return null;
}
public void clientConnected(WebUIClient client) {
}
public void clientDisconnected(WebUIClient client) {
}
private void viewLogRefresh(UI ui) {
String logfile = (String)busClient.invoke(busName, "getLogFile");
String log = "";
try {
FileInputStream fis = new FileInputStream(logfile);
byte[] data = fis.readAllBytes();
fis.close();
log = new String(data);
} catch (Exception e) {
log = e.toString();
}
ui.view_log_textarea.setText(log);
}
private Panel getViewLogPanel(UI ui) {
Panel panel = new PopupPanel("View Log");
TextArea text = new TextArea("");
text.setWidth(1024);
text.setHeight(512);
ui.view_log_textarea = text;
panel.add(ui.view_log_textarea);
ToolBar tools = new ToolBar();
panel.add(tools);
Button refresh = new Button("Refresh");
tools.add(refresh);
refresh.addClickListener((me, cmp) -> {
viewLogRefresh(ui);
});
return panel;
}
}