Renames class, removes obsolete, javadoc
[mkjsf-moved-to-github.git] / src / main / java / com / indexdata / mkjsf / pazpar2 / commands / sp / AuthCommand.java
1 package com.indexdata.mkjsf.pazpar2.commands.sp;\r
2 \r
3 import org.apache.log4j.Logger;\r
4 \r
5 import com.indexdata.mkjsf.pazpar2.ClientCommandResponse;\r
6 import com.indexdata.mkjsf.pazpar2.Pz2Service;\r
7 import com.indexdata.mkjsf.pazpar2.commands.CommandParameter;\r
8 import com.indexdata.mkjsf.pazpar2.commands.Pazpar2Command;\r
9 import com.indexdata.mkjsf.pazpar2.data.ResponseParser;\r
10 import com.indexdata.mkjsf.pazpar2.data.sp.SpResponseDataObject;\r
11 \r
12 /**\r
13  * Represents a Service Proxy <code>auth</code> command, can be accessed by <code>pzreq.sp.auth</code> \r
14  * \r
15  * <p>Authenticates a user against a Pazpar2 Service Proxy</p>\r
16  * \r
17  * @author Niels Erik\r
18  *\r
19  */\r
20 public class AuthCommand extends Pazpar2Command implements ServiceProxyCommand {\r
21 \r
22   private static final long serialVersionUID = 5487611235664162578L;\r
23   private static Logger logger = Logger.getLogger(AuthCommand.class);\r
24 \r
25   public AuthCommand() {\r
26     super("auth");\r
27   }\r
28   \r
29   public SpResponseDataObject run() {\r
30     Pz2Service.get().resetSearchAndRecordCommands();\r
31     Pz2Service.get().getPzresp().getSp().resetAuthAndBeyond(true);\r
32     ClientCommandResponse response = (ClientCommandResponse) Pz2Service.get().getSearchClient().executeCommand(this);      \r
33     String renamedResponse = renameResponseElement(response.getResponseString(), "auth");    \r
34     response.setResponseToParse(renamedResponse);\r
35     SpResponseDataObject responseObject = (SpResponseDataObject) ResponseParser.getParser().getDataObject(response);    \r
36     if (ResponseParser.docTypes.contains(responseObject.getType())) {\r
37       Pz2Service.get().getPzresp().put(getCommandName(), responseObject);\r
38     }\r
39     if (responseObject.unsupportedCommand()) {\r
40       logger.error("auth command does not seem to be supported by this Service Proxy");\r
41     }\r
42     return responseObject;\r
43   }\r
44   \r
45   /**\r
46    * Normalizes the response XML for the benefit of the SAX parser that creates data objects. \r
47    * <p>The parser expects responses to have document element names corresponding to the names of\r
48    * the commands that created the responses.</p>\r
49    * \r
50    * @param responseString\r
51    * @param newName\r
52    * @return\r
53    */\r
54   private String renameResponseElement(String responseString, String newName) {\r
55     responseString = responseString.replace("<response>", "<" + newName + ">");\r
56     responseString = responseString.replace("</response>", "</" + newName + ">");\r
57     return responseString;\r
58   }\r
59 \r
60   /**\r
61    * Sets Service Proxy command parameter <code>action</code>. See Service Proxy documentation for details. \r
62    */\r
63   public void setAction (String action) {\r
64     setParameterInState(new CommandParameter("action","=",action));\r
65   }  \r
66   \r
67   /**\r
68    * Gets parameter value for <code>action</cod>\r
69    */\r
70   public String getAction () {\r
71     return getParameterValue("action");\r
72   }\r
73   \r
74   /**\r
75    * Sets Service Proxy command parameter <code>username</code>. See Service Proxy documentation for details. \r
76    */\r
77   public void setUsername(String username) {\r
78     setParameterInState(new CommandParameter("username","=",username));\r
79   }\r
80   \r
81   /**\r
82    * Gets parameter value for <code>username</cod>\r
83    */\r
84   public String getUsername () {\r
85     return getParameterValue("username");\r
86   }\r
87     \r
88   /**\r
89    * Sets Service Proxy command parameter <code>password</code>. See Service Proxy documentation for details. \r
90    */\r
91   public void setPassword (String password) {\r
92     setParameterInState(new CommandParameter("password","=",password));\r
93   }\r
94   \r
95   /**\r
96    * Gets parameter value for <code>password</cod>\r
97    */\r
98   public String getPassword () {\r
99     return getParameterValue("password");\r
100   }\r
101     \r
102   public AuthCommand copy () {\r
103     AuthCommand newCommand = new AuthCommand();\r
104     for (String parameterName : parameters.keySet()) {\r
105       newCommand.setParameterInState(parameters.get(parameterName).copy());      \r
106     }    \r
107     return newCommand;\r
108   }\r
109 \r
110   @Override\r
111   public ServiceProxyCommand getSp() {\r
112     return this;\r
113   }\r
114 \r
115   @Override\r
116   public boolean spOnly() {\r
117     return true;\r
118   }\r
119 }\r