source: greenstone3/trunk/src/java/org/greenstone/server/Server3Settings.java@ 18558

Last change on this file since 18558 was 18558, checked in by davidb, 15 years ago

Restructuring of code to support a web server version for Greenstone2 and well as Greenstone3

File size: 5.6 KB
Line 
1package org.greenstone.server;
2
3import java.awt.*;
4import java.awt.event.*;
5import java.io.File;
6import java.util.ArrayList;
7import java.util.HashMap;
8import javax.swing.*;
9
10import org.w3c.dom.*;
11
12import org.greenstone.gsdl3.util.GSXML;
13import org.greenstone.gsdl3.util.GlobalProperties;
14import org.greenstone.gsdl3.util.XMLConverter;
15
16import org.greenstone.server.BaseServerSettings;
17
18public 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}
Note: See TracBrowser for help on using the repository browser.