Mercurial > hg > eSciDocImport
view src/de/mpiwg/itgroup/eSciDoc/echoObjects/ECHOObject.java @ 3:58b52df9763c
added update functionality if index.meta has changed
author | dwinter |
---|---|
date | Wed, 12 Jan 2011 11:00:14 +0100 |
parents | c6929e63b0b8 |
children |
line wrap: on
line source
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 String eScidocId; public String lastModificationDate; 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; } }