DSDApp.java

  1. /*
  2.  * $Source$
  3.  * $Revision$
  4.  *
  5.  * Copyright (C) 2007 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.poem.PoemThread;
  47. import org.melati.template.TemplateContext;

  48. /**
  49.  * @author timp
  50.  * @since 31 May 2007
  51.  *
  52.  */
  53. public class DSDApp extends AbstractTemplateApp {

  54.   /**
  55.    * Constructor.
  56.    */
  57.   public DSDApp() {
  58.     super();
  59.   }

  60.   /**
  61.    * The main method to override.
  62.    *
  63.    * @param melati A {@link Melati} with arguments and properties set
  64.    * @param templateContext A {@link TemplateContext} containing a {@link Melati}
  65.    * @return the name of a template to expand
  66.    * @throws Exception if anything goes wrong
  67.    * @see org.melati.app.AbstractTemplateApp#doTemplateRequest
  68.    *         (org.melati.Melati, org.melati.template.ServletTemplateContext)
  69.    */
  70.   protected String doTemplateRequest(Melati melati,
  71.       TemplateContext templateContext) throws Exception {
  72.     // Turn comments on
  73.     templateContext.put("comments", "true");
  74.     return dsdTemplate(templateContext);
  75.   }
  76.  
  77.   /**
  78.    *  @return the DSD template name, the extension is added by the template engine
  79.    */
  80.   protected String dsdTemplate(TemplateContext context) {
  81.     context.put("database", PoemThread.database());
  82.     // Webmacro security prevents access from within template

  83.     // Note: getPackage() can return null dependant upon
  84.     // the classloader so we have to chomp the class name

  85.     String  c = PoemThread.database().getClass().getName();
  86.     int dot = c.lastIndexOf('.');
  87.     String p = c.substring(0, dot);

  88.     context.put("package", p);
  89.    
  90.     return "org/melati/admin/" + "DSD";
  91.   }

  92.   /**
  93.    * The main entry point.
  94.    *
  95.    * @param args in format <code>db table troid method</code>
  96.    *             where method is a template name
  97.    */
  98.   public static void main(String[] args) throws Exception{
  99.     DSDApp me = new DSDApp();
  100.     me.run(args);
  101.   }

  102. }