diff src/de/mpiwg/itgroup/metadataManager/client/MetadataClient.java @ 1:2267d8c80a99

intial
author dwinter
date Sun, 23 Oct 2011 21:29:45 +0200
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/de/mpiwg/itgroup/metadataManager/client/MetadataClient.java	Sun Oct 23 21:29:45 2011 +0200
@@ -0,0 +1,123 @@
+package de.mpiwg.itgroup.metadataManager.client;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.StringReader;
+import java.io.UnsupportedEncodingException;
+import java.net.URI;
+import java.net.URISyntaxException;
+
+import javax.xml.parsers.SAXParser;
+
+import org.apache.http.HttpEntity;
+import org.apache.http.HttpResponse;
+import org.apache.http.client.ClientProtocolException;
+import org.apache.http.client.HttpClient;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.client.utils.URIUtils;
+import org.apache.http.impl.client.DefaultHttpClient;
+import org.jdom.Document;
+import org.jdom.Element;
+import org.jdom.JDOMException;
+import org.jdom.input.SAXBuilder;
+import org.jdom.output.XMLOutputter;
+import org.jdom.xpath.XPath;
+import org.json.JSONObject;
+import org.json.JSONTokener;
+
+import org.restlet.data.MediaType;
+import org.restlet.representation.Representation;
+import org.restlet.resource.ClientResource;
+
+public class MetadataClient {
+
+	private String serverUrl;
+
+	public MetadataClient(String string) {
+		serverUrl = string;
+		
+	}
+ 
+	public String replaceBIB(String idOfObject, String newBibTag, boolean save) throws URISyntaxException, ClientProtocolException, IOException {
+		
+		String newIM=null;
+		SAXBuilder sb = new SAXBuilder();		
+		
+		String url = serverUrl+"indexMeta/permanent/library/"+idOfObject;
+		
+		HttpClient httpclient = new DefaultHttpClient();
+	
+		HttpGet httpget = new HttpGet(new URI(url));
+		
+		HttpResponse response = httpclient.execute(httpget);
+		HttpEntity entity = response.getEntity();
+		
+		try {
+			if (entity != null) {
+			    InputStream instream = (InputStream) entity.getContent();
+			    Document dom = sb.build(instream);
+
+			    XPath xp =XPath.newInstance("//bib");
+			    Element bibNode = (Element)xp.selectSingleNode(dom);
+			    
+			    Document doc2 = sb.build(new StringReader(newBibTag));
+			    Element newBibRoot=doc2.getRootElement();
+			   
+			    Element bibPar=(Element) bibNode.getParent();
+			    bibPar.removeContent(bibNode);
+			    bibPar.addContent((Element) newBibRoot.clone());
+			
+			    XMLOutputter op = new XMLOutputter();
+			    newIM = op.outputString(dom);
+			    if (save){
+			    	//TODO save the new XML
+			    }
+			}
+		} catch (IllegalStateException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		} catch (JDOMException e) {
+			
+			System.err.println("Can't handle:"+ idOfObject);
+			e.printStackTrace();
+			
+		}
+		return newIM;
+	}
+
+	public String addContext(String indexMeta, String link, String name, Boolean save) throws IOException {
+		SAXBuilder sb = new SAXBuilder();	
+		InputStream im = new ByteArrayInputStream(indexMeta.getBytes("utf-8"));
+		try {
+			Document dom =sb.build(im);
+			
+			XPath xp = XPath.newInstance("//meta");
+			Element metaNode=(Element) xp.selectSingleNode(dom);
+			
+			Element  contextElement = new Element("context");
+			
+			Element  linkElement = new Element("link");
+			linkElement.setText(link);
+			Element  nameElement = new Element("name");
+			nameElement.setText(name);
+			contextElement.addContent(linkElement);
+			contextElement.addContent(nameElement);
+			
+			metaNode.addContent(contextElement);
+			
+			  XMLOutputter op = new XMLOutputter();
+			  String newIM = op.outputString(dom);
+			
+			  if (save){
+			    	//TODO save the new XML
+			    }
+			return newIM;
+		} catch (JDOMException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+			return null;
+		}
+	}
+
+}