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

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

Adding UserContext to replace the use of lang and uid

  • Property svn:keywords set to Author Date Id Revision
File size: 3.2 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 result.appendChild(GSXML.duplicateWithNewName(this.doc, (Element) GSXML.getChildByTagName(response_message, GSXML.RESPONSE_ELEM), GSXML.RESPONSE_ELEM, true));
108 return result;
109
110 }
111
112}
Note: See TracBrowser for help on using the repository browser.