source: trunk/gsdl3/src/java/org/greenstone/gsdl3/action/SystemAction.java@ 4144

Last change on this file since 4144 was 4144, checked in by kjdon, 21 years ago

all stuff for the page generated by teh Receptionist (config and display) is now put into a pageExtra element, so actions only need to append one extra piece to the page

  • Property svn:keywords set to Author Date Id Revision
File size: 3.1 KB
Line 
1package org.greenstone.gsdl3.action;
2
3import org.greenstone.gsdl3.core.ModuleInterface;
4import org.greenstone.gsdl3.util.*;
5
6// XML classes
7import org.w3c.dom.Node;
8import org.w3c.dom.Element;
9import org.w3c.dom.Document;
10
11// other java stuff
12import java.io.File;
13import java.util.HashMap;
14
15public class SystemAction extends Action {
16
17 /** process a request */
18 public Element process (Element message) {
19
20 // assume only one request
21 Element request = (Element)GSXML.getChildByTagName(message, GSXML.REQUEST_ELEM);
22
23 String subaction = request.getAttribute(GSXML.SUBACTION_ATT);
24 String lang = request.getAttribute(GSXML.LANG_ATT);
25 // get the param list
26 Element cgi_param_list = (Element)GSXML.getChildByTagName(request, GSXML.PARAM_ELEM+GSXML.LIST_MODIFIER);
27 HashMap params = GSXML.extractParams(cgi_param_list, false);
28
29 Element page = doc_.createElement(GSXML.PAGE_ELEM);
30 page.setAttribute(GSXML.LANG_ATT, lang);
31
32 // add the page extra stuff from message
33 page.appendChild(doc_.importNode(GSXML.getChildByTagName(message, GSXML.PAGE_EXTRA_ELEM), true));
34
35 String coll = (String)params.get(GSCGI.COLLECTION_ARG);
36
37 String to = "";
38 if (coll!=null && !coll.equals("")) {
39 to = coll;
40 }
41
42 Element mr_request_message = doc_.createElement(GSXML.MESSAGE_ELEM);
43 Element mr_request = GSXML.createBasicRequest(doc_, GSXML.REQUEST_TYPE_SYSTEM, to, lang);
44 mr_request_message.appendChild(mr_request);
45
46 Element system = doc_.createElement(GSXML.SYSTEM_ELEM);
47 mr_request.appendChild(system);
48
49 // will need to change the following if can do more than one system request at once
50 if (subaction.equals("c")) { // configure
51 system.setAttribute(GSXML.TYPE_ATT, GSXML.SYSTEM_TYPE_CONFIGURE);
52 String info = (String)params.get(GSCGI.STATUS_SUBSET_ARG);
53 system.setAttribute(GSXML.SYSTEM_SUBSET_ATT, info);
54
55 } else {
56 String name = (String)params.get(GSCGI.STATUS_MODULE_NAME_ARG);
57 String type = (String)params.get(GSCGI.STATUS_MODULE_TYPE_ARG);
58
59 system.setAttribute(GSXML.SYSTEM_MODULE_NAME_ATT, name);
60 system.setAttribute(GSXML.SYSTEM_MODULE_TYPE_ATT, type);
61
62 if (subaction.equals("d")) { // delete
63 system.setAttribute(GSXML.TYPE_ATT, GSXML.SYSTEM_TYPE_DEACTIVATE);
64
65 } else if (subaction.equals("a")) { // add
66 system.setAttribute(GSXML.TYPE_ATT, GSXML.SYSTEM_TYPE_ACTIVATE);
67 } else {
68 // create the default response
69 // for now just have an error
70 System.err.println("SystemAction error: bad subaction type");
71 return null;
72 }
73 }
74
75 Element response_message = mr_.process(mr_request_message);
76
77 page.appendChild(GSXML.duplicateWithNewName(doc_, (Element)GSXML.getChildByTagName(response_message, GSXML.RESPONSE_ELEM), GSXML.PAGE_RESPONSE_ELEM, true));
78
79 // check that the stylesheet is present - cant output the page without one.
80 String stylesheet = GSFile.stylesheetFile(config_, "system.xsl");
81 if (stylesheet==null) {
82 System.err.println("SystemAction Error: system stylesheet not found!");
83 return page;
84 }
85 Document style_doc = converter_.getDOM(new File(stylesheet));
86 GSXSLT.absoluteIncludePaths(style_doc, config_);
87 return (Element)transformer_.transform(style_doc, page);
88
89
90 }
91
92}
Note: See TracBrowser for help on using the repository browser.