[1273] | 1 | package eu.clarin.cmdi.mdservice.action; |
---|
| 2 | |
---|
| 3 | import java.io.BufferedInputStream; |
---|
| 4 | import java.io.BufferedReader; |
---|
| 5 | import java.io.ByteArrayInputStream; |
---|
[1310] | 6 | import java.io.ByteArrayOutputStream; |
---|
| 7 | import java.io.File; |
---|
[1273] | 8 | import java.io.FileInputStream; |
---|
| 9 | import java.io.IOException; |
---|
| 10 | import java.io.InputStream; |
---|
| 11 | import java.io.InputStreamReader; |
---|
[1310] | 12 | import java.io.OutputStream; |
---|
[1273] | 13 | import java.io.OutputStreamWriter; |
---|
[1310] | 14 | import java.net.HttpURLConnection; |
---|
[1273] | 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 | |
---|
[1310] | 23 | import org.w3c.dom.NodeList; |
---|
| 24 | |
---|
[1273] | 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 | |
---|
[1388] | 38 | //private String qid; |
---|
[1273] | 39 | //private String date; |
---|
| 40 | //private String datefrom; |
---|
| 41 | //private String dateto; |
---|
[1388] | 42 | /* |
---|
[1273] | 43 | public String getQid(){ |
---|
| 44 | return qid; |
---|
| 45 | } |
---|
| 46 | public void setQid(String qid){ |
---|
| 47 | this.qid = qid; |
---|
| 48 | } |
---|
[1388] | 49 | */ |
---|
[1273] | 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){ |
---|
[1310] | 79 | hm.put("queryid", getQid()); |
---|
[1273] | 80 | } |
---|
| 81 | |
---|
| 82 | return hm; |
---|
| 83 | |
---|
| 84 | } |
---|
| 85 | public String publish() throws Exception { |
---|
| 86 | |
---|
[1310] | 87 | // find the workspace data |
---|
| 88 | NodeList list = (NodeList) getWorkspace(); |
---|
| 89 | InputStream is = this.DocumentToStream(list.item(0)); |
---|
[1273] | 90 | //xslt transform to request data |
---|
| 91 | MDTransformer transformer = new MDTransformer(); |
---|
| 92 | transformer.setSrcFile(getTargetRequest()); |
---|
| 93 | transformer.setParams(createTransformerParams()); |
---|
[1310] | 94 | InputStream requestStream = transformer.transformXML(is); |
---|
[1273] | 95 | |
---|
[1310] | 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 |
---|
[1388] | 107 | // find out |
---|
[1389] | 108 | //"http://clarin.ids-mannheim.de/vcr/service/virtualcollection"; |
---|
| 109 | String urlstring = Admin.getConfig().getProperty("virtualcollection.uri"); |
---|
[1435] | 110 | String vcrstr = (String)getVcrid();//getQueryVcrid(); |
---|
[1388] | 111 | if (!vcrstr.equals("0")){ |
---|
| 112 | urlstring = urlstring + "/" + vcrstr; |
---|
| 113 | } |
---|
| 114 | //qlist.item(0).get |
---|
| 115 | URL url = new URL(urlstring); |
---|
[1310] | 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"); |
---|
[1275] | 122 | String encoding = new sun.misc.BASE64Encoder().encode("test1@ids-mannheim.de:test1234".getBytes()); |
---|
[1310] | 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", ""); |
---|
[1273] | 130 | |
---|
[1310] | 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); |
---|
[1273] | 148 | |
---|
| 149 | return SUCCESS; |
---|
| 150 | } |
---|
| 151 | |
---|
| 152 | } |
---|