[18558] | 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 |
|
---|
[22085] | 12 | import org.greenstone.util.ScriptReadWrite;
|
---|
| 13 |
|
---|
| 14 | import org.greenstone.util.GlobalProperties;
|
---|
[18558] | 15 | import org.greenstone.gsdl3.util.GSXML;
|
---|
| 16 | import org.greenstone.gsdl3.util.XMLConverter;
|
---|
| 17 |
|
---|
| 18 | import org.greenstone.server.BaseServerSettings;
|
---|
| 19 |
|
---|
| 20 | public class Server3Settings extends BaseServerSettings
|
---|
[18708] | 21 | {
|
---|
| 22 | protected String servletDefault = null;
|
---|
| 23 | protected JComboBox servlet_combobox;
|
---|
| 24 | protected HashMap url_mappings = null;
|
---|
[18558] | 25 |
|
---|
| 26 | public Server3Settings(BaseServer server)
|
---|
| 27 | {
|
---|
| 28 | super(server);
|
---|
| 29 | }
|
---|
| 30 |
|
---|
| 31 | protected JPanel createServletPanel()
|
---|
| 32 | {
|
---|
[18693] | 33 | JLabel servlet_label = new JLabel(server.dictionary.get(BaseServer.Property.SERVER_SETTINGS+".URL"));
|
---|
[18558] | 34 |
|
---|
[25388] | 35 | this.servletDefault = server.config_properties.getProperty(BaseServer.Property.DEFAULT_SERVLET);
|
---|
| 36 |
|
---|
[18558] | 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();
|
---|
| 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 |
|
---|
[25388] | 64 | if (pattern.replaceAll("/\\*","").equals(servletDefault)) { // urlmapping maybe something like "/library/*", want "/library"
|
---|
[18558] | 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 |
|
---|
[20604] | 78 | public boolean[] onSave()
|
---|
[18708] | 79 | {
|
---|
[20604] | 80 | boolean hasChanged = false;
|
---|
| 81 | boolean requireRestart = false;
|
---|
[25388] | 82 | String urlMapping = (String)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)) {
|
---|
[20604] | 87 | hasChanged = true;
|
---|
| 88 | requireRestart = true;
|
---|
[18708] | 89 | }
|
---|
[20604] | 90 | boolean[] returnValues = { hasChanged, requireRestart };
|
---|
| 91 | return returnValues;
|
---|
[18708] | 92 | }
|
---|
| 93 |
|
---|
| 94 | public void save(ScriptReadWrite scriptReadWrite, ArrayList newFileLines)
|
---|
| 95 | {
|
---|
[18868] | 96 | String newAutoEnter = (new Boolean(autoEnter.isSelected())).toString();
|
---|
| 97 | newFileLines = scriptReadWrite.queryReplace(newFileLines, BaseServer.Property.AUTOSTART, newAutoEnter);
|
---|
| 98 |
|
---|
[24207] | 99 | String newKeepPort = (new Boolean(keepPortToggle.isSelected())).toString();
|
---|
| 100 | newFileLines = scriptReadWrite.queryReplace(newFileLines, BaseServer.Property.KEEPPORT, newKeepPort);
|
---|
| 101 |
|
---|
[18708] | 102 | String newServletDef = (String) servlet_combobox.getSelectedItem();
|
---|
[25388] | 103 | String servletDefName = (String) 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);
|
---|
[18708] | 108 | }
|
---|
| 109 |
|
---|
[18558] | 110 | }
|
---|