View Javadoc

1   package org.apache.torque.generator.source;
2   
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  
22  
23  import java.util.ArrayList;
24  import java.util.Collections;
25  import java.util.List;
26  
27  import org.apache.torque.generator.configuration.ClassHelper;
28  import org.apache.torque.generator.configuration.ConfigurationException;
29  import org.apache.torque.generator.source.skipDecider.SkipDecider;
30  
31  /**
32   * Contains the configuration how a source should be processed between
33   * obtaining the original source and feeding it to the outlets.
34   *
35   * @version $Id: SourceProcessConfiguration.java 1331190 2012-04-27 02:41:35Z tfischer $
36   *
37   */
38  public class SourceProcessConfiguration
39  {
40      /** The elements which should be used as starting points for generation. */
41      private String startElementsPath;
42  
43      /** The source transformers which are executed before transformation. */
44      private List<SourceTransformerDefinition> transformerDefinitions
45              = new ArrayList<SourceTransformerDefinition>();
46  
47      /** The skip decider, or null if none exists. */
48      private SkipDecider skipDecider;
49  
50      /**
51       * Sets the start element path.
52       *
53       * @param startElementsPath the path to the elements which are used
54       *        as starting points for generation,
55       *        or null if the root element should be used.
56       */
57      public void setStartElementsPath(String startElementsPath)
58      {
59          this.startElementsPath = startElementsPath;
60      }
61  
62      /**
63       * Sets and instantiates the source filter class.
64       *
65       * @param skipDecider the fully qualified name of a class
66       *        which determines whether a particular source is skipped,
67       *        or null if every source should be used.
68       *
69       * @throws ConfigurationException if the class cannot be
70       *         instantiated or does not implement the
71       *         <code>SkipDecider</code> interface.
72       */
73      public void setSkipDecider(String skipDecider)
74              throws ConfigurationException
75      {
76          if (skipDecider != null)
77          {
78              this.skipDecider = (SkipDecider) ClassHelper.getInstance(
79                      skipDecider,
80                      SkipDecider.class);
81          }
82          else
83          {
84              this.skipDecider = null;
85          }
86      }
87  
88      /**
89       * Sets the transformer definitions.
90       *
91       * @param transformerDefinitions the transformer definitions, or null
92       *        if the input should not be transformed before generation.
93       */
94      public void setSourceTransformerDefinitions(
95                  List<SourceTransformerDefinition> transformerDefinitions)
96      {
97          if (transformerDefinitions == null)
98          {
99              this.transformerDefinitions
100                     = new ArrayList<SourceTransformerDefinition>();
101         }
102         else
103         {
104             this.transformerDefinitions
105                     = new ArrayList<SourceTransformerDefinition>(
106                             transformerDefinitions);
107         }
108     }
109 
110     /**
111      * Returns the path to elements which should be used as starting points for
112      * generation.
113      *
114      * @return the elements to use, or null, in which case the root element
115      *         is used.
116      */
117     public String getStartElementsPath()
118     {
119         return startElementsPath;
120     }
121 
122     /**
123      * Return all currently registered source transformer definitions.
124      *
125      * @return the source transformer definitions, not null.
126      */
127     public List<SourceTransformerDefinition> getTransformerDefinitions()
128     {
129         return Collections.unmodifiableList(transformerDefinitions);
130     }
131 
132     /**
133      * Returns the current SkipDecider.
134      *
135      * @return the current SkipDecider, or null if the generation should
136      *         always be started for all source files.
137      */
138     public SkipDecider getSkipDecider()
139     {
140         return skipDecider;
141     }
142 }