This project has retired. For details please refer to its Attic page.
BasicTemplateGenerator xref
View Javadoc

1   /*
2    * $Id: BasicTemplateGenerator.java 1643653 2014-12-07 06:47:59Z nlebas $
3    *
4    * Licensed to the Apache Software Foundation (ASF) under one
5    * or more contributor license agreements.  See the NOTICE file
6    * distributed with this work for additional information
7    * regarding copyright ownership.  The ASF licenses this file
8    * to you under the Apache License, Version 2.0 (the
9    * "License"); you may not use this file except in compliance
10   * with the License.  You may obtain a copy of the License at
11   *
12   * http://www.apache.org/licenses/LICENSE-2.0
13   *
14   * Unless required by applicable law or agreed to in writing,
15   * software distributed under the License is distributed on an
16   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17   * KIND, either express or implied.  See the License for the
18   * specific language governing permissions and limitations
19   * under the License.
20   */
21  package org.apache.tiles.autotag.generate;
22  
23  import java.util.List;
24  import java.util.Map;
25  
26  import org.apache.tiles.autotag.core.OutputLocator;
27  import org.apache.tiles.autotag.model.TemplateClass;
28  import org.apache.tiles.autotag.model.TemplateSuite;
29  
30  /**
31   * The basic template generator. Use {@link TemplateGeneratorBuilder} to
32   * create instances of this class.
33   *
34   * @version $Rev: 1643653 $ $Date: 2014-12-07 07:47:59 +0100 (Sun, 07 Dec 2014) $
35   */
36  class BasicTemplateGenerator implements TemplateGenerator {
37  
38      /**
39       * The template suite generators.
40       */
41      private List<TSGeneratorDirectoryPair> templateSuiteGenerators;
42  
43      /**
44       * The template class generators.
45       */
46      private List<TCGeneratorDirectoryPair> templateClassGenerators;
47  
48      /**
49       * Indicates that this generator generates resources.
50       */
51      private boolean generatingResources = false;
52  
53      /**
54       * Indicates that this generator generates classes.
55       */
56      private boolean generatingClasses = false;
57  
58      /**
59       * Constructor.
60       *
61       * @param templateSuiteGenerators The template suite generators.
62       * @param templateClassGenerators The template class generators.
63       * @param generatingClasses Indicates that this generator generates classes.
64       * @param generatingResources Indicates that this generator generates resources.
65       */
66      BasicTemplateGenerator(
67              List<TSGeneratorDirectoryPair> templateSuiteGenerators,
68              List<TCGeneratorDirectoryPair> templateClassGenerators,
69              boolean generatingClasses, boolean generatingResources) {
70          this.templateSuiteGenerators = templateSuiteGenerators;
71          this.templateClassGenerators = templateClassGenerators;
72          this.generatingClasses = generatingClasses;
73          this.generatingResources = generatingResources;
74      }
75  
76  
77  
78      @Override
79      public void generate(String packageName, TemplateSuite suite, Map<String, String> parameters, 
80          String runtimeClass, String requestClass) {
81          for (TSGeneratorDirectoryPair pair : templateSuiteGenerators) {
82              pair.getGenerator().generate(pair.getOutputLocator(), packageName, suite, parameters);
83          }
84          for (TemplateClass templateClass : suite.getTemplateClasses()) {
85              for (TCGeneratorDirectoryPair pair : templateClassGenerators) {
86                  pair.getGenerator().generate(pair.getOutputLocator(), packageName,
87                          suite, templateClass, parameters, runtimeClass, requestClass);
88              }
89          }
90      }
91  
92      /**
93       * A pair of a template suite generator and a directory.
94       *
95       * @version $Rev: 1643653 $ $Date: 2014-12-07 07:47:59 +0100 (Sun, 07 Dec 2014) $
96       */
97      static class TSGeneratorDirectoryPair {
98          /**
99           * The directory where files are generated.
100          */
101         private OutputLocator outputLocator;
102 
103         /**
104          * The generator.
105          */
106         private TemplateSuiteGenerator generator;
107 
108         /**
109          * Constructor.
110          *
111          * @param directory The directory where files are generated.
112          * @param generator The generator.
113          */
114         public TSGeneratorDirectoryPair(OutputLocator outputLocator,
115                 TemplateSuiteGenerator generator) {
116             this.outputLocator = outputLocator;
117             this.generator = generator;
118         }
119 
120         /**
121          * Returns the directory where files are generated.
122          *
123          * @return The directory where files are generated.
124          */
125         public OutputLocator getOutputLocator() {
126             return outputLocator;
127         }
128 
129         /**
130          * Returns the generator.
131          *
132          * @return The generator.
133          */
134         public TemplateSuiteGenerator getGenerator() {
135             return generator;
136         }
137     }
138 
139     /**
140      * A pair of a template class generator and a directory.
141      *
142      * @version $Rev: 1643653 $ $Date: 2014-12-07 07:47:59 +0100 (Sun, 07 Dec 2014) $
143      */
144     static class TCGeneratorDirectoryPair {
145         /**
146          * The directory where files are generated.
147          */
148         private OutputLocator outputLocator;
149 
150         /**
151          * The generator.
152          */
153         private TemplateClassGenerator generator;
154 
155         /**
156          * Constructor.
157          *
158          * @param directory The directory where files are generated.
159          * @param generator The generator.
160          */
161         public TCGeneratorDirectoryPair(OutputLocator outputLocator,
162                 TemplateClassGenerator generator) {
163             this.outputLocator = outputLocator;
164             this.generator = generator;
165         }
166 
167         /**
168          * Returns the directory where files are generated.
169          *
170          * @return The directory where files are generated.
171          */
172         public OutputLocator getOutputLocator() {
173             return outputLocator;
174         }
175 
176         /**
177          * Returns the generator.
178          *
179          * @return The generator.
180          */
181         public TemplateClassGenerator getGenerator() {
182             return generator;
183         }
184     }
185 
186     @Override
187     public boolean isGeneratingResources() {
188         return generatingResources;
189     }
190 
191     @Override
192     public boolean isGeneratingClasses() {
193         return generatingClasses;
194     }
195 }