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