1 | package eu.clarin.cmdi.mdservice.action; |
---|
2 | |
---|
3 | import java.io.BufferedReader; |
---|
4 | import java.io.InputStream; |
---|
5 | import java.io.InputStreamReader; |
---|
6 | import java.io.OutputStreamWriter; |
---|
7 | import java.net.HttpURLConnection; |
---|
8 | import java.net.URL; |
---|
9 | import java.net.URLConnection; |
---|
10 | import org.w3c.dom.NodeList; |
---|
11 | |
---|
12 | import eu.clarin.cmdi.mdservice.internal.Utils; |
---|
13 | import eu.clarin.cmdi.mdservice.internal.Cache; |
---|
14 | import eu.clarin.cmdi.mdservice.internal.MDTransformer; |
---|
15 | import eu.clarin.cmdi.mdservice.internal.Utils; |
---|
16 | |
---|
17 | /** |
---|
18 | * |
---|
19 | * |
---|
20 | */ |
---|
21 | public class VirtualCollectionProxyAction extends WorkspaceAction { |
---|
22 | |
---|
23 | private static final long serialVersionUID = 1L; |
---|
24 | |
---|
25 | //private String proxy_key = "virtual_collection"; |
---|
26 | |
---|
27 | //private String qid; |
---|
28 | //private String date; |
---|
29 | //private String datefrom; |
---|
30 | //private String dateto; |
---|
31 | /* |
---|
32 | public String getQid(){ |
---|
33 | return qid; |
---|
34 | } |
---|
35 | public void setQid(String qid){ |
---|
36 | this.qid = qid; |
---|
37 | } |
---|
38 | */ |
---|
39 | //@Override |
---|
40 | protected void initialize(){ |
---|
41 | //setFormat("VC"); |
---|
42 | } |
---|
43 | |
---|
44 | @Override |
---|
45 | public String getFullFormat() { |
---|
46 | return "profile2" + getFormat(); |
---|
47 | } |
---|
48 | |
---|
49 | //@Override |
---|
50 | //public String getProxyKey() { |
---|
51 | // return proxy_key; |
---|
52 | //} |
---|
53 | |
---|
54 | public String getBaseURI() { |
---|
55 | String uri = "file:/" + Cache.getCache().getCacheIndexPath(); |
---|
56 | return uri; |
---|
57 | } |
---|
58 | /* |
---|
59 | @Override |
---|
60 | public HashMap<String,String> createTransformerParams(){ |
---|
61 | |
---|
62 | HashMap<String,String> hm = new HashMap<String,String>(); |
---|
63 | |
---|
64 | if (getFullFormat() != null){ |
---|
65 | hm.put("format", getFullFormat()); |
---|
66 | } |
---|
67 | if (getQid() != null){ |
---|
68 | hm.put("queryid", getQid()); |
---|
69 | } |
---|
70 | |
---|
71 | return hm; |
---|
72 | |
---|
73 | } |
---|
74 | */ |
---|
75 | public String publish() throws Exception { |
---|
76 | |
---|
77 | // find the workspace data |
---|
78 | NodeList list = (NodeList) getWorkspaceData(); |
---|
79 | InputStream is = Utils.document2Stream(list.item(0)); |
---|
80 | //xslt transform to request data |
---|
81 | MDTransformer transformer = new MDTransformer(); |
---|
82 | transformer.setSrcFile(this.getTargetProxy().getTargetRequest()); |
---|
83 | transformer.setParams(getParams()); |
---|
84 | //transformer.setParams(createTransformerParams()); |
---|
85 | InputStream requestStream = transformer.transformXML(is); |
---|
86 | |
---|
87 | java.io.Writer writer = new java.io.StringWriter(); |
---|
88 | char[] buffer = new char[1024]; |
---|
89 | |
---|
90 | java.io.Reader reader = new BufferedReader( |
---|
91 | new InputStreamReader(requestStream, "UTF-8")); |
---|
92 | int n; |
---|
93 | while ((n = reader.read(buffer)) != -1) { |
---|
94 | writer.write(buffer, 0, n); |
---|
95 | } |
---|
96 | |
---|
97 | //create connection and post request data |
---|
98 | // find out |
---|
99 | //"http://clarin.ids-mannheim.de/vcr/service/virtualcollection"; |
---|
100 | String urlstring = Utils.getConfig().getProperty("virtualcollection.uri"); |
---|
101 | String vcrstr = (String)getVcrid();//getQueryVcrid(); |
---|
102 | if (!vcrstr.equals("0")){ |
---|
103 | urlstring = urlstring + "/" + vcrstr; |
---|
104 | } |
---|
105 | //qlist.item(0).get |
---|
106 | URL url = new URL(urlstring); |
---|
107 | String charset = "UTF-8"; |
---|
108 | URLConnection urlconn = url.openConnection(); |
---|
109 | HttpURLConnection conn = (HttpURLConnection) urlconn; |
---|
110 | conn.setDoOutput(true); |
---|
111 | conn.setDoInput(true); |
---|
112 | conn.setRequestMethod("POST"); |
---|
113 | String encoding = new sun.misc.BASE64Encoder().encode("test1@ids-mannheim.de:test1234".getBytes()); |
---|
114 | conn.setRequestProperty("Authorization", "Basic " + encoding); |
---|
115 | conn.setRequestProperty("Content-Type", "text/xml;charset=" + charset);//; charset=utf-8"); |
---|
116 | conn.setRequestProperty("Accept-Charset", charset); |
---|
117 | //System.setProperty("http.keepAlive", "false"); |
---|
118 | //conn.setRequestMethod("GET"); |
---|
119 | //conn("Expect", "100-continue"); |
---|
120 | //System.setProperty("http.agent", ""); |
---|
121 | |
---|
122 | OutputStreamWriter out = new OutputStreamWriter( |
---|
123 | conn.getOutputStream()); |
---|
124 | out.write(writer.toString()); |
---|
125 | out.flush(); |
---|
126 | out.close(); |
---|
127 | |
---|
128 | InputStream responseStream; |
---|
129 | |
---|
130 | Integer respCode = conn.getResponseCode(); |
---|
131 | if (respCode == 200 || respCode == 201) { |
---|
132 | responseStream = conn.getInputStream(); |
---|
133 | //conn.getContent(); |
---|
134 | } else { |
---|
135 | responseStream = conn.getErrorStream(); |
---|
136 | } |
---|
137 | |
---|
138 | setResultStream(responseStream); |
---|
139 | |
---|
140 | return SUCCESS; |
---|
141 | } |
---|
142 | |
---|
143 | } |
---|