Scarab commit: svn commit: r11198 - trunk/extensions/scarab-maven-plugin/src/main/java/org/tigris/scarab/util/build
[email protected] Fri, 27 Apr 2012 07:09:25 -0700 (PDT)
| Newsgroups | gmane.comp.java.scarab.cvs |
|---|---|
| Message-ID | <[email protected]> |
Author: mcoss
Date: 2012-04-27 07:09:25-0700
New Revision: 11198
Added:
trunk/extensions/scarab-maven-plugin/src/main/java/org/tigris/scarab/util/build/PrepareDBScriptsMojo.java
Modified:
trunk/extensions/scarab-maven-plugin/src/main/java/org/tigris/scarab/util/build/DBInitMojo.java
Log:
ENH - Abstraction layer for preparing database scripts, including method to generate an all in all database script (goal prepare-sql-scripts)
Modified: trunk/extensions/scarab-maven-plugin/src/main/java/org/tigris/scarab/util/build/DBInitMojo.java
Url: http://scarab.tigris.org/source/browse/scarab/trunk/extensions/scarab-maven-plugin/src/main/java/org/tigris/scarab/util/build/DBInitMojo.java?view=diff&pathrev=11198&r1=11197&r2=11198
==============================================================================
--- trunk/extensions/scarab-maven-plugin/src/main/java/org/tigris/scarab/util/build/DBInitMojo.java (original)
+++ trunk/extensions/scarab-maven-plugin/src/main/java/org/tigris/scarab/util/build/DBInitMojo.java 2012-04-27 07:09:25-0700
@@ -12,18 +12,16 @@
import java.util.Iterator;
import java.util.List;
-import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
/**
* Goal for building Scarab's database.
* @goal create-db
- * @execute lifecycle="sql-init" phase="process-resources"
* @author jhoechstaedter
*
*/
-public class DBInitMojo extends AbstractMojo{
+public class DBInitMojo extends PrepareDBScriptsMojo{
/**
* Type for DB, e.g, mysql, or hypersonic.
@@ -62,26 +60,6 @@
protected String dbDriver;
/**
- * Input directory for Scarab's content SQL files.
- * @parameter expression="${project.build.directory}/sql-resources/source"
- * @readonly
- */
- protected String sqlSrcDir;
-
- /**
- * Input directory for schema SQL files.
- * @parameter expression="${project.build.directory}/sql-resources/schema"
- * @readonly
- */
- protected String sqlSchemaDir;
-
- /**
- * Mode for db, e.g. "sample", "default" or "basic"
- * @parameter default-value="basic" expression="${scarab.database.build.mode}"
- */
- protected String dbMode;
-
- /**
* True if Scarab's database should not be dropped during build.
* @parameter default-value="true" expression="${scarab.database.build.drop}"
*/
@@ -246,65 +224,5 @@
Connection con = DriverManager.getConnection(dbFullUrl, dbUser, dbPassword);
return con;
}
-
- protected File getSourceDir() throws Exception{
- File srcDir = new File(sqlSrcDir);
- if(!srcDir.exists()){
- throw new MojoExecutionException("Files for data in '" + sqlSrcDir + "' not found.");
- }
- return srcDir;
- }
-
- protected File getSchemDir() throws Exception{
- File scriptSchemaDir = new File(sqlSchemaDir);
- if(!scriptSchemaDir.exists()){
- throw new MojoExecutionException("Files for schema in '" + sqlSchemaDir + "' not found.");
- }
- return scriptSchemaDir;
- }
-
- /**
- * Get SQL file for schema and content.
- * @return
- * @throws Exception
- */
- protected List getSqlFiles() throws Exception{
- File scriptDir = getSourceDir();
- File scriptSchemaDir = getSchemDir();
-
- getLog().info("scarab.database.build.mode=" + dbMode);
-
- File[] schemaSqlFiles = {// sql schema files, generated by torque:sql
- new File(scriptSchemaDir, "turbine-schema.sql"),
- new File(scriptSchemaDir, "scarab-schema.sql"),
- new File(scriptSchemaDir, "id_table-schema.sql")
- };
- File[] basicSqlFiles = {// content sql files from scr/sql
- new File(scriptDir, "turbine-id-table-init.sql"),
- new File(scriptDir, "scarab-id-table-init.sql"),
- new File(scriptDir, "scarab-security.sql"),
- new File(scriptDir, "scarab-required-data.sql"),
- new File(scriptDir, "scarab-anonymous.sql")};
-
- File[] preconfiguredSqlFiles = {
- new File(scriptDir, "scarab-default-data.sql")
- };
- File[] sampleSqlFiles = {
- new File(scriptDir, "scarab-sample-data.sql"),
- };
-
- List sqlFiles = null;
- sqlFiles = new ArrayList(Arrays.asList(schemaSqlFiles));
- sqlFiles.addAll(new ArrayList(Arrays.asList(basicSqlFiles)));
- if(dbMode.equalsIgnoreCase("default")){
- sqlFiles.addAll(new ArrayList(Arrays.asList(preconfiguredSqlFiles)));
- }
- else if(dbMode.equalsIgnoreCase("sample")){
- sqlFiles.addAll(new ArrayList(Arrays.asList(preconfiguredSqlFiles)));
- sqlFiles.addAll(new ArrayList(Arrays.asList(sampleSqlFiles)));
- }
-
- return sqlFiles;
- }
}
Added: trunk/extensions/scarab-maven-plugin/src/main/java/org/tigris/scarab/util/build/PrepareDBScriptsMojo.java
Url: http://scarab.tigris.org/source/browse/scarab/trunk/extensions/scarab-maven-plugin/src/main/java/org/tigris/scarab/util/build/PrepareDBScriptsMojo.java?view=markup&pathrev=11198
==============================================================================
--- (empty file)
+++ trunk/extensions/scarab-maven-plugin/src/main/java/org/tigris/scarab/util/build/PrepareDBScriptsMojo.java 2012-04-27 07:09:25-0700
@@ -0,0 +1,165 @@
+package org.tigris.scarab.util.build;
+
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.InputStream;
+import java.io.OutputStreamWriter;
+import java.io.StringReader;
+import java.io.Writer;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import org.apache.commons.io.IOUtils;
+import org.apache.maven.plugin.AbstractMojo;
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugin.MojoFailureException;
+
+/**
+ *
+ * This prepares the database script.
+ *
+ * @author jhoechstaedter
+ * @execute lifecycle="sql-init" phase="process-resources"
+ * @goal prepare-sql-scripts
+ */
+public class PrepareDBScriptsMojo extends AbstractMojo{
+
+ /**
+ * Input directory for Scarab's content SQL files.
+ * @parameter expression="${project.build.directory}/sql-resources/source"
+ * @readonly
+ */
+ protected String sqlSrcDir;
+
+ /**
+ * Input directory for Scarab's content SQL files.
+ * @parameter expression="${project.build.directory}/sql-resources"
+ * @readonly
+ */
+ protected String sqlResourcesDir;
+
+ /**
+ * Input directory for schema SQL files.
+ * @parameter expression="${project.build.directory}/sql-resources/schema"
+ * @readonly
+ */
+ protected String sqlSchemaDir;
+
+ /**
+ * Mode for db, e.g. "sample", "default" or "basic"
+ * @parameter default-value="basic" expression="${scarab.database.build.mode}"
+ */
+ protected String dbMode;
+
+ public void execute() throws MojoExecutionException, MojoFailureException {
+ createDatabaseScript();
+ }
+
+ /**
+ *
+ */
+ protected void createDatabaseScript(){
+ FileOutputStream fos = null;
+ Writer ostream = null;
+ try{
+ fos = new FileOutputStream(new File(sqlResourcesDir, "populate-database.sql"), true);
+ ostream = new OutputStreamWriter(fos, "UTF-8");
+ BufferedWriter output = new BufferedWriter(ostream);
+ List<File> sqlFiles = getSqlFiles();
+ for(File file : sqlFiles){
+ InputStream input = null;
+ try{
+ input = new FileInputStream(file);
+ output.newLine();
+ output.newLine();
+ IOUtils.copy(new StringReader("-- File: " + file.getName()), output);
+ output.newLine();
+ IOUtils.copy(input, output, "UTF-8");
+ }
+ catch(Exception e){
+ throw new MojoExecutionException("Failed to append file: " + file.getName() + " to output file", e);
+ }
+ finally{
+ IOUtils.closeQuietly(input);
+ }
+ }
+ output.flush();
+
+ }
+ catch(Exception e){
+ getLog().error(e.getMessage(), e);
+ }
+ finally {
+ if (fos != null) {
+ IOUtils.closeQuietly(fos);
+ }
+ if (ostream != null) {
+ IOUtils.closeQuietly(ostream);
+ }
+ }
+ }
+
+ /**
+ * Get SQL file for schema and content.
+ * @return
+ * @throws Exception
+ */
+ protected List getSqlFiles() throws Exception{
+ File scriptDir = getSourceDir();
+ File scriptSchemaDir = getSchemDir();
+
+ getLog().info("scarab.database.build.mode=" + dbMode);
+
+ File[] schemaSqlFiles = {// sql schema files, generated by torque:sql
+ new File(scriptSchemaDir, "turbine-schema.sql"),
+ new File(scriptSchemaDir, "scarab-schema.sql"),
+ new File(scriptSchemaDir, "id_table-schema.sql")
+ };
+ File[] basicSqlFiles = {// content sql files from scr/sql
+ new File(scriptDir, "turbine-id-table-init.sql"),
+ new File(scriptDir, "scarab-id-table-init.sql"),
+ new File(scriptDir, "scarab-security.sql"),
+ new File(scriptDir, "scarab-required-data.sql"),
+ new File(scriptDir, "scarab-anonymous.sql")};
+
+ File[] preconfiguredSqlFiles = {
+ new File(scriptDir, "scarab-default-data.sql")
+ };
+ File[] sampleSqlFiles = {
+ new File(scriptDir, "scarab-sample-data.sql"),
+ };
+
+ List sqlFiles = null;
+ sqlFiles = new ArrayList(Arrays.asList(schemaSqlFiles));
+ sqlFiles.addAll(new ArrayList(Arrays.asList(basicSqlFiles)));
+ if(dbMode.equalsIgnoreCase("default")){
+ sqlFiles.addAll(new ArrayList(Arrays.asList(preconfiguredSqlFiles)));
+ }
+ else if(dbMode.equalsIgnoreCase("sample")){
+ sqlFiles.addAll(new ArrayList(Arrays.asList(preconfiguredSqlFiles)));
+ sqlFiles.addAll(new ArrayList(Arrays.asList(sampleSqlFiles)));
+ }
+
+ return sqlFiles;
+ }
+
+ protected File getSourceDir() throws Exception{
+ File srcDir = new File(sqlSrcDir);
+ if(!srcDir.exists()){
+ throw new MojoExecutionException("Files for data in '" + sqlSrcDir + "' not found.");
+ }
+ return srcDir;
+ }
+
+ protected File getSchemDir() throws Exception{
+ File scriptSchemaDir = new File(sqlSchemaDir);
+ if(!scriptSchemaDir.exists()){
+ throw new MojoExecutionException("Files for schema in '" + sqlSchemaDir + "' not found.");
+ }
+ return scriptSchemaDir;
+ }
+
+}
------------------------------------------------------
http://scarab.tigris.org/ds/viewMessage.do?dsForumId=3577&dsMessageId=2954468