view gnv/src/main/java/de/intevation/gnv/util/XSLTransformer.java @ 396:8330c1dbab34

Cleanup imports gnv/trunk@548 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Fri, 15 Jan 2010 20:22:38 +0000
parents 14eecfde4607
children 15ac78a91d1b
line wrap: on
line source
/**
 *
 */
package de.intevation.gnv.util;

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.UnsupportedEncodingException;

import java.util.HashMap;
import java.util.Map;

import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.TransformerFactoryConfigurationError;

import javax.xml.transform.dom.DOMSource;

import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;

import org.apache.log4j.Logger;

import org.w3c.dom.Node;

/**
 * @author Tim Englich <tim.englich@intevation.de>
 * 
 */
public class XSLTransformer {
    /**
     * the logger, used to log exceptions and additonaly information
     */
    private static Logger log = Logger.getLogger(XSLTransformer.class);


    private Map<String, String> params;

    /**
     * Constructor
     */
    public XSLTransformer() {
        super();
    }

    public String transform(Node toTransform, String encoding,
                            String templateFileName) {
        String resultValue = null;
        try {
            //XMLUtils xmlUtils = new XMLUtils();
            Source templateSource = new StreamSource(new File(templateFileName));
            TransformerFactory xformFactory = TransformerFactory.newInstance();
            Transformer transformer = xformFactory
                    .newTransformer(templateSource);

            if (params != null) {
                for(Map.Entry<String, String> entry: params.entrySet()) {
                    transformer.setParameter(entry.getKey(), entry.getValue());
                }
            }

            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            StreamResult scrResult = new StreamResult(baos);
            // log.debug(xmlUtils.writeNode2String(toTransform));
            DOMSource source = new DOMSource(toTransform);
            transformer.transform(source, scrResult);
            resultValue = new String(baos.toByteArray(), encoding);
        } catch (TransformerConfigurationException e) {
            log.error(e, e);
        } catch (UnsupportedEncodingException e) {
            log.error(e, e);
        } catch (TransformerFactoryConfigurationError e) {
            log.error(e, e);
        } catch (TransformerException e) {
            log.error(e, e);
        }

        return resultValue;
    }


    public void addParameter(String name, String value) {
        if (params == null) {
            params = new HashMap<String, String>(3);
        }

        params.put(name, value);
    }
}

http://dive4elements.wald.intevation.org