TemplateApp.java

  1. /*
  2.  * $Source$
  3.  * $Revision$
  4.  *
  5.  * Copyright (C) 2005 Tim Pizey
  6.  *
  7.  * Part of Melati (http://melati.org), a framework for the rapid
  8.  * development of clean, maintainable web applications.
  9.  *
  10.  * Melati is free software; Permission is granted to copy, distribute
  11.  * and/or modify this software under the terms either:
  12.  *
  13.  * a) the GNU General Public License as published by the Free Software
  14.  *    Foundation; either version 2 of the License, or (at your option)
  15.  *    any later version,
  16.  *
  17.  *    or
  18.  *
  19.  * b) any version of the Melati Software License, as published
  20.  *    at http://melati.org
  21.  *
  22.  * You should have received a copy of the GNU General Public License and
  23.  * the Melati Software License along with this program;
  24.  * if not, write to the Free Software Foundation, Inc.,
  25.  * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA to obtain the
  26.  * GNU General Public License and visit http://melati.org to obtain the
  27.  * Melati Software License.
  28.  *
  29.  * Feel free to contact the Developers of Melati (http://melati.org),
  30.  * if you would like to work out a different arrangement than the options
  31.  * outlined here.  It is our intention to allow Melati to be used by as
  32.  * wide an audience as possible.
  33.  *
  34.  * This program is distributed in the hope that it will be useful,
  35.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  36.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  37.  * GNU General Public License for more details.
  38.  *
  39.  * Contact details for copyright holder:
  40.  *
  41.  *     Tim Pizey <timp At paneris.org>
  42.  *     http://paneris.org/~timp
  43.  */
  44. package org.melati.app;

  45. import org.melati.Melati;
  46. import org.melati.template.TemplateContext;

  47. /**
  48.  * An example of how to use a Template Engine with a Poem database
  49.  * from the command line.
  50.  *
  51.  * Invoke:
  52.  *
  53.  * java -cp melati.jar:site\properties:lib\hsqldb.jar: \
  54.  *  lib\webmacro.jar:lib\servlet.jar \
  55.  *  org.melati.app.TemplateApp poemtest user 0 \
  56.  *  org/melati/app/TemplateAppExample
  57.  *
  58.  * Where poemtest is your database, user is your table, 0 is the record id and
  59.  * org/melati/app/TemplateAppExample is the full name of a template.
  60.  *
  61.  * From within Maven try:
  62.  *
  63.      &lt;plugin&gt;
  64.        &lt;groupId&gt;org.codehaus.mojo&lt;/groupId&gt;
  65.        &lt;artifactId&gt;exec-maven-plugin&lt;/artifactId&gt;
  66.        &lt;executions&gt;
  67.          &lt;execution&gt;
  68.           &lt;id&gt;generate&lt;/id&gt;
  69.           &lt;phase&gt;test&lt;/phase&gt;
  70.           &lt;goals&gt;
  71.            &lt;goal&gt;java&lt;/goal&gt;
  72.           &lt;/goals&gt;
  73.           &lt;configuration&gt;
  74.            &lt;mainClass&gt;org.melati.app.TemplateApp&lt;/mainClass&gt;
  75.            &lt;arguments&gt;
  76.              &lt;argument&gt;mydb&lt;/argument&gt;
  77.              &lt;argument&gt;mytable&lt;/argument&gt;
  78.              &lt;argument&gt;mytroid&lt;/argument&gt;
  79.              &lt;argument&gt;mytemplate&lt;/argument&gt;
  80.              &lt;argument&gt;-output&lt;/argument&gt;
  81.              &lt;argument&gt;${basedir}/src/main/webapp/WEB-INF/web.xml&lt;/argument&gt;
  82.            &lt;/arguments&gt;
  83.            &lt;cleanupDaemonThreads&gt;true&lt;/cleanupDaemonThreads&gt;
  84.           &lt;/configuration&gt;
  85.          &lt;/execution&gt;
  86.        &lt;/executions&gt;
  87.     &lt;/plugin&gt;

  88.  *
  89.  *
  90.  *
  91.  */
  92. public class TemplateApp extends AbstractTemplateApp {

  93.   /**
  94.    * The main method to override.
  95.    *
  96.    * @param melati A {@link Melati} with arguments and properties set
  97.    * @param templateContext A {@link TemplateContext} containing a {@link Melati}
  98.    * @return the name of a template to expand
  99.    * @throws Exception if anything goes wrong
  100.    * @see org.melati.app.AbstractTemplateApp#doTemplateRequest
  101.    *         (org.melati.Melati, org.melati.template.ServletTemplateContext)
  102.    */
  103.   protected String doTemplateRequest(Melati melati,
  104.       TemplateContext templateContext) throws Exception {
  105.     return melati.getMethod();
  106.   }

  107.   /**
  108.    * The main entry point.
  109.    *
  110.    * @param args in format <code>db table troid method</code>
  111.    *             where method is a template name
  112.    */
  113.   public static void main(String[] args) throws Exception {
  114.     TemplateApp me = new TemplateApp();
  115.     me.run(args);
  116.   }
  117. }