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

Last change on this file since 20604 was 20604, checked in by ak19, 15 years ago

Changes to Server.jar files and affected files to add address_resolution options so that the GSI dialog for GS2 looks and behaves more like server.exe.

File size: 3.2 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 protected String servletDefault = null;
21 protected JComboBox servlet_combobox;
22 protected HashMap url_mappings = null;
23
24 public Server3Settings(BaseServer server)
25 {
26 super(server);
27 }
28
29 protected JPanel createServletPanel()
30 {
31 JLabel servlet_label = new JLabel(server.dictionary.get(BaseServer.Property.SERVER_SETTINGS+".URL"));
32
33 this.servletDefault = server.config_properties.getProperty(BaseServer.Property.DEFAULT_SERVLET).replaceAll("/","");
34
35 servlet_combobox = new JComboBox();
36 servlet_combobox.setMaximumRowCount(5);
37 servlet_combobox.setBackground(bg_color);
38
39 File web_xml = new File(GlobalProperties.getProperty(BaseServer.Property.GSDL_HOME) + File.separator + "WEB-INF" + File.separator + "web.xml");
40 XMLConverter converter = new XMLConverter();
41 Document web_config = converter.getDOM(web_xml);
42 if (web_config == null) {
43 logger.error("web.xml is null! "+web_xml.getAbsolutePath());
44 return null;
45 }
46
47 NodeList servlet_mappings = web_config.getElementsByTagName("servlet-mapping");
48 // make a little map class
49 url_mappings = new HashMap();
50 for (int i = 0; i < servlet_mappings.getLength(); i++) {
51 Element map = (Element) servlet_mappings.item(i);
52 Element servlet_name_elem = (Element) GSXML.getChildByTagName(map, "servlet-name");
53 String name = GSXML.getNodeText(servlet_name_elem);
54 Element url_pattern_elem = (Element) GSXML.getChildByTagName(map, "url-pattern");
55 String pattern = GSXML.getNodeText(url_pattern_elem);
56 // Ignore the Axis servlets
57 if (!(name.equals("AxisServlet"))) {
58 servlet_combobox.addItem(name.trim());
59 url_mappings.put(name, pattern);
60 }
61
62 if (pattern.replaceAll("/","").equals(servletDefault)) {
63 servlet_combobox.setSelectedItem(name);
64 }
65 }
66
67
68 JPanel comb_panel = new JPanel();
69 comb_panel.setLayout(new FlowLayout(FlowLayout.LEFT));
70 comb_panel.add(servlet_label);
71 comb_panel.add(servlet_combobox);
72
73 return comb_panel;
74 }
75
76 public boolean[] onSave()
77 {
78 boolean hasChanged = false;
79 boolean requireRestart = false;
80 if (!servletDefault.equals((String)url_mappings.get(servlet_combobox.getSelectedItem()))) {
81 hasChanged = true;
82 requireRestart = true;
83 }
84 boolean[] returnValues = { hasChanged, requireRestart };
85 return returnValues;
86 }
87
88 public void save(ScriptReadWrite scriptReadWrite, ArrayList newFileLines)
89 {
90 String newAutoEnter = (new Boolean(autoEnter.isSelected())).toString();
91 newFileLines = scriptReadWrite.queryReplace(newFileLines, BaseServer.Property.AUTOSTART, newAutoEnter);
92
93 String newServletDef = (String) servlet_combobox.getSelectedItem();
94 newFileLines = scriptReadWrite.queryReplace(newFileLines,BaseServer.Property.DEFAULT_SERVLET, (String) url_mappings.get(newServletDef));
95 }
96
97}
Note: See TracBrowser for help on using the repository browser.