Mercurial > hg > eSciDocImport
diff src/de/mpiwg/itgroup/eSciDoc/echoObjects/ECHOObject.java @ 0:c6929e63b0b8
first import
author | dwinter |
---|---|
date | Wed, 24 Nov 2010 16:52:07 +0100 |
parents | |
children | 58b52df9763c |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/de/mpiwg/itgroup/eSciDoc/echoObjects/ECHOObject.java Wed Nov 24 16:52:07 2010 +0100 @@ -0,0 +1,95 @@ +package de.mpiwg.itgroup.eSciDoc.echoObjects; + +import java.io.IOException; +import java.io.InputStream; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.Properties; + + +import org.apache.http.HttpResponse; +import org.apache.http.client.HttpClient; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.impl.client.DefaultHttpClient; +import org.apache.log4j.Logger; +import org.apache.xmlrpc.XmlRpcException; +import org.apache.xmlrpc.client.XmlRpcClient; +import org.apache.xmlrpc.client.XmlRpcClientConfigImpl; + +import de.mpiwg.itgroup.eSciDoc.Tools.EScidocBasicHandler; +import de.mpiwg.itgroup.metadataManager.pid.PidGenerator; + +public class ECHOObject { + Logger logger = Logger.getRootLogger(); + public String CMM; // to be overwritten oder initialized with the CMM of this model. + public String name; + public String echoUrl; + public String pid; + public String metadataMananagerUrl; + public String context; + public String description =""; + + public ECHOObject() throws IOException{ + Properties echoProperties = new Properties(); + echoProperties.load(getClass().getResourceAsStream("/de/mpiwg/itgroup/eSciDoc/config/echo.properties")); + + metadataMananagerUrl = (String) echoProperties.get("metaDataManager"); + + } + + public String getOrCreatePID() throws Exception { + Object[] parameters = new Object[] {}; + + String pid = null; + + //Verbinde mit ECHO + XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl(); + try { + config.setServerURL(new URL(echoUrl)); + } catch (MalformedURLException e1) { + logger.info("PID-Generator: cannot contact"+echoUrl); + pid = null; + } + XmlRpcClient client = new XmlRpcClient(); + client.setConfig(config); + // Hole pid aus ECHO + try { + pid = (String) client.execute("getPID", parameters); + } catch (Exception e) { + logger.info("PID-Generator: cannot contact"+echoUrl); + pid = null; + } + // Falls dort noch keine ist, erzeuge ein neue + if (pid == null) + { + pid = getPid(); + + } + else + logger.info("PID from ECHO:" + pid); + + this.pid=pid; +return pid; +} + + public String getPid() throws Exception, IOException { + String pid; + HttpClient hc = new DefaultHttpClient(); + HttpPost pm = new HttpPost(metadataMananagerUrl+"/PID"); + HttpResponse ret; + try { + ret = hc.execute(pm); + + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + throw new Exception("cannot generate PID"); + } + pid=EScidocBasicHandler.convertStreamToString(ret.getEntity().getContent()); + if (ret.getStatusLine().getStatusCode()>300){ + //TODO define better Exceptions + throw new Exception("cannot generate PID"); + } + return pid; + } +}