1 package com.indexdata.mkjsf.pazpar2;
\r
3 import java.io.IOException;
\r
4 import java.io.Serializable;
\r
5 import java.io.UnsupportedEncodingException;
\r
7 import javax.enterprise.context.SessionScoped;
\r
8 import javax.inject.Inject;
\r
9 import javax.inject.Named;
\r
11 import org.apache.log4j.Logger;
\r
12 import org.apache.myfaces.custom.fileupload.UploadedFile;
\r
14 import com.indexdata.mkjsf.config.ConfigurationReader;
\r
15 import com.indexdata.mkjsf.pazpar2.commands.CommandParameter;
\r
16 import com.indexdata.mkjsf.pazpar2.commands.Pazpar2Commands;
\r
17 import com.indexdata.mkjsf.pazpar2.commands.sp.AuthCommand;
\r
18 import com.indexdata.mkjsf.pazpar2.commands.sp.InitDocUpload;
\r
19 import com.indexdata.mkjsf.pazpar2.data.AuthResponse;
\r
20 import com.indexdata.mkjsf.pazpar2.data.ResponseDataObject;
\r
21 import com.indexdata.mkjsf.pazpar2.data.ResponseParser;
\r
22 import com.indexdata.mkjsf.pazpar2.data.Responses;
\r
23 import com.indexdata.mkjsf.pazpar2.sp.auth.ServiceProxyUser;
\r
24 import com.indexdata.mkjsf.utils.Utils;
\r
26 @Named("pz2x") @SessionScoped
\r
27 public class ServiceProxyExtensions implements ServiceProxyInterface, Serializable {
\r
29 private static final long serialVersionUID = 4221824985678758225L;
\r
30 private static Logger logger = Logger.getLogger(ServiceProxyExtensions.class);
\r
31 private String initDocFileName = "";
\r
32 private String initDocResponse = "";
\r
33 private InitDocUpload initDocUpload;
\r
35 @Inject ConfigurationReader configurator;
\r
36 @Inject ServiceProxyUser user;
\r
37 @Inject Pz2Bean pz2;
\r
38 @Inject Pazpar2Commands pzreq;
\r
39 @Inject Responses pzresp;
\r
42 public ServiceProxyExtensions() {
\r
43 this.initDocUpload = new InitDocUpload(this);
\r
45 //stateMgr.addStateListener(this);
\r
49 public void login(String un, String pw) {
\r
50 if (user.isAuthenticated() && user.getName().equals(un) && pz2.spClient.checkAuthentication(user)) {
\r
51 logger.info("Repeat request from UI to authenticate user. Auth verified for given user name so skipping log-in.");
\r
53 logger.info("doing un/pw login");
\r
55 user.setPassword(pw);
\r
63 public String login(String navigateTo) {
\r
64 logger.info("doing login by " + user + " using " + pz2 + " and client " + pz2.getSpClient());
\r
65 pz2.resetSearchAndRecordCommands();
\r
66 pzresp.resetAllSessionData();
\r
67 AuthCommand auth = pzreq.getSp().getAuth();
\r
68 auth.setParametersInState(new CommandParameter("action","=","login"),
\r
69 new CommandParameter("username","=",user.getName()),
\r
70 new CommandParameter("password","=",user.getPassword()));
\r
71 ClientCommandResponse commandResponse = pz2.getSpClient().send(auth);
\r
72 AuthResponse responseObject = (AuthResponse) (ResponseParser.getParser().getDataObject(commandResponse.getResponseString()));
\r
73 if (ResponseParser.docTypes.contains(responseObject.getType())) {
\r
74 pzresp.put(auth.getCommandName(), responseObject);
\r
76 String responseStr = commandResponse.getResponseString();
\r
77 logger.info(responseStr);
\r
78 if (responseStr.contains("FAIL")) {
\r
79 user.credentialsAuthenticationSucceeded(false);
\r
81 user.credentialsAuthenticationSucceeded(true);
\r
87 public void ipAuthenticate (ServiceProxyUser user) {
\r
88 if (!user.isIpAuthenticated()) {
\r
89 if (user.isAuthenticated()) {
\r
92 pz2.resetSearchAndRecordCommands();
\r
93 pzresp.resetAllSessionData();
\r
94 AuthCommand auth = pzreq.getSp().getAuth();
\r
95 auth.setParameterInState(new CommandParameter("action","=","ipAuth"));
\r
96 ClientCommandResponse commandResponse = pz2.getSpClient().send(auth);
\r
97 AuthResponse responseObject = (AuthResponse) (ResponseParser.getParser().getDataObject(commandResponse.getResponseString()));
\r
98 if (ResponseParser.docTypes.contains(responseObject.getType())) {
\r
99 pzresp.put(auth.getCommandName(), responseObject);
\r
101 String responseStr = commandResponse.getResponseString();
\r
102 logger.info(responseStr);
\r
103 if (responseStr.contains("FAIL")) {
\r
104 user.credentialsAuthenticationSucceeded(false);
\r
106 user.credentialsAuthenticationSucceeded(true);
\r
111 public String getInitDocPath () {
\r
112 return pz2.getSpClient().getConfiguration().get("INIT_DOC_PATH");
\r
116 public void setInitFileName(String fileName) {
\r
117 this.initDocFileName = fileName;
\r
122 public String getInitFileName() {
\r
123 return initDocFileName;
\r
127 public ClientCommandResponse postInit() throws UnsupportedEncodingException, IOException {
\r
128 String initDocPath = pz2.getSpClient().getInitDocPaths().get(0);
\r
129 logger.info("Paths: " + pz2.getSpClient().getInitDocPaths());
\r
130 logger.info("Path: " + initDocPath);
\r
131 pz2.resetSearchAndRecordCommands();
\r
132 pzresp.resetAllSessionData();
\r
133 ClientCommandResponse response = pz2.getSpClient().postInitDoc(initDocPath + getInitFileName());
\r
138 public HttpResponseWrapper postInit(byte[] initDoc, boolean includeDebug) throws UnsupportedEncodingException, IOException {
\r
139 pz2.resetSearchAndRecordCommands();
\r
140 pzresp.resetAllSessionData();
\r
141 HttpResponseWrapper response = pz2.getSpClient().postInitDoc(initDoc,includeDebug);
\r
146 public String getInitResponse() {
\r
147 return initDocResponse;
\r
150 public void setUploadedInitDoc (UploadedFile uploadedFile) {
\r
151 initDocUpload.setUploadedFile(uploadedFile);
\r
154 public UploadedFile getUploadedInitDoc () {
\r
155 return initDocUpload.getUploadedFile();
\r
158 public void submitInitDoc () throws IOException {
\r
159 HttpResponseWrapper response = initDocUpload.submit();
\r
160 ResponseDataObject responseObject = ResponseParser.getParser().getDataObject(response.getResponseString());
\r
161 logger.info("Putting init response to : " + Utils.objectId(pzresp));
\r
162 pzresp.put("init", responseObject);
\r
165 public void setIncludeInitDocDebug(boolean bool) {
\r
166 logger.info(Utils.objectId(this) + " setting debug to " + bool);
\r
167 initDocUpload.setIncludeDebug(bool);
\r
170 public boolean getIncludeInitDocDebug() {
\r
171 return initDocUpload.getIncludeDebug();
\r
174 // TODO: Remove when possible
\r
175 public InitDocUpload getInitDocUpload () {
\r
176 return initDocUpload;
\r