135 lines
3.3 KiB
Java
135 lines
3.3 KiB
Java
|
/**
|
||
|
*
|
||
|
*/
|
||
|
package org.gcube.portlets.user.workspace;
|
||
|
|
||
|
import static org.gcube.resources.discovery.icclient.ICFactory.clientFor;
|
||
|
import static org.gcube.resources.discovery.icclient.ICFactory.queryFor;
|
||
|
|
||
|
import java.io.File;
|
||
|
import java.io.FileOutputStream;
|
||
|
import java.io.IOException;
|
||
|
import java.io.InputStream;
|
||
|
import java.net.URL;
|
||
|
import java.util.List;
|
||
|
|
||
|
import org.apache.commons.io.IOUtils;
|
||
|
import org.apache.log4j.Logger;
|
||
|
import org.gcube.common.resources.gcore.ServiceEndpoint;
|
||
|
import org.gcube.common.resources.gcore.ServiceEndpoint.AccessPoint;
|
||
|
import org.gcube.common.scope.api.ScopeProvider;
|
||
|
import org.gcube.resources.discovery.client.api.DiscoveryClient;
|
||
|
import org.gcube.resources.discovery.client.queries.impl.XQuery;
|
||
|
|
||
|
/**
|
||
|
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
||
|
* @Jun 26, 2013
|
||
|
*
|
||
|
*/
|
||
|
public class UriResolverReaderParameter {
|
||
|
|
||
|
//Base Address
|
||
|
String uri = "";
|
||
|
//Query URL parameter
|
||
|
String parameter = "";
|
||
|
private String uriRequest = "";
|
||
|
|
||
|
public static Logger log = Logger.getLogger(UriResolverReaderParameter.class);
|
||
|
|
||
|
|
||
|
/**
|
||
|
* @throws Exception
|
||
|
*
|
||
|
*/
|
||
|
public UriResolverReaderParameter() throws Exception {
|
||
|
|
||
|
ScopeProvider.instance.set("/gcube/devsec");
|
||
|
|
||
|
XQuery query = queryFor(ServiceEndpoint.class);
|
||
|
|
||
|
query.addCondition("$resource/Profile/Name/text() eq 'HTTP-URI-Resolver'").setResult("$resource/Profile/AccessPoint");
|
||
|
|
||
|
DiscoveryClient<AccessPoint> client = clientFor(AccessPoint.class);
|
||
|
|
||
|
List<AccessPoint> endpoints = client.submit(query);
|
||
|
|
||
|
if (endpoints.size() == 0)
|
||
|
throw new Exception("No Resolver available");
|
||
|
|
||
|
//Base Address
|
||
|
// System.out.println(endpoints.get(0).address());
|
||
|
|
||
|
uri = endpoints.get(0)!=null?endpoints.get(0).address():"";
|
||
|
|
||
|
if(endpoints.get(0)!=null){
|
||
|
|
||
|
parameter = endpoints.get(0).propertyMap()!=null?endpoints.get(0).propertyMap().get("parameter").value():"";
|
||
|
}
|
||
|
|
||
|
uriRequest = uri+"?"+parameter;
|
||
|
|
||
|
|
||
|
//Query URL parameter
|
||
|
// System.out.println(endpoints.get(0).propertyMap().get("parameter").value());
|
||
|
|
||
|
}
|
||
|
|
||
|
public InputStream resolve(String smp) throws IOException{
|
||
|
String query = uriRequest + "="+smp;
|
||
|
|
||
|
URL url = new URL(query);
|
||
|
|
||
|
return url.openStream();
|
||
|
}
|
||
|
|
||
|
|
||
|
/**
|
||
|
*
|
||
|
* @return Base Address of Uri Resolver
|
||
|
*/
|
||
|
public String getUri() {
|
||
|
return uri;
|
||
|
}
|
||
|
|
||
|
|
||
|
/**
|
||
|
*
|
||
|
* @return Query URL parameter of Uri Resolver
|
||
|
*/
|
||
|
public String getParameter() {
|
||
|
return parameter;
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public String toString() {
|
||
|
StringBuilder builder = new StringBuilder();
|
||
|
builder.append("UriResolverReaderParameter [uri=");
|
||
|
builder.append(uri);
|
||
|
builder.append(", parameter=");
|
||
|
builder.append(parameter);
|
||
|
builder.append("]");
|
||
|
return builder.toString();
|
||
|
}
|
||
|
|
||
|
|
||
|
public static void main(String[] args) throws Exception {
|
||
|
log.trace(new UriResolverReaderParameter());
|
||
|
|
||
|
UriResolverReaderParameter uriResolver = new UriResolverReaderParameter();
|
||
|
InputStream is = uriResolver.resolve("smp://Wikipedia_logo_silver.png?5ezvFfBOLqaqBlwCEtAvz4ch5BUu1ag3yftpCvV+gayz9bAtSsnO1/sX6pemTKbDe0qbchLexXeWgGcJlskYE8td9QSDXSZj5VSl9kdN9SN0/LRYaWUZuP4Q1J7lEiwkU4GKPsiD6PDRVcT4QAqTEy5hSIbr6o4Y");
|
||
|
|
||
|
File file = new File("test.png");
|
||
|
|
||
|
FileOutputStream out = new FileOutputStream(file);
|
||
|
|
||
|
|
||
|
IOUtils.copy(is, out);
|
||
|
is.close();
|
||
|
|
||
|
out.close();
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
}
|