001    /**
002     * Copyright 2004-2012 The Kuali Foundation
003     *
004     * Licensed under the Educational Community License, Version 2.0 (the "License");
005     * you may not use this file except in compliance with the License.
006     * You may obtain a copy of the License at
007     *
008     * http://www.opensource.org/licenses/ecl2.php
009     *
010     * Unless required by applicable law or agreed to in writing, software
011     * distributed under the License is distributed on an "AS IS" BASIS,
012     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013     * See the License for the specific language governing permissions and
014     * limitations under the License.
015     */
016    package org.apache.torque.mojo;
017    
018    import org.apache.maven.plugin.MojoExecutionException;
019    import org.kuali.core.db.torque.KualiTorqueSchemaDumpTask;
020    
021    /**
022     * Examines the JDBC metadata of a proprietary database and exports the schema information to database agnostic XML. The
023     * generated XML contains information about tables, primary keys, unique constraints, foreign keys, indexes, sequences,
024     * and views. This goal does not export any data. See also <code>impex:exportdata</code> and <code>impex:import</code>
025     * 
026     * @goal exportschema
027     * @phase generate-sources
028     */
029    public class ExportSchemaMojo extends ExportMojo {
030    
031            /**
032             * Flag indicating whether or not tables will be processed. Default is true
033             * 
034             * @parameter expression="${processTables}" default-value="true"
035             */
036            private boolean processTables;
037    
038            /**
039             * Flag indicating whether or not views will be processed. Default is true
040             * 
041             * @parameter expression="${processViews}" default-value="true"
042             */
043            private boolean processViews;
044    
045            /**
046             * Flag indicating whether or not sequences will be processed. Default is true
047             * 
048             * @parameter expression="${processSequences}" default-value="true"
049             */
050            private boolean processSequences;
051    
052            /**
053             * The file that the schema XML will get written to
054             * 
055             * @parameter expression="${schemaXMLFile}" default-value="${basedir}/src/main/impex/${project.artifactId}.xml"
056             * @required
057             */
058            private String schemaXMLFile;
059    
060            /**
061             * Configure the Ant task
062             */
063            protected void configureTask() throws MojoExecutionException {
064    
065                    KualiTorqueSchemaDumpTask task = new KualiTorqueSchemaDumpTask();
066                    setAntTask(task);
067                    super.configureTask();
068            }
069    
070            public boolean isProcessTables() {
071                    return processTables;
072            }
073    
074            public void setProcessTables(boolean processTables) {
075                    this.processTables = processTables;
076            }
077    
078            public boolean isProcessViews() {
079                    return processViews;
080            }
081    
082            public void setProcessViews(boolean processViews) {
083                    this.processViews = processViews;
084            }
085    
086            public boolean isProcessSequences() {
087                    return processSequences;
088            }
089    
090            public void setProcessSequences(boolean processSequences) {
091                    this.processSequences = processSequences;
092            }
093    
094            public String getSchemaXMLFile() {
095                    return schemaXMLFile;
096            }
097    
098            public void setSchemaXMLFile(String schemaXMLFile) {
099                    this.schemaXMLFile = schemaXMLFile;
100            }
101    
102    }