Mercurial > hg > MetaDataManager
diff src/de/mpiwg/itgroup/metadataManager/pid/DCTransformer.java @ 0:90a19cbda471
first ingest
author | dwinter |
---|---|
date | Wed, 24 Nov 2010 16:54:52 +0100 |
parents | |
children | 38d823b66aff |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/de/mpiwg/itgroup/metadataManager/pid/DCTransformer.java Wed Nov 24 16:54:52 2010 +0100 @@ -0,0 +1,179 @@ +package de.mpiwg.itgroup.metadataManager.pid; + +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.StringReader; +import java.io.UnsupportedEncodingException; +import java.net.MalformedURLException; +import java.net.URL; + +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; + +import org.apache.log4j.Logger; +import org.apache.xmlrpc.XmlRpcException; +import org.apache.xmlrpc.client.XmlRpcClient; +import org.apache.xmlrpc.client.XmlRpcClientConfigImpl; +import org.jdom.Document; +import org.jdom.Element; +import org.jdom.JDOMException; +import org.jdom.input.SAXBuilder; +import org.jdom.xpath.XPath; + +import org.xml.sax.InputSource; + + + +public class DCTransformer { + static public String MPIWG = "http://www.mpiwg-berlin.mpg.de/ns/mpiwg"; + + public static String converterProvider = "http://127.0.0.1:28080/metadataMain"; + private String metaDataLink; + private Logger logger = Logger.getLogger("transformerLogger"); + + public DCTransformer(String metaDataLink) { + + this.metaDataLink=metaDataLink; + } + + public Element getDCFromIndexMeta() { + //Verbinde mit metadataprovider + XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl(); + + + try { + config.setServerURL(new URL(converterProvider)); + } catch (MalformedURLException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + return null; + } + + XmlRpcClient client = new XmlRpcClient(); + client.setConfig(config); + Object[] params = new Object[] { metaDataLink }; + + String result; + try { + result = (String) client.execute("getDCFormatted", params); + } catch (XmlRpcException e) { + // TODO Auto-generated catch block + logger.error("CANNOT connector to:"+converterProvider); + e.printStackTrace(); + return null; + } + logger.debug("dC:"+result); + + SAXBuilder db = new SAXBuilder(); + InputStream resultStream; + try { + resultStream = new ByteArrayInputStream(result.getBytes("utf-8")); + } catch (UnsupportedEncodingException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + return null; + } + Document dc; + try { + dc = db.build(resultStream); + } catch (JDOMException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + return null; + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + return null; + } + + return dc.getRootElement(); + } + + public Element getContentOfMetaTag() { + SAXBuilder db = new SAXBuilder(); + + Document dc; + try { + dc = db.build(metaDataLink); + } catch (JDOMException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + return null; + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + return null; + } + + Element retElement = null; + try { + XPath xp = getXPath("//meta"); + retElement = (Element) xp.selectSingleNode(dc); + + } catch (JDOMException e) { + //nothing to be done + } + if (retElement==null) { // versuche noch mal mit namespace + try { + + XPath xp = getXPath("//mpiwg:meta"); + retElement = (Element) xp.selectSingleNode(dc); + + } catch (JDOMException e) { + //nothing to be done + } + + } + return retElement; + } + + + private XPath getXPath(String xpath) throws JDOMException{ + XPath xpathResources = XPath.newInstance(xpath); + + xpathResources.addNamespace("mpiwg",MPIWG); + + return xpathResources; + } + + public String getImagePathFromIndexMeta() { + SAXBuilder db = new SAXBuilder(); + + Document dc; + try { + dc = db.build(metaDataLink); + } catch (JDOMException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + return null; + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + return null; + } + + Element retElement = null; + try { + XPath xp = getXPath("//texttool/image"); + retElement = (Element) xp.selectSingleNode(dc); + + } catch (JDOMException e) { + //nothing to be done + } + if (retElement==null) { // versuche noch mal mit namespace + try { + XPath xp = getXPath("//mpiwg:texttool/mpiwg:image"); + retElement = (Element) xp.selectSingleNode(dc); + + } catch (JDOMException e) { + //nothing to be done + } + + } + if (retElement==null) + return ""; + return retElement.getTextTrim(); + } + +}