Coverage Report - org.apache.torque.mojo.DataSqlMojo
 
Classes in this File Line Coverage Branch Coverage Complexity
DataSqlMojo
0%
0/50
0%
0/6
1.235
 
 1  
 package org.apache.torque.mojo;
 2  
 
 3  
 import java.io.File;
 4  
 import java.util.List;
 5  
 
 6  
 import org.apache.commons.configuration.PropertiesConfiguration;
 7  
 import org.apache.maven.plugin.MojoExecutionException;
 8  
 import org.apache.torque.util.ChangeDetector;
 9  
 import org.apache.torque.util.SimpleScanner;
 10  
 import org.kuali.core.db.torque.KualiTorqueDataSQLTask;
 11  
 
 12  
 /**
 13  
  * Generates platform specific SQL from database agnostic XML files. Each SQL file created by this goal contains data
 14  
  * for a single table. The database platform to generate SQL for is determined by ${targetDatabase}. See also
 15  
  * <code>impex:schemasql</code>
 16  
  * 
 17  
  * @goal datasql
 18  
  * @phase generate-sources
 19  
  */
 20  0
 public class DataSqlMojo extends DataModelTaskMojo {
 21  
         /**
 22  
          * The directory in which the SQL will be generated.
 23  
          * 
 24  
          * @parameter property="outputDir" expression="${outputDir}" default-value="${project.build.directory}/classes/sql"
 25  
          * @required
 26  
          */
 27  
         @SuppressWarnings("unused")
 28  
         private String dummy;
 29  
 
 30  
         /**
 31  
          * The location where the SQL file will be generated.
 32  
          * 
 33  
          * @parameter property="reportFile" expression="${reportFile}"
 34  
          *            default-value="../../../reports/report.${project.artifactId}-data.sql"
 35  
          */
 36  
         @SuppressWarnings("unused")
 37  
         private String dummy2;
 38  
 
 39  
         /**
 40  
          * The location where the context property file for velocity will be generated.
 41  
          * 
 42  
          * @parameter property="contextPropertiesPath" expression="${contextPropertiesPath}"
 43  
          *            default-value="${project.build.directory}/reports/context.datasql.properties"
 44  
          */
 45  
         @SuppressWarnings("unused")
 46  
         private String dummy3;
 47  
 
 48  
         /**
 49  
          * Only run this mojo if the data or schema has changed since the last run
 50  
          * 
 51  
          * @parameter expression="${runOnlyOnChange}" default-value="true"
 52  
          * @required
 53  
          */
 54  
         private boolean runOnlyOnChange;
 55  
 
 56  
         /**
 57  
          * The XML file describing the database schema
 58  
          * 
 59  
          * @parameter expression="${schemaXMLFile}" default-value="${basedir}/src/main/impex/${project.artifactId}.xml"
 60  
          * @required
 61  
          */
 62  
         private File schemaXMLFile;
 63  
 
 64  
         /**
 65  
          * The directory containing data XML files
 66  
          * 
 67  
          * @parameter expression="${dataXMLDir}" default-value="${basedir}/src/main/impex"
 68  
          * @required
 69  
          */
 70  
         private File dataXMLDir;
 71  
 
 72  
         /**
 73  
          * The default set of files in that directory to include (ant style notation)
 74  
          * 
 75  
          * @parameter expression="${dataXMLIncludes}" default-value="*.xml"
 76  
          * @required
 77  
          */
 78  
         private String dataXMLIncludes;
 79  
 
 80  
         /**
 81  
          * The default set of files in that directory to exclude (ant style notation)
 82  
          * 
 83  
          * @parameter expression="${dataXMLExcludes}" default-value="${project.artifactId}.xml"
 84  
          */
 85  
         private String dataXMLExcludes;
 86  
 
 87  
         /**
 88  
          * The DTD for the data XML files
 89  
          * 
 90  
          * @parameter expression="${dataDTD}"
 91  
          *            default-value="${project.build.directory}/generated-impex/${project.artifactId}.dtd"
 92  
          * @required
 93  
          */
 94  
         private File dataDTD;
 95  
 
 96  
         @Override
 97  
         public void executeMojo() throws MojoExecutionException {
 98  
                 // loadPropertiesToMojo();
 99  0
                 updateConfiguration();
 100  0
                 validateConfiguration();
 101  0
                 generateContextProperties();
 102  0
                 configureTask();
 103  0
                 addTargetDatabaseToOutputDir();
 104  0
                 addTargetDatabaseToReportFile();
 105  0
                 ChangeDetector schema = new ChangeDetector(getCanonicalReportFile(), getSchemaFiles());
 106  0
                 ChangeDetector data = new ChangeDetector(getCanonicalReportFile(), getDataFiles());
 107  0
                 if (!schema.isChanged() && !data.isChanged() && isRunOnlyOnChange()) {
 108  0
                         getLog().info("------------------------------------------------------------------------");
 109  0
                         getLog().info("Data and schema are unchanged.  Skipping generation.");
 110  0
                         getLog().info("------------------------------------------------------------------------");
 111  0
                         return;
 112  
                 }
 113  0
                 getLog().info("------------------------------------------------------------------------");
 114  0
                 getLog().info("Generating SQL for " + getTargetDatabase() + " from data XML files");
 115  0
                 getLog().info("------------------------------------------------------------------------");
 116  0
                 getAntTask().execute();
 117  0
         }
 118  
 
 119  
         protected List<File> getDataFiles() {
 120  0
                 return new SimpleScanner(getDataXMLDir(), getDataXMLIncludes(), getDataXMLExcludes()).getFiles();
 121  
         }
 122  
 
 123  
         /**
 124  
          * Returns the context properties for the Texen task.
 125  
          * 
 126  
          * @return The PropertiesConfiguration containing all context properties, not null.
 127  
          */
 128  
         protected PropertiesConfiguration getMojoContextProperties() {
 129  0
                 PropertiesConfiguration configuration = new PropertiesConfiguration();
 130  0
                 configuration.addProperty(TARGET_DATABASE_CONTEXT_PROPERTY, super.getTargetDatabase());
 131  0
                 return configuration;
 132  
         }
 133  
 
 134  
         /**
 135  
          * Configures the Texen task wrapped by this mojo
 136  
          */
 137  
         protected void configureTask() throws MojoExecutionException {
 138  0
                 KualiTorqueDataSQLTask task = new KualiTorqueDataSQLTask();
 139  0
                 setAntTask(task);
 140  0
                 super.configureTask();
 141  0
                 task.setDataDTD(getDataDTD());
 142  0
                 task.addFileset(getAntFileSet(getDataXMLDir(), getDataXMLIncludes(), getDataXMLExcludes()));
 143  0
                 task.setXmlFile(getSchemaXMLFile().getAbsolutePath());
 144  0
                 task.setTargetDatabase(getTargetDatabase());
 145  0
         }
 146  
 
 147  
         /**
 148  
          * Returns the path to the control template.
 149  
          * 
 150  
          * @return "sql/load/Control.vm"
 151  
          */
 152  
         protected String getControlTemplate() {
 153  0
                 return "sql/load/Control.vm";
 154  
         }
 155  
 
 156  
         public String getDataXMLIncludes() {
 157  0
                 return dataXMLIncludes;
 158  
         }
 159  
 
 160  
         public void setDataXMLIncludes(String dataXMLIncludes) {
 161  0
                 this.dataXMLIncludes = dataXMLIncludes;
 162  0
         }
 163  
 
 164  
         public String getDataXMLExcludes() {
 165  0
                 return dataXMLExcludes;
 166  
         }
 167  
 
 168  
         public void setDataXMLExcludes(String dataXMLExcludes) {
 169  0
                 this.dataXMLExcludes = dataXMLExcludes;
 170  0
         }
 171  
 
 172  
         public File getDataXMLDir() {
 173  0
                 return dataXMLDir;
 174  
         }
 175  
 
 176  
         public void setDataXMLDir(File dataXMLDir) {
 177  0
                 this.dataXMLDir = dataXMLDir;
 178  0
         }
 179  
 
 180  
         public File getSchemaXMLFile() {
 181  0
                 return schemaXMLFile;
 182  
         }
 183  
 
 184  
         public void setSchemaXMLFile(File schemaXMLFile) {
 185  0
                 this.schemaXMLFile = schemaXMLFile;
 186  0
         }
 187  
 
 188  
         public boolean isRunOnlyOnChange() {
 189  0
                 return runOnlyOnChange;
 190  
         }
 191  
 
 192  
         public void setRunOnlyOnChange(boolean runOnlyOnDataChange) {
 193  0
                 this.runOnlyOnChange = runOnlyOnDataChange;
 194  0
         }
 195  
 
 196  
         public File getDataDTD() {
 197  0
                 return dataDTD;
 198  
         }
 199  
 
 200  
         public void setDataDTD(File dataDTD) {
 201  0
                 this.dataDTD = dataDTD;
 202  0
         }
 203  
 
 204  
 }