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