diff src/de/mpiwg/itgroup/eSciDoc/echoObjects/ECHORessource.java @ 8:a844f6948dd8

?nderungen im Walker tools f?r pubman
author dwinter
date Mon, 14 May 2012 09:58:45 +0200
parents 58b52df9763c
children b6cf6462d709
line wrap: on
line diff
--- a/src/de/mpiwg/itgroup/eSciDoc/echoObjects/ECHORessource.java	Sat Jan 15 17:05:29 2011 +0100
+++ b/src/de/mpiwg/itgroup/eSciDoc/echoObjects/ECHORessource.java	Mon May 14 09:58:45 2012 +0200
@@ -1,5 +1,7 @@
 package de.mpiwg.itgroup.eSciDoc.echoObjects;
 
+import java.io.File;
+import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.net.MalformedURLException;
@@ -25,9 +27,23 @@
 import org.apache.http.protocol.BasicHttpContext;
 import org.apache.http.protocol.ExecutionContext;
 import org.apache.http.protocol.HttpContext;
+import org.apache.log4j.Level;
+import org.apache.log4j.Logger;
+import org.jdom.Attribute;
+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 com.sun.org.apache.xalan.internal.xsltc.dom.DOMWSFilter;
+import com.sun.org.apache.xerces.internal.parsers.SAXParser;
 
 import de.mpiwg.itgroup.eSciDoc.Tools.EScidocBasicHandler;
 import de.mpiwg.itgroup.eSciDoc.Tools.EScidocTools;
+import de.mpiwg.itgroup.eSciDoc.utils.eSciDocXmlObject;
 import de.mpiwg.itgroup.metadataManager.pid.DCTransformer;
 
 public class ECHORessource  extends ECHOObject{
@@ -244,4 +260,85 @@
 	}
 
 
+	//  schreibe die escidoc:id in die index.meta
+	
+	public void writeEsciDocIDToIndexMeta(eSciDocXmlObject eSciDocXmlObject) {
+		String txt;
+		try {
+			txt = eSciDocXmlObject.getESciDocObjId();
+			writeEsciDocIDToIndexMeta(txt);
+		} catch (JDOMException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}
+		
 	}
+	public void writeEsciDocIDToIndexMeta(String objid) {
+		String driType="escidoc-test";
+		String txt;
+		Element result;
+		try {
+			txt = objid;
+			
+			URL url = new URL(metaData);
+			InputStream is = url.openStream();
+			Document doc = new SAXBuilder().build(is);
+			XPath xp = XPath.newInstance("//meta/dri[@type=\""+driType+"\"]");
+			result = (Element)xp.selectSingleNode(doc);
+			
+			if (result!=null){
+				result.setText(txt);
+			} else {
+				XPath xpMeta = XPath.newInstance("//meta");
+				Element metaTag = (Element)xpMeta.selectSingleNode(doc);
+				
+				if (metaTag==null){
+					return;
+				} else {
+					
+					Element dri = new Element("dri");
+					dri.setAttribute("type",driType);
+					dri.setText(txt);
+					metaTag.addContent(dri);
+				}
+			}
+			
+			XMLOutputter xo = new XMLOutputter();
+			
+			
+			
+			//String outpath ="/tmp/out/"+archivePath;
+			String outpath =archivePath;
+			//File parent = new File(outpath);
+			//parent.mkdirs();
+			
+			File oldFile = new File(outpath+"/index.meta");
+			boolean f = oldFile.renameTo(new File(outpath+"/index.meta.old"));
+			if (!f){
+				Logger lg = Logger.getLogger("transformerLogger");
+				lg.error("cannot: write "+outpath+"/index.meta.old");
+				lg.error("cannot: but will proceed to write new index.meta");
+				
+			}
+			FileOutputStream out = new FileOutputStream(outpath+"/index.meta");
+			xo.output(doc, out);
+			
+			Logger lg = Logger.getLogger("transformerLogger");
+			lg.info("changed:"+outpath+" -- added escidoc: "+txt);
+			out.close();
+			
+		} catch (MalformedURLException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		} catch (JDOMException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		} catch (IOException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}
+		
+	
+	}
+
+	}