1 | package org.greenstone.server;
|
---|
2 |
|
---|
3 | import java.awt.*;
|
---|
4 | import java.awt.event.*;
|
---|
5 | import java.io.File;
|
---|
6 | import java.util.ArrayList;
|
---|
7 | import java.util.HashMap;
|
---|
8 | import javax.swing.*;
|
---|
9 |
|
---|
10 | import org.w3c.dom.*;
|
---|
11 |
|
---|
12 | import org.greenstone.gsdl3.util.GSXML;
|
---|
13 | import org.greenstone.gsdl3.util.GlobalProperties;
|
---|
14 | import org.greenstone.gsdl3.util.XMLConverter;
|
---|
15 |
|
---|
16 | import org.greenstone.server.BaseServerSettings;
|
---|
17 |
|
---|
18 | public class Server3Settings extends BaseServerSettings
|
---|
19 |
|
---|
20 | {
|
---|
21 | public Server3Settings(BaseServer server)
|
---|
22 | {
|
---|
23 | super(server);
|
---|
24 | }
|
---|
25 |
|
---|
26 | protected JPanel createServletPanel()
|
---|
27 | {
|
---|
28 |
|
---|
29 | JLabel servlet_label = new JLabel(server.dictionary.get("ServerSettings.Servlet"));
|
---|
30 |
|
---|
31 | servlet_combobox = new JComboBox();
|
---|
32 | servlet_combobox.setMaximumRowCount(5);
|
---|
33 | servlet_combobox.setBackground(bg_color);
|
---|
34 |
|
---|
35 | File web_xml = new File(GlobalProperties.getProperty(BaseServer.Property.GSDL_HOME) + File.separator + "WEB-INF" + File.separator + "web.xml");
|
---|
36 | XMLConverter converter = new XMLConverter();
|
---|
37 | Document web_config = converter.getDOM(web_xml);
|
---|
38 | if (web_config == null) {
|
---|
39 | logger.error("web.xml is null! "+web_xml.getAbsolutePath());
|
---|
40 | return null;
|
---|
41 | }
|
---|
42 |
|
---|
43 | NodeList servlet_mappings = web_config.getElementsByTagName("servlet-mapping");
|
---|
44 | // make a little map class
|
---|
45 | url_mappings = new HashMap();
|
---|
46 | for (int i = 0; i < servlet_mappings.getLength(); i++) {
|
---|
47 | Element map = (Element) servlet_mappings.item(i);
|
---|
48 | Element servlet_name_elem = (Element) GSXML.getChildByTagName(map, "servlet-name");
|
---|
49 | String name = GSXML.getNodeText(servlet_name_elem);
|
---|
50 | Element url_pattern_elem = (Element) GSXML.getChildByTagName(map, "url-pattern");
|
---|
51 | String pattern = GSXML.getNodeText(url_pattern_elem);
|
---|
52 | // Ignore the Axis servlets
|
---|
53 | if (!(name.equals("AxisServlet"))) {
|
---|
54 | servlet_combobox.addItem(name.trim());
|
---|
55 | url_mappings.put(name, pattern);
|
---|
56 | }
|
---|
57 |
|
---|
58 | if (name.equals(servletDefault)) {
|
---|
59 | servlet_combobox.setSelectedItem(name);
|
---|
60 | }
|
---|
61 | }
|
---|
62 |
|
---|
63 |
|
---|
64 | JPanel comb_panel = new JPanel();
|
---|
65 | comb_panel.setLayout(new FlowLayout(FlowLayout.LEFT));
|
---|
66 | comb_panel.add(servlet_label);
|
---|
67 | comb_panel.add(servlet_combobox);
|
---|
68 | comb_panel.setBackground(bg_color);
|
---|
69 |
|
---|
70 | return comb_panel;
|
---|
71 | }
|
---|
72 |
|
---|
73 |
|
---|
74 |
|
---|
75 | private class BrowseActionListener
|
---|
76 | implements ActionListener {
|
---|
77 |
|
---|
78 | public void actionPerformed(ActionEvent ev) {
|
---|
79 | JFileChooser chooser = new JFileChooser();
|
---|
80 | int returnVal = chooser.showOpenDialog(self);
|
---|
81 |
|
---|
82 | if(returnVal == JFileChooser.APPROVE_OPTION) {
|
---|
83 | File program_path = chooser.getSelectedFile();
|
---|
84 | program_path_field.setText(program_path.getPath());
|
---|
85 | }
|
---|
86 | }
|
---|
87 |
|
---|
88 | }
|
---|
89 |
|
---|
90 | private class BrowserSelectionListener
|
---|
91 | implements ActionListener {
|
---|
92 |
|
---|
93 | public void actionPerformed(ActionEvent ev) {
|
---|
94 | if (default_browser_button.isSelected()){
|
---|
95 | program_path_field.setEnabled(false);
|
---|
96 | browse_button.setEnabled(false);
|
---|
97 | }
|
---|
98 | else{
|
---|
99 | program_path_field.setEnabled(true);
|
---|
100 | browse_button.setEnabled(true);
|
---|
101 | }
|
---|
102 | }
|
---|
103 |
|
---|
104 | }
|
---|
105 |
|
---|
106 |
|
---|
107 | private class SaveActionListener
|
---|
108 | implements ActionListener {
|
---|
109 |
|
---|
110 | public void actionPerformed(ActionEvent ev) {
|
---|
111 | // save everything to build_properties if things have changed
|
---|
112 | boolean has_changed = false;
|
---|
113 | boolean require_restart = false;
|
---|
114 | if (portNum != ((Integer)portNumber_spinner.getValue()).intValue()) {
|
---|
115 | has_changed = true;
|
---|
116 | require_restart = true;
|
---|
117 | server.reconfigRequired();
|
---|
118 | portNum = ((Integer)portNumber_spinner.getValue()).intValue();
|
---|
119 | logger.info("port changed, new port is "+portNumber_spinner.getValue());
|
---|
120 | }
|
---|
121 | if (autoStart != autoEnter.isSelected()) {
|
---|
122 | has_changed = true;
|
---|
123 | }
|
---|
124 | if (!servletDefault.equals(servlet_combobox.getSelectedItem())) {
|
---|
125 | has_changed = true;
|
---|
126 | require_restart = true;
|
---|
127 | }
|
---|
128 | //changed to use other browser
|
---|
129 | if (useDefaultBrowser && other_browser_button.isSelected()){
|
---|
130 | browserPath = program_path_field.getText();
|
---|
131 | has_changed = true;
|
---|
132 | }
|
---|
133 | //the browser path has been changed
|
---|
134 | if ( !useDefaultBrowser && !browserPath.equals(program_path_field.getText())){
|
---|
135 | browserPath = program_path_field.getText();
|
---|
136 | has_changed = true;
|
---|
137 | }
|
---|
138 |
|
---|
139 | //changed to use the default browser
|
---|
140 | if ( default_browser_button.isSelected() && !useDefaultBrowser){
|
---|
141 | browserPath = "";
|
---|
142 | has_changed = true;
|
---|
143 | }
|
---|
144 |
|
---|
145 |
|
---|
146 | if (has_changed) {
|
---|
147 | ArrayList oldFileLines = null;
|
---|
148 | ArrayList newFileLines = null;
|
---|
149 |
|
---|
150 | ScriptReadWrite scriptReadWrite = new ScriptReadWrite();
|
---|
151 | oldFileLines = scriptReadWrite.readInFile(BaseServer.build_properties_file);
|
---|
152 |
|
---|
153 | newFileLines = scriptReadWrite.queryReplace(oldFileLines, BaseServer.Property.WEB_PORT, portNum+"");
|
---|
154 |
|
---|
155 | String newAutoEnter = (new Boolean(autoEnter.isSelected())).toString();
|
---|
156 | newFileLines = scriptReadWrite.queryReplace(newFileLines, BaseServer.Property.AUTOSTART, newAutoEnter);
|
---|
157 |
|
---|
158 | String newServletDef = (String) servlet_combobox.getSelectedItem();
|
---|
159 | newFileLines = scriptReadWrite.queryReplace(newFileLines,BaseServer.Property.DEFAULT_SERVLET, (String) url_mappings.get(newServletDef));
|
---|
160 |
|
---|
161 | String osName = System.getProperty("os.name");
|
---|
162 | if (osName.startsWith("Windows")){
|
---|
163 | browserPath = browserPath.replaceAll("\\\\","/");
|
---|
164 | }
|
---|
165 | newFileLines = scriptReadWrite.queryReplace(newFileLines,BaseServer.Property.BROWSER_PATH, browserPath);
|
---|
166 |
|
---|
167 | scriptReadWrite.writeOutFile(BaseServer.build_properties_file,
|
---|
168 | newFileLines);
|
---|
169 | server.reloadBuildProperties();
|
---|
170 | if (require_restart){
|
---|
171 | JOptionPane.showMessageDialog(null,server.dictionary.get("ServerSetting.SettingChanged"),"Info", JOptionPane.INFORMATION_MESSAGE);
|
---|
172 | }
|
---|
173 | }
|
---|
174 |
|
---|
175 | self.dispose();
|
---|
176 | }
|
---|
177 | }
|
---|
178 |
|
---|
179 | }
|
---|