Velocity Java

/*
 * Copyright 2000-2001,2004 The Apache Software Foundation.
 * 
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 *      http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
import org.apache.velocity.app.Velocity;
import org.apache.velocity.VelocityContext;
import org.apache.velocity.Template;
import org.apache.velocity.exception.ParseErrorException;
import org.apache.velocity.exception.ResourceNotFoundException;
import java.io.*;
import java.util.ArrayList;
/**
 * This class is a simple demonstration of how the Velocity Template Engine
 * can be used in a standalone application.
 *
 * @author Jason van Zyl
 * @author Geir Magnusson Jr.
 * @version $Id: Example.java,v 1.4.8.1 2004/03/04 00:18:29 geirm Exp $
 */
public class Example
{
    public Example(String templateFile)
    {
        try
        {
            /*
             * setup
             */
            Velocity.init("./src/velocity.properties");
            
            /*
             *  Make a context object and populate with the data.  This 
             *  is where the Velocity engine gets the data to resolve the
             *  references (ex. $list) in the template
             */
            VelocityContext context = new VelocityContext();
            context.put("list", getNames());
            
            /*
             *  get the Template object.  This is the parsed version of your 
             *  template input file.  Note that getTemplate() can throw
             *   ResourceNotFoundException : if it doesn't find the template
             *   ParseErrorException : if there is something wrong with the VTL
             *   Exception : if something else goes wrong (this is generally
             *        indicative of as serious problem...)
             */
            Template template =  null;
            try 
            {
                template = Velocity.getTemplate(templateFile);
            }
            catch( ResourceNotFoundException rnfe )
            {
                System.out.println("Example : error : cannot find template " + templateFile );
            }
            catch( ParseErrorException pee )
            {
                System.out.println("Example : Syntax error in template " + templateFile + ":" + pee );
            }
            /*
             *  Now have the template engine process your template using the
             *  data placed into the context.  Think of it as a  'merge' 
             *  of the template and the data to produce the output stream.
             */
            BufferedWriter writer = writer = new BufferedWriter(
                new OutputStreamWriter(System.out));
            if ( template != null)
                template.merge(context, writer);
            /*
             *  flush and cleanup
             */
            writer.flush();
            writer.close();
        }
        catch( Exception e )
        {
            System.out.println(e);
        }
    }
    public ArrayList getNames()
    {
        ArrayList list = new ArrayList();
        list.add("ArrayList element 1");
        list.add("ArrayList element 2");
        list.add("ArrayList element 3");
        list.add("ArrayList element 4");
        return list;
    }
    public static void main(String[] args)
    {
        Example t = new Example("./src/example.vm");
    }
}
-------------------------------------------------------------------------------------
## This is an example velocity template
#set( $this = "Velocity")
$this is great!
#foreach( $name in $list )
    $name is great!
#end
#set( $condition = true)
#if ($condition)
    The condition is true!
#else
    The condition is false!
#end    
-------------------------------------------------------------------------------------
#
# This is a simple example of a velocity properties file.
#
# Any property that is not listed here will have it's default
# value used.  The default values are located in :
#  *  src/java/org/apache/velocity/runtime/default/velocity.defaults
#  *  http://jakarta.apache.org/velocity/developer-guide.html
#
# as an example, we are changing the name of the velocity log 
#
runtime.log = velocity_example.log
           
       
velocity-Log.zip( 1,875 k)