Tweaks init command and init doc submission.
[mkjsf-moved-to-github.git] / src / main / java / com / indexdata / mkjsf / pazpar2 / ServiceProxyExtensions.java
1 package com.indexdata.mkjsf.pazpar2;\r
2 \r
3 import java.io.IOException;\r
4 import java.io.Serializable;\r
5 import java.io.UnsupportedEncodingException;\r
6 \r
7 import javax.enterprise.context.SessionScoped;\r
8 import javax.inject.Inject;\r
9 import javax.inject.Named;\r
10 \r
11 import org.apache.log4j.Logger;\r
12 import org.apache.myfaces.custom.fileupload.UploadedFile;\r
13 \r
14 import com.indexdata.mkjsf.config.ConfigurationReader;\r
15 import com.indexdata.mkjsf.pazpar2.commands.Pazpar2Commands;\r
16 import com.indexdata.mkjsf.pazpar2.commands.sp.InitDocUpload;\r
17 import com.indexdata.mkjsf.pazpar2.data.InitResponse;\r
18 import com.indexdata.mkjsf.pazpar2.data.ResponseDataObject;\r
19 import com.indexdata.mkjsf.pazpar2.data.ResponseParser;\r
20 import com.indexdata.mkjsf.pazpar2.data.Responses;\r
21 import com.indexdata.mkjsf.pazpar2.sp.auth.ServiceProxyUser;\r
22 import com.indexdata.mkjsf.utils.Utils;\r
23 \r
24 @Named("pz2x") @SessionScoped\r
25 public class ServiceProxyExtensions implements ServiceProxyInterface, Serializable {\r
26     \r
27   private static final long serialVersionUID = 4221824985678758225L;\r
28   private static Logger logger = Logger.getLogger(ServiceProxyExtensions.class);  \r
29   private String initDocFileName = "";\r
30   private String initDocResponse = "";  \r
31   private InitDocUpload initDocUpload; \r
32     \r
33   @Inject ConfigurationReader configurator;  \r
34   @Inject ServiceProxyUser user;    \r
35   @Inject Pz2Bean pz2;\r
36   @Inject Pazpar2Commands pzreq;\r
37   @Inject Responses pzresp;\r
38 \r
39   \r
40   public ServiceProxyExtensions() {\r
41     this.initDocUpload = new InitDocUpload(this);\r
42     // TODO: \r
43     //stateMgr.addStateListener(this);\r
44   }\r
45     \r
46   public void login(String un, String pw) {\r
47     if (user.isAuthenticated() && user.getName().equals(un) && pz2.spClient.checkAuthentication(user)) {\r
48       logger.info("Repeat request from UI to authenticate user. Auth verified for given user name so skipping log-in.");\r
49     } else {\r
50       logger.info("doing un/pw login");\r
51       user.setName(un);\r
52       user.setPassword(pw);\r
53       login("dummy");\r
54     }\r
55   }\r
56 \r
57   @Override\r
58   public String login(String navigateTo) {\r
59     logger.info("doing login by " + user + " using " + pz2 + " and client " + pz2.getSpClient());\r
60     pz2.resetSearchAndRecordCommands();\r
61     pzresp.resetAllSessionData();\r
62     pz2.getSpClient().authenticate(user);    \r
63     return navigateTo;\r
64   }\r
65   \r
66   public void ipAuthenticate (ServiceProxyUser user) {\r
67     if (!user.isIpAuthenticated()) {\r
68       if (user.isAuthenticated()) {\r
69         user.clear();\r
70       }\r
71       pz2.resetSearchAndRecordCommands();\r
72       pzresp.resetAllSessionData();\r
73       pz2.getSpClient().ipAuthenticate(user);\r
74     }\r
75   }\r
76     \r
77   public String getInitDocPath () {\r
78     return pz2.getSpClient().getConfiguration().get("INIT_DOC_PATH");\r
79   }\r
80   \r
81   @Override\r
82   public void setInitFileName(String fileName) {\r
83     this.initDocFileName = fileName;\r
84     \r
85   }\r
86 \r
87   @Override\r
88   public String getInitFileName() {\r
89     return initDocFileName;\r
90   }\r
91 \r
92   @Override\r
93   public ClientCommandResponse postInit() throws UnsupportedEncodingException, IOException {    \r
94     String initDocPath = pz2.getSpClient().getInitDocPaths().get(0);\r
95     logger.info("Paths: " + pz2.getSpClient().getInitDocPaths());\r
96     logger.info("Path: " + initDocPath);\r
97     pz2.resetSearchAndRecordCommands();\r
98     pzresp.resetAllSessionData();\r
99     ClientCommandResponse response = pz2.getSpClient().postInitDoc(initDocPath + getInitFileName());    \r
100     return response;\r
101   }\r
102   \r
103   @Override\r
104   public ClientCommandResponse postInit(byte[] initDoc, boolean includeDebug) throws UnsupportedEncodingException, IOException {    \r
105     pz2.resetSearchAndRecordCommands();\r
106     pzresp.resetAllSessionData();\r
107     ClientCommandResponse response = pz2.getSpClient().postInitDoc(initDoc,includeDebug);    \r
108     return response;\r
109   }\r
110 \r
111   @Override\r
112   public String getInitResponse() {\r
113     return initDocResponse;\r
114   }\r
115   \r
116   public void setUploadedInitDoc (UploadedFile uploadedFile) {\r
117     initDocUpload.setUploadedFile(uploadedFile);\r
118   }\r
119   \r
120   public UploadedFile getUploadedInitDoc () {\r
121     return initDocUpload.getUploadedFile();\r
122   }\r
123   \r
124   public void submitInitDoc () throws IOException {\r
125     HttpResponseWrapper response =  initDocUpload.submit();\r
126     ResponseDataObject responseObject = ResponseParser.getParser().getDataObject(response.getResponseString());\r
127     logger.info("Putting init response to : " + Utils.objectId(pzresp));\r
128     pzresp.put("init", responseObject);\r
129   }\r
130   \r
131   public void setIncludeInitDocDebug(boolean bool) {\r
132     logger.info(Utils.objectId(this) + " setting debug to " + bool);\r
133     initDocUpload.setIncludeDebug(bool);\r
134   }\r
135 \r
136   public boolean getIncludeInitDocDebug() {\r
137     return initDocUpload.getIncludeDebug();\r
138   }\r
139   \r
140   // TODO: Remove when possible\r
141   public InitDocUpload getInitDocUpload () {\r
142     return initDocUpload;\r
143   }\r
144 \r
145   \r
146   \r
147   \r
148 }\r