source: main/trunk/greenstone3/src/java/org/greenstone/gsdl3/action/SystemAction.java@ 25481

Last change on this file since 25481 was 25481, checked in by kjdon, 12 years ago

adding some extra info to the page to keep it in line with other action responses.

  • Property svn:keywords set to Author Date Id Revision
File size: 3.3 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.*;
14import java.io.StringReader;
15import org.xml.sax.InputSource;
16import javax.xml.parsers.DocumentBuilder;
17import javax.xml.parsers.DocumentBuilderFactory;
18
19import java.io.*;
20import org.xml.sax.*;
21import javax.xml.parsers.SAXParserFactory;
22import javax.xml.parsers.ParserConfigurationException;
23import javax.xml.parsers.SAXParser;
24
25import java.io.PrintWriter;
26import java.io.StringWriter;
27
28import org.apache.log4j.*;
29
30public class SystemAction extends Action
31{
32
33 static Logger logger = Logger.getLogger(org.greenstone.gsdl3.action.SystemAction.class.getName());
34
35 String tempVal = "";
36
37 /** process a request */
38 public Node process(Node message_node)
39 {
40
41 Element message = this.converter.nodeToElement(message_node);
42
43 // assume only one request
44 Element request = (Element) GSXML.getChildByTagName(message, GSXML.REQUEST_ELEM);
45
46 String subaction = request.getAttribute(GSXML.SUBACTION_ATT);
47 UserContext userContext = new UserContext(request);
48 // get the param list
49 Element cgi_param_list = (Element) GSXML.getChildByTagName(request, GSXML.PARAM_ELEM + GSXML.LIST_MODIFIER);
50 HashMap params = GSXML.extractParams(cgi_param_list, false);
51
52 Element result = this.doc.createElement(GSXML.MESSAGE_ELEM);
53
54 String coll = (String) params.get(GSParams.SYSTEM_CLUSTER);
55
56 String to = "";
57 if (coll != null && !coll.equals(""))
58 {
59 to = coll;
60 }
61
62 Element mr_request_message = this.doc.createElement(GSXML.MESSAGE_ELEM);
63 Element mr_request = GSXML.createBasicRequest(this.doc, GSXML.REQUEST_TYPE_SYSTEM, to, userContext);
64 mr_request_message.appendChild(mr_request);
65
66 Element system = this.doc.createElement(GSXML.SYSTEM_ELEM);
67 mr_request.appendChild(system);
68
69 // will need to change the following if can do more than one system request at once
70 if (subaction.equals("c"))
71 { // configure
72 system.setAttribute(GSXML.TYPE_ATT, GSXML.SYSTEM_TYPE_CONFIGURE);
73 String info = (String) params.get(GSParams.SYSTEM_SUBSET);
74 system.setAttribute(GSXML.SYSTEM_SUBSET_ATT, info);
75 }
76 else
77 {
78 String name = (String) params.get(GSParams.SYSTEM_MODULE_NAME);
79 String type = (String) params.get(GSParams.SYSTEM_MODULE_TYPE);
80
81 system.setAttribute(GSXML.SYSTEM_MODULE_NAME_ATT, name);
82 system.setAttribute(GSXML.SYSTEM_MODULE_TYPE_ATT, type);
83
84 if (subaction.equals("d"))
85 { // delete
86 system.setAttribute(GSXML.TYPE_ATT, GSXML.SYSTEM_TYPE_DEACTIVATE);
87
88 }
89 else if (subaction.equals("a"))
90 { // add
91 system.setAttribute(GSXML.TYPE_ATT, GSXML.SYSTEM_TYPE_ACTIVATE);
92 }
93 else
94 {
95 // create the default response
96 // for now just have an error
97 logger.error("bad subaction type");
98 Element page_response = this.doc.createElement(GSXML.RESPONSE_ELEM);
99 result.appendChild(page_response);
100
101 return result;
102 }
103 }
104
105 Node response_message = this.mr.process(mr_request_message);
106
107 Element response = GSXML.duplicateWithNewName(this.doc, (Element) GSXML.getChildByTagName(response_message, GSXML.RESPONSE_ELEM), GSXML.RESPONSE_ELEM, true);
108 addSiteMetadata(response, userContext);
109 addInterfaceOptions(response);
110
111 result.appendChild(response);
112 return result;
113
114 }
115
116}
Note: See TracBrowser for help on using the repository browser.