All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.apache.torque.mojo.SchemaSqlMojo Maven / Gradle / Ivy

package org.apache.torque.mojo;

import org.apache.maven.plugin.MojoExecutionException;
import org.apache.torque.util.ChangeDetector;

/**
 * Generates platform specific SQL from database agnostic XML files.
*
* There are two types of SQL files created by this goal:
*
* Type 1: DDL statements for creating tables, primary keys, indexes, and unique constraints. Does not contain DDL for * enforcing relationships between tables.
* Type 2: DDL statements for creating and enforcing relationships between tables
*
* This allows data to be imported into multiple tables concurrently. Running the first type of SQL file will create the * empty tables without any foreign key constraints. Data can then be loaded concurrently into the tables (using * optimized high speed tools if desired) without needing to worry about the order in which the tables are loaded. After * data has been loaded, the second type of SQL file can be run to add the relationships between the tables. As long as * the data set is consistent and correct, all the relationships will get created correctly.
*
* The database platform to generate SQL for is determined by ${targetDatabase}. See also impex:datasql * * @goal schemasql * @phase generate-sources */ public class SchemaSqlMojo extends SqlMojoBase { /** * The directory in which the SQL will be generated. * * @parameter property="outputDir" expression="${outputDir}" default-value="${project.build.directory}/classes/sql" */ @SuppressWarnings("unused") private String dummy1; /** * The location where the report file will be generated. * * @parameter property="reportFile" expression="${reportFile}" default-value= * "../../../reports/report.${project.artifactId}.sql.generation" */ @SuppressWarnings("unused") private String dummy2; /** * The location where the context property file for velocity will be generated. * * @parameter property="contextPropertiesPath" expression="${contextPropertiesPath}" * default-value="${project.build.directory}/reports/context.sql.properties" */ @SuppressWarnings("unused") private String dummy3; /** * The suffix of the generated sql files. * * @parameter property="suffix" expression="${suffix}" */ @SuppressWarnings("unused") private String dummy4; protected void showConfig() { getLog().info("Schema Dir: " + getSchemaDir()); getLog().info("Includes: " + getSchemaIncludes()); getLog().info("Excludes: " + getSchemaExcludes()); } /** * Generate SQL from schema XML files */ @Override public void executeMojo() throws MojoExecutionException { updateConfiguration(); validateConfiguration(); generateContextProperties(); configureTask(); addTargetDatabaseToOutputDir(); addTargetDatabaseToReportFile(); showConfig(); ChangeDetector detector = new ChangeDetector(getCanonicalReportFile(), getSchemaFiles()); if (!detector.isChanged() && isRunOnlyOnSchemaChange()) { getLog().info("Schema has not changed. Skipping generation"); return; } getLog().info("------------------------------------------------------------------------"); getLog().info("Generating SQL for " + getTargetDatabase() + " from schema XML files"); getLog().info("------------------------------------------------------------------------"); getAntTask().execute(); } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy