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

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

Removing a bunch of unneeded imports

  • Property svn:keywords set to Author Date Id Revision
File size: 4.1 KB
Line 
1package org.greenstone.gsdl3.action;
2
3import org.greenstone.gsdl3.util.*;
4
5// XML classes
6import org.w3c.dom.Node;
7import org.w3c.dom.Element;
8
9// other java stuff
10import java.util.*;
11
12import java.io.Serializable;
13
14import java.io.PrintWriter;
15import java.io.Serializable;
16import java.io.StringWriter;
17
18import org.apache.log4j.*;
19
20public class SystemAction extends Action
21{
22
23 static Logger logger = Logger.getLogger(org.greenstone.gsdl3.action.SystemAction.class.getName());
24
25 String tempVal = "";
26
27 /** process a request */
28 public Node process(Node message_node)
29 {
30
31 Element message = this.converter.nodeToElement(message_node);
32
33 // assume only one request
34 Element request = (Element) GSXML.getChildByTagName(message, GSXML.REQUEST_ELEM);
35
36 String subaction = request.getAttribute(GSXML.SUBACTION_ATT);
37 UserContext userContext = new UserContext(request);
38 // get the param list
39 Element cgi_param_list = (Element) GSXML.getChildByTagName(request, GSXML.PARAM_ELEM + GSXML.LIST_MODIFIER);
40 HashMap<String, Serializable> params = GSXML.extractParams(cgi_param_list, false);
41
42 Element result = this.doc.createElement(GSXML.MESSAGE_ELEM);
43
44 String coll = (String) params.get(GSParams.SYSTEM_CLUSTER);
45
46 String to = "";
47 if (coll != null && !coll.equals(""))
48 {
49 to = coll;
50 }
51
52 Element mr_request_message = this.doc.createElement(GSXML.MESSAGE_ELEM);
53 Element mr_request = GSXML.createBasicRequest(this.doc, GSXML.REQUEST_TYPE_SYSTEM, to, userContext);
54 mr_request_message.appendChild(mr_request);
55
56 Element system = this.doc.createElement(GSXML.SYSTEM_ELEM);
57 mr_request.appendChild(system);
58
59 // will need to change the following if can do more than one system request at once
60 if (subaction.equals("c"))
61 { // configure
62 system.setAttribute(GSXML.TYPE_ATT, GSXML.SYSTEM_TYPE_CONFIGURE);
63 String info = (String) params.get(GSParams.SYSTEM_SUBSET);
64 system.setAttribute(GSXML.SYSTEM_SUBSET_ATT, info);
65 }
66 else if (subaction.equals("ping")) { // can ping the server or a collection
67 String name = (String) params.get(GSParams.SYSTEM_MODULE_NAME);
68
69 if(name != null && !name.equals("")) {
70 // Pinging a collection (or module) with ?a=s&sa=ping&st=collection&sn=<colName>
71 // is a collection-level (servicecluster/module level) ping
72
73 String type = (String) params.get(GSParams.SYSTEM_MODULE_TYPE);
74 if(type == null || type.equals("")) {
75 type = "collection"; // if the st=collection was omitted, assume collection
76 }
77 // ping action set to moduleType=Collection and moduleName=colName
78 system.setAttribute(GSXML.SYSTEM_MODULE_NAME_ATT, name);
79 system.setAttribute(GSXML.SYSTEM_MODULE_TYPE_ATT, type);
80 system.setAttribute(GSXML.TYPE_ATT, GSXML.SYSTEM_TYPE_PING);
81 } // else SYSTEM_MODULE_NAME given by the "sn" GSParam is null or empty
82 // meaning server-level ping: ?a=s&sa=ping
83
84 system.setAttribute(GSXML.TYPE_ATT, GSXML.SYSTEM_TYPE_PING);
85 }
86 //else if (subaction.equals("is-persistent")){
87 // system.setAttribute(GSXML.TYPE_ATT, GSXML.SYSTEM_TYPE_ISPERSISTENT);
88 //}
89 else
90 {
91 String name = (String) params.get(GSParams.SYSTEM_MODULE_NAME);
92 String type = (String) params.get(GSParams.SYSTEM_MODULE_TYPE);
93
94 system.setAttribute(GSXML.SYSTEM_MODULE_NAME_ATT, name);
95 system.setAttribute(GSXML.SYSTEM_MODULE_TYPE_ATT, type);
96
97 if (subaction.equals("d"))
98 { // delete
99 system.setAttribute(GSXML.TYPE_ATT, GSXML.SYSTEM_TYPE_DEACTIVATE);
100
101 }
102 else if (subaction.equals("a"))
103 { // add
104 system.setAttribute(GSXML.TYPE_ATT, GSXML.SYSTEM_TYPE_ACTIVATE);
105 }
106 else
107 {
108 // create the default response
109 // for now just have an error
110 logger.error("bad subaction type");
111 Element page_response = this.doc.createElement(GSXML.RESPONSE_ELEM);
112 result.appendChild(page_response);
113
114 return result;
115 }
116 }
117
118 Node response_message = this.mr.process(mr_request_message);
119
120 Element response = GSXML.duplicateWithNewName(this.doc, (Element) GSXML.getChildByTagName(response_message, GSXML.RESPONSE_ELEM), GSXML.RESPONSE_ELEM, true);
121 addSiteMetadata(response, userContext);
122 addInterfaceOptions(response);
123
124 result.appendChild(response);
125 return result;
126
127 }
128
129}
Note: See TracBrowser for help on using the repository browser.