view gnv-artifacts/src/test/java/de/intevation/gnv/artifacts/GNVArtifactsTestCase.java @ 54:09b4bf848c7b

2009-09-08 Tim Englich <tim.englich@intevation.de> * src/test/java/de/intevation/gnv/artifacts/GNVArtifactsTestCase.java, * src/main/java/de/intevation/gnv/timeseries/TimeSeriesArtifact.java:, * src/main/java/de/intevation/gnv/artifacts/GNVArtifactBase.java: Edited Added Output for Describe to the Artifactimplementation gnv-artifacts/trunk@36 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Tim Englich <tim.englich@intevation.de>
date Tue, 08 Sep 2009 09:14:35 +0000
parents 4d6a82b96059
children f31343d80d53
line wrap: on
line source
/**
 *
 */
package de.intevation.gnv.artifacts;

import java.io.StringWriter;

import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
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 org.apache.log4j.BasicConfigurator;
import org.apache.log4j.Logger;
import org.w3c.dom.Document;

import de.intevation.artifactdatabase.Config;
import de.intevation.artifactdatabase.FactoryBootstrap;
import de.intevation.artifacts.Artifact;
import de.intevation.artifacts.ArtifactFactory;
import de.intevation.gnv.artifacts.context.GNVArtifactContext;
import de.intevation.gnv.artifacts.context.GNVArtifactContextFactory;
import junit.framework.TestCase;

/**
 * @author Tim Englich <tim.englich@intevation.de>
 *
 */
public class GNVArtifactsTestCase extends TestCase {

    /**
     * the logger, used to log exceptions and additonaly information
     */
    private static Logger log = null;
    
    static {
        BasicConfigurator.configure();
        log = Logger.getLogger(GNVArtifactContext.class);
    }
    
    private String configurationFile = "src/test/ressources/GNVArtifactsTestCase_Configuration.xml";
    
    private FactoryBootstrap bootstrap = null;
    /**
     * Constructor
     * @param name
     */
    public GNVArtifactsTestCase(String name) {
        super(name);
    }

    /**
     * @see junit.framework.TestCase#setUp()
     */
    protected void setUp() throws Exception {
        log.debug("GNVArtifactsTestCase.setUp");
        super.setUp();
        log.info(Config.CONFIG_PROPERTY + " ==> "+configurationFile);
        System.setProperty(Config.CONFIG_PROPERTY, configurationFile);
        log.info("Bootstrap wird initialisiert.");
        bootstrap = new FactoryBootstrap();
        bootstrap.boot();
    }
    
    public void testTimeSeriesArtifact(){
        log.debug("GNVArtifactsTestCase.testTimeSeriesArtifact");
        String artefactName = "timeSeries"; 
        ArtifactFactory artifactFactory = this.getArtifactFactory(artefactName);
        assertNotNull(artifactFactory);
        log.debug("TimeSeries-ArtifactFactory is available");
        Artifact artifact = artifactFactory.createArtifact(""+System.currentTimeMillis(),bootstrap.getContext());
        assertNotNull(artifact);
        log.debug("TimeSeries-Artifact is available");
        
        Document indata = this.getDocument();
        Document outData = this.createOutputDocument();
        Document outputData = artifact.describe(bootstrap.getContext());
        this.writeDocument2Log(outputData);
        
        artifact.feed(indata, bootstrap.getContext());
        artifact.advance(outData, bootstrap.getContext());
        outputData = artifact.describe(bootstrap.getContext());
        
        
        
    }
    private Document getDocument(){
        return this.createOutputDocument();
    }
    
    private Document createOutputDocument(){
        try {
            return DocumentBuilderFactory
                .newInstance()
                .newDocumentBuilder()
                .newDocument();
        }
        catch (ParserConfigurationException e) {
            log.error(e,e);
        }
        return null;
    }

    /**
     * @param artefactName
     */
    private ArtifactFactory getArtifactFactory(String artefactName){
        log.debug("GNVArtifactsTestCase.getArtifactFactory");
        ArtifactFactory[] artifactFactories = bootstrap.getArtifactFactories();
        for (int i = 0; i < artifactFactories.length; i++){
            if (artifactFactories[i].getName().equals(artefactName)){
                log.debug("ArtifactFactory wurde gefunden.");
                return artifactFactories[i];
            }
        }
        return null;
    }
    
    protected void writeDocument2Log(Document document){
        try {
            TransformerFactory transformerFactory = TransformerFactory.newInstance();
            Transformer transformer = transformerFactory.newTransformer();
            DOMSource source = new DOMSource(document);
            StringWriter sw = new StringWriter();
            StreamResult result =  new StreamResult(sw);
            transformer.transform(source, result);
            log.debug(sw.getBuffer().toString());
        } catch (TransformerConfigurationException e) {
            log.error(e,e);
        } catch (TransformerFactoryConfigurationError e) {
            log.error(e,e);
        } catch (TransformerException e) {
            log.error(e,e);
        }
    }
    

}

http://dive4elements.wald.intevation.org