View Javadoc

1   package org.apache.torque.mojo;
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  import org.apache.commons.configuration.PropertiesConfiguration;
23  import org.apache.torque.task.TorqueSQLTask;
24  
25  /**
26   * Creates html or anakia documentation for the data model from the
27   * schema.xml files.
28   *
29   * @author Raphael Pieroni (rafale_at_codehaus.org)
30   * @author <a href="fischer@seitenbau.de">Thomas Fischer</a>
31   *
32   * @goal documentation
33   * @phase generate-sources
34   */
35  public class DocumentationMojo extends DataModelTaskMojo
36  {
37      /** The context property for the output format. */
38      public static final String OUTPUT_FORMAT_CONTEXT_PROPERTY
39          = "outputFormat";
40  
41      // The following dummies trick the Mojo Description Extractor
42      // into setting the correct default values for
43      // outputDir, reportFile, contextPropertiesPath, schemaExcludes
44      /**
45       * The directory in which the documentation will be generated
46       *
47       * @parameter property="outputDir"
48       *            expression="${project.build.directory}/generated-docs/torque"
49       */
50      private String dummy;
51  
52      /**
53       * The location where the report file will be generated.
54       *
55       * @parameter property="reportFile"
56       *            expression="../../torque/report.${project.artifact.artifactId}.doc.generation"
57       */
58      private String dummy2;
59  
60      /**
61       * The location where the context property file for velocity will be
62       * generated.
63       *
64       * @parameter property="contextPropertiesPath"
65       *            expression="${project.build.directory}/torque/context.doc.properties"
66       */
67      private String dummy3;
68  
69      /**
70       * The schema files which should be excluded in generation
71       * (in ant-style notation).
72       *
73       * @parameter property="schemaExcludes" expression="id-table-schema.xml"
74       */
75      private String dummy4;
76  
77      /**
78       * The format of the generated documentation. Can be either html or anakia.
79       *
80       * @parameter expression="html"
81       */
82      private String outputFormat;
83  
84      /**
85       * Creates a new SQLMojo object.
86       */
87      public DocumentationMojo()
88      {
89          super(new TorqueSQLTask());
90      }
91  
92      /**
93       * Sets the output format of the documentation (html or anakia)
94       *
95       * @param outputFormat the output format of the documentation.
96       */
97      public void setOutputFormat(String outputFormat)
98      {
99          this.outputFormat = outputFormat;
100     }
101 
102     /**
103      * Returns the output format of the documentation (html or anakia)
104      *
105      * @return the output format of the documentation.
106      */
107     public String getOutputFormat()
108     {
109         return outputFormat;
110     }
111 
112     /**
113      * Returns the context properties for the Texen task.
114      *
115      * @return The PropertiesConfiguration containing all context properties,
116      *         not null.
117      */
118     protected PropertiesConfiguration getMojoContextProperties()
119     {
120         PropertiesConfiguration configuration = new PropertiesConfiguration();
121         configuration.addProperty(
122                 OUTPUT_FORMAT_CONTEXT_PROPERTY,
123                 getOutputFormat());
124         return configuration;
125     }
126 
127     /**
128      * Returns the path to the control template.
129      *
130      * @return "doc/Control.vm"
131      */
132     protected String getControlTemplate()
133     {
134         return "doc/Control.vm";
135     }
136 }