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

Last change on this file since 23360 was 23360, checked in by sjb48, 13 years ago

Starting working on new format statement save architecture. This involves a new action, FormatAction, which will be responsible for the XSL transform and will pass the format string to the Collection object via the Message Router,

  • 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.HashMap;
14import java.util.*;
15import java.io.StringReader;
16import org.xml.sax.InputSource;
17import javax.xml.parsers.DocumentBuilder;
18import javax.xml.parsers.DocumentBuilderFactory;
19
20import java.io.*;
21import org.xml.sax.*;
22import javax.xml.parsers.SAXParserFactory;
23import javax.xml.parsers.ParserConfigurationException;
24import javax.xml.parsers.SAXParser;
25
26import java.io.PrintWriter;
27import java.io.StringWriter;
28
29import org.apache.log4j.*;
30
31public class SystemAction extends Action {
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 Element message = this.converter.nodeToElement(message_node);
41
42 // assume only one request
43 Element request = (Element)GSXML.getChildByTagName(message, GSXML.REQUEST_ELEM);
44
45 String subaction = request.getAttribute(GSXML.SUBACTION_ATT);
46 String lang = request.getAttribute(GSXML.LANG_ATT);
47 String uid = request.getAttribute(GSXML.USER_ID_ATT);
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 to = coll;
59 }
60
61 Element mr_request_message = this.doc.createElement(GSXML.MESSAGE_ELEM);
62 Element mr_request = GSXML.createBasicRequest(this.doc, GSXML.REQUEST_TYPE_SYSTEM, to, lang, uid);
63 mr_request_message.appendChild(mr_request);
64
65 Element system = this.doc.createElement(GSXML.SYSTEM_ELEM);
66 mr_request.appendChild(system);
67
68 // will need to change the following if can do more than one system request at once
69 if (subaction.equals("c")) { // configure
70 system.setAttribute(GSXML.TYPE_ATT, GSXML.SYSTEM_TYPE_CONFIGURE);
71 String info = (String)params.get(GSParams.SYSTEM_SUBSET);
72 system.setAttribute(GSXML.SYSTEM_SUBSET_ATT, info);
73 }
74 else {
75 String name = (String)params.get(GSParams.SYSTEM_MODULE_NAME);
76 String type = (String)params.get(GSParams.SYSTEM_MODULE_TYPE);
77
78 system.setAttribute(GSXML.SYSTEM_MODULE_NAME_ATT, name);
79 system.setAttribute(GSXML.SYSTEM_MODULE_TYPE_ATT, type);
80
81 if (subaction.equals("d")) { // delete
82 system.setAttribute(GSXML.TYPE_ATT, GSXML.SYSTEM_TYPE_DEACTIVATE);
83
84 } else if (subaction.equals("a")) { // add
85 system.setAttribute(GSXML.TYPE_ATT, GSXML.SYSTEM_TYPE_ACTIVATE);
86 } else {
87 // create the default response
88 // for now just have an error
89 logger.error("bad subaction type");
90 Element page_response = this.doc.createElement(GSXML.RESPONSE_ELEM);
91 result.appendChild(page_response);
92
93 return result;
94 }
95 }
96
97 Node response_message = this.mr.process(mr_request_message);
98
99 result.appendChild(GSXML.duplicateWithNewName(this.doc, (Element)GSXML.getChildByTagName(response_message, GSXML.RESPONSE_ELEM), GSXML.RESPONSE_ELEM, true));
100 return result;
101
102 }
103
104}
Note: See TracBrowser for help on using the repository browser.