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

Last change on this file since 25817 was 25635, checked in by sjm84, 12 years ago

Fixing Greenstone 3's use (or lack thereof) of generics, this was done automatically so we may want to change it over time. This change will also auto-format any files that have not already been formatted.

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