View Javadoc
1   package org.andromda.core.templateengine;
2   
3   import java.io.Writer;
4   import java.util.List;
5   import java.util.Map;
6   
7   /**
8    * The interface that all templates engines used within AndroMDA must implement.
9    * It allows us to plug-in the template engine to use for processing of
10   * templates used by the system.
11   *
12   * @author Chad Brandon
13   * @author Bob Fields
14   */
15  public interface TemplateEngine
16  {
17      /**
18       * Initializes the TempateEngine.
19       *
20       * @param namespace The name of a namespace this can be used for whatever the
21       *        template engine implementation likes. For example, it can help
22       *        determine the name of the log file to which output is logged.
23       * @throws Exception
24       */
25      public void initialize(String namespace)
26          throws Exception;
27  
28      /**
29       * Processes a template.
30       *
31       * @param templateFile the path to the template file that will be processed.
32       * @param templateObjects any additional objects we wish to make available
33       *        to the translation template that is processed
34       * @param output the Writer to which to write the output of the processing.
35       * @throws Exception any exception that may occur
36       */
37      public void processTemplate(
38          String templateFile,
39          Map<String, Object> templateObjects,
40          Writer output)
41          throws Exception;
42  
43      /**
44       * Shuts down the template engine. The meaning of this is defined by the
45       * template engine itself. At least, it should close any logfiles.
46       */
47      public void shutdown();
48  
49      /**
50       * Returns the list of macro libraries used within this template engine.
51       *
52       * @return List the list of macros
53       */
54      public List<String> getMacroLibraries();
55  
56      /**
57       * Adds a a macro library for use within this template engine.
58       *
59       * @param macroLibrary
60       */
61      public void addMacroLibrary(String macroLibrary);
62  
63      /**
64       * Sets the location of <code>merge</code> templates. These are templates
65       * that will be merged into cartridges during processing from an external
66       * location. This allows the ability to define templates external to plugins
67       * so that these templates can override plugin templates in order to provide
68       * customization.
69       *
70       * @param mergeLocation the location of the merge files.
71       */
72      public void setMergeLocation(String mergeLocation);
73  
74      /**
75       * Evaluates the <code>expression</code> contained within the template
76       * being processed and returns the result.
77       *
78       * @param expression the expression to evaluate.
79       * @param templateObjects any additional objects we wish to make available
80       *        to the template engine when the expression is evaluated.  It this is null
81       *        there will be nothing to be evaluated and therefore this operation will return
82       *        null.
83       * @return the result of the evaluated expression as a String.
84       */
85      public String getEvaluatedExpression(String expression, Map<String, Object> templateObjects);
86  }