view src/de/mpiwg/itgroup/eSciDoc/transformer/ECHOTransformer.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 a844f6948dd8
line wrap: on
line source

package de.mpiwg.itgroup.eSciDoc.transformer;

import java.io.InputStream;
import java.util.HashMap;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.log4j.Logger;
import org.jdom.Attribute;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.input.SAXBuilder;
import org.jdom.xpath.XPath;

import de.mpiwg.itgroup.eSciDoc.Tools.EScidocBasicHandler;
import de.mpiwg.itgroup.eSciDoc.Tools.EScidocTools;
import de.mpiwg.itgroup.eSciDoc.echoObjects.ECHOCollection;
import de.mpiwg.itgroup.eSciDoc.echoObjects.ECHOObject;
import de.mpiwg.itgroup.eSciDoc.echoObjects.ECHORessource;
import de.mpiwg.itgroup.eSciDoc.exceptions.TransformerException;
import de.mpiwg.itgroup.eSciDoc.utils.eSciDocXmlObject;
import de.mpiwg.itgroup.metadataManager.pid.DCTransformer;

public class ECHOTransformer implements Transformer {

	private String ECHORESOURCE_TEMPLATE_XML = "/de/mpiwg/itgroup/eSciDoc/xmlTemplates/ECHOResourceTemplate.xml";
	private String ECHOCOLLECTION_TEMPLATE_XML = "/de/mpiwg/itgroup/eSciDoc/xmlTemplates/ECHOCollectionTemplate.xml";

	private Logger logger = Logger.getLogger("transformerLogger");
   // 
   //
	public ECHOTransformer(){
		
	}
	
	public eSciDocXmlObject transform(ECHOObject obj) throws TransformerException {
		
		try{
		if (obj.pid==null)
			return null;
		
		
	
		eSciDocXmlObject eSciDocObj = null;
		if (ECHORessource.class.isInstance(obj)){
			
			eSciDocObj = new eSciDocXmlObject(obj.pid,
					getClass().getResourceAsStream(ECHORESOURCE_TEMPLATE_XML));
			
			eSciDocObj.setContext(obj.context);
			
			eSciDocObj.addWebUrl(obj.echoUrl);
			
				eSciDocObj.setContentModel(obj.CMM);
				
				String ft = ((ECHORessource)obj).fullText;
				if ((ft!=null) && !ft.equals("")){
					eSciDocObj.addFullText(ft);
				}
				
				//TODO braucht man das?
				eSciDocObj.addOrigUrlToMPIWGMetaData(((ECHORessource)obj).metaData);
		
				DCTransformer transf = new DCTransformer(((ECHORessource)obj).metaData);
				Element mdDc = transf.getDCFromIndexMeta();
				if (mdDc!=null){
					eSciDocObj.insertDC(mdDc);
					}
				else {
					logger.debug(((ECHORessource)obj).metaData);
					HashMap<String, String> dc = new HashMap<String, String>();
					dc.put("title", obj.name); // ersatzweise den name aus der echo ressource
					
					eSciDocObj.insertDC(dc);
				}
				
				//add description to dc metadata
				
			
				HashMap<String, String> dc = new HashMap<String, String>();
				dc.put("description", obj.description); 
				
				eSciDocObj.insertDC(dc);
				
			
				Element metaData = transf.getContentOfMetaTag();
				
				eSciDocObj.insertMeta(metaData);
				
				eSciDocObj.addDisplayUrl(((ECHORessource)obj).link);
				
				eSciDocObj.addIndexMetaUrl(((ECHORessource)obj).metaData);
				
				eSciDocObj.addArchiveFolderPath(((ECHORessource)obj).archivePath);
				
				eSciDocObj.addImageFolderPath(((ECHORessource)obj).getImageFolderPath());
			
				
		}
		if (ECHOCollection.class.isInstance(obj)){
			eSciDocObj = new eSciDocXmlObject(obj.pid,
					getClass().getResourceAsStream(ECHOCOLLECTION_TEMPLATE_XML));
			
			eSciDocObj.addWebUrl(obj.echoUrl);
			
			eSciDocObj.setContentModel(obj.CMM);
			HashMap<String, String> dc = new HashMap<String, String>();
			dc.put("title", obj.name); // ersatzweise den name aus der echo ressource
			dc.put("description", obj.description); 
			
		
			
			eSciDocObj.insertDC(dc);
		}
		return eSciDocObj;
		} catch (Exception e){
			throw new TransformerException();
		}
	}
	

}