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();
+	}
+
+}