WepsRunFileGenerator.java [src/java/m/weps] Revision:   Date:
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package m.weps;

import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.nio.charset.Charset;
import java.util.Enumeration;
import java.util.Properties;
import org.apache.velocity.VelocityContext;
import org.apache.velocity.app.VelocityEngine;
import java.util.logging.Logger;
import org.apache.velocity.runtime.RuntimeConstants;
import org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader;

/**
 *
 * @author wlloyd
 */
public class WepsRunFileGenerator {

    static final Logger log = Logger.getLogger(WepsRunFileGenerator.class.getName());
    public static WepsRunFileGenerator vt;
    
    /**
     * @param args the command line arguments
     */
    public static void GenerateWepsRunFile(WepsModelRun wmr, String outputDir, String outputFilename) {
        log.info("Generating Weps Run File");
        vt = new WepsRunFileGenerator();
        Properties prop = new Properties();
        if (wmr == null)
            wmr = new WepsModelRun();
        if (outputDir == null)
            outputDir = ".";
        if (outputFilename == null)
            outputFilename = "weps.run";
        
        log.info("setting properties");
        VelocityEngine ve = new VelocityEngine();
        ve.setProperty( RuntimeConstants.RUNTIME_LOG_LOGSYSTEM_CLASS,"org.apache.velocity.runtime.log.Log4JLogChute" );
	ve.setProperty("runtime.log.logsystem.log4j.logger",log.getName());
        ve.setProperty(RuntimeConstants.RESOURCE_LOADER, "classpath");
        ve.setProperty("classpath.resource.loader.class", ClasspathResourceLoader.class.getName());
	ve.init();        
        VelocityContext vc = new VelocityContext();
        vc.put("wmr", wmr);
        log.info("Fetching weps template");
        try
        {
            // Fetch weps file template from classpath base dir
            final String templatePath = "weps.vm";
            InputStream input = WepsRunFileGenerator.class.getClassLoader().getResourceAsStream(templatePath);
            if (input == null) {
                throw new IOException("Template file doesn't exist");
            }
            ve.getTemplate("weps.vm");  
            FileWriter fw = new FileWriter(outputDir + "/" + outputFilename);
            ve.mergeTemplate("weps.vm", Charset.defaultCharset().displayName(), vc, fw);
            fw.close();
        }
        catch (Exception e)
        {
            log.severe("err=" + e.toString());
            for (StackTraceElement ste : e.getStackTrace())
                log.severe(ste.toString());
        }
    }
    
}