diff --git a/assignment/assignment-impl/impl/src/java/org/sakaiproject/assignment/impl/conversion/api/SchemaConversionHandler.java b/assignment/assignment-impl/impl/src/java/org/sakaiproject/assignment/impl/conversion/api/SchemaConversionHandler.java deleted file mode 100644 index 43424bf5a261..000000000000 --- a/assignment/assignment-impl/impl/src/java/org/sakaiproject/assignment/impl/conversion/api/SchemaConversionHandler.java +++ /dev/null @@ -1,96 +0,0 @@ -/********************************************************************************** - * $URL: $ - * $Id: $ - *********************************************************************************** - * - * Copyright (c) 2003, 2004, 2005, 2006, 2007, 2008 Sakai Foundation - * - * Licensed under the Educational Community License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.osedu.org/licenses/ECL-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - **********************************************************************************/ - -package org.sakaiproject.assignment.impl.conversion.api; - -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; - -/** - * @author ieb - */ -public interface SchemaConversionHandler -{ - - /** - * Retrievs a single source object form a ResultSet, returns null if the - * source record does not require conversion the result set was produiced - * from selectRecord SQL - * - * @param id - * @param rs - * @return - * @throws SQLException - */ - Object getSource(String id, ResultSet rs) throws SQLException; - - /** - * Converts the source object and populates the preapred statement, the - * prepared statement is from getUpdateRecord. - * - * @param id - * @param source - * @param updateRecord - * @throws SQLException - */ - boolean convertSource(String id, Object source, PreparedStatement updateRecord) - throws SQLException; - - /** - * Validate that the source object before conversion is the same as the - * result object, after conversion, re-read from the database - * - * @param id - * the ID of the record - * @param source - * the source object created by the same implementation - * @param result - * the result object created by the same implementation - * @throws Exception - * if the result is not equivalent to the source, at which point the - * whole transaction will be rolled back - */ - void validate(String id, Object source, Object result) throws Exception; - - /** - * Get the source object for the validation record - * @param id - * @param rs - * @return - * @throws SQLException - */ - Object getValidateSource(String id, ResultSet rs) throws SQLException; - - /** - * Get the db driver - * @return - */ - String getDbDriver(); - - /** - * Set the db driver string - * @param dbDriver - * @return - */ - void setDbDriver(String dbDriver); - -} diff --git a/assignment/assignment-impl/impl/src/java/org/sakaiproject/assignment/impl/conversion/impl/CombineDuplicateSubmissionsConversionHandler.java b/assignment/assignment-impl/impl/src/java/org/sakaiproject/assignment/impl/conversion/impl/CombineDuplicateSubmissionsConversionHandler.java index 706541c14bbe..fb31e9ac6d18 100644 --- a/assignment/assignment-impl/impl/src/java/org/sakaiproject/assignment/impl/conversion/impl/CombineDuplicateSubmissionsConversionHandler.java +++ b/assignment/assignment-impl/impl/src/java/org/sakaiproject/assignment/impl/conversion/impl/CombineDuplicateSubmissionsConversionHandler.java @@ -35,7 +35,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.sakaiproject.assignment.impl.conversion.api.SchemaConversionHandler; +import org.sakaiproject.util.conversion.SchemaConversionHandler; import org.sakaiproject.entity.api.ResourceProperties; import org.sakaiproject.entity.cover.EntityManager; diff --git a/assignment/assignment-impl/impl/src/java/org/sakaiproject/assignment/impl/conversion/impl/RemoveDuplicateSubmissionsConversionHandler.java b/assignment/assignment-impl/impl/src/java/org/sakaiproject/assignment/impl/conversion/impl/RemoveDuplicateSubmissionsConversionHandler.java index 7798062259fe..e1327f377eef 100644 --- a/assignment/assignment-impl/impl/src/java/org/sakaiproject/assignment/impl/conversion/impl/RemoveDuplicateSubmissionsConversionHandler.java +++ b/assignment/assignment-impl/impl/src/java/org/sakaiproject/assignment/impl/conversion/impl/RemoveDuplicateSubmissionsConversionHandler.java @@ -25,7 +25,7 @@ import java.sql.ResultSet; import java.sql.SQLException; -import org.sakaiproject.assignment.impl.conversion.api.SchemaConversionHandler; +import org.sakaiproject.util.conversion.SchemaConversionHandler; /** * diff --git a/assignment/assignment-impl/impl/src/java/org/sakaiproject/assignment/impl/conversion/impl/SchemaConversionController.java b/assignment/assignment-impl/impl/src/java/org/sakaiproject/assignment/impl/conversion/impl/SchemaConversionController.java index 52776f446063..42230a15418a 100644 --- a/assignment/assignment-impl/impl/src/java/org/sakaiproject/assignment/impl/conversion/impl/SchemaConversionController.java +++ b/assignment/assignment-impl/impl/src/java/org/sakaiproject/assignment/impl/conversion/impl/SchemaConversionController.java @@ -33,8 +33,8 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.sakaiproject.assignment.impl.conversion.api.SchemaConversionHandler; -import org.sakaiproject.assignment.impl.conversion.impl.SchemaConversionException; +import org.sakaiproject.util.conversion.SchemaConversionHandler; +import org.sakaiproject.util.conversion.SchemaConversionException; /** * @author ieb diff --git a/assignment/assignment-impl/impl/src/java/org/sakaiproject/assignment/impl/conversion/impl/SubmitterIdAssignmentsConversionHandler.java b/assignment/assignment-impl/impl/src/java/org/sakaiproject/assignment/impl/conversion/impl/SubmitterIdAssignmentsConversionHandler.java index 27edebd66922..e1e99efb54b4 100644 --- a/assignment/assignment-impl/impl/src/java/org/sakaiproject/assignment/impl/conversion/impl/SubmitterIdAssignmentsConversionHandler.java +++ b/assignment/assignment-impl/impl/src/java/org/sakaiproject/assignment/impl/conversion/impl/SubmitterIdAssignmentsConversionHandler.java @@ -28,7 +28,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.sakaiproject.assignment.impl.conversion.api.SchemaConversionHandler; +import org.sakaiproject.util.conversion.SchemaConversionHandler; /** * Performs just the file size conversion for quota calculations diff --git a/assignment/assignment-impl/impl/src/java/org/sakaiproject/assignment/impl/conversion/impl/UpgradeSchema.java b/assignment/assignment-impl/impl/src/java/org/sakaiproject/assignment/impl/conversion/impl/UpgradeSchema.java deleted file mode 100644 index 8023ad579b47..000000000000 --- a/assignment/assignment-impl/impl/src/java/org/sakaiproject/assignment/impl/conversion/impl/UpgradeSchema.java +++ /dev/null @@ -1,176 +0,0 @@ -/********************************************************************************** - * $URL: $ - * $Id: $ - *********************************************************************************** - * - * Copyright (c) 2007, 2008 Sakai Foundation - * - * Licensed under the Educational Community License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.osedu.org/licenses/ECL-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - **********************************************************************************/ - -package org.sakaiproject.assignment.impl.conversion.impl; - -import java.io.File; -import java.io.FileInputStream; -import java.io.InputStream; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; -import java.util.Collections; -import java.util.Comparator; -import java.util.Iterator; -import java.util.List; -import java.util.Properties; - -import org.apache.commons.dbcp.cpdsadapter.DriverAdapterCPDS; -import org.apache.commons.dbcp.datasources.SharedPoolDataSource; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -import org.sakaiproject.assignment.impl.conversion.api.SchemaConversionHandler; -import org.sakaiproject.assignment.impl.conversion.impl.SchemaConversionController;; - -/** - * @author ieb - */ -public class UpgradeSchema -{ - - private static final Log log = LogFactory.getLog(UpgradeSchema.class); - - private SharedPoolDataSource tds; - - public static void main(String[] argv) - { - UpgradeSchema cc = new UpgradeSchema(); - String configFile = null; - if (argv.length > 0) - { - configFile = argv[0]; - } - try - { - cc.convert(configFile); - } - catch (Exception ex) - { - log.info("Assignment UpgradeSchema main Failed to perform conversion ", ex); - } - } - - /** - * @throws Exception - * @throws Exception - */ - private void convert(String config) throws Exception - { - - DriverAdapterCPDS cpds = new DriverAdapterCPDS(); - - Properties p = new Properties(); - if (config != null) - { - log.info("Using Config " + config); - FileInputStream fin = new FileInputStream(config); - try { - p.load(fin); - } finally { - fin.close(); - } - StringBuilder sb = new StringBuilder(); - Object[] keys = p.keySet().toArray(); - Arrays.sort(keys); - for (Object k : keys ) - { - sb.append("\n " + k + ":" + p.get(k)); - } - log.info("Loaded Properties from " + config + " as " + sb.toString()); - } - else - { - log.info("Using Default Config: upgradeschema.config"); - p.load(this.getClass().getResourceAsStream("upgradeschema.config")); - StringBuilder sb = new StringBuilder(); - Object[] keys = p.keySet().toArray(); - Arrays.sort(keys); - for (Object k : keys ) - { - sb.append("\n " + k + ":" + p.get(k)); - } - log.info("Loaded Default Properties " + config + " as " + sb.toString()); - } - - cpds.setDriver(p.getProperty("dbDriver")); - cpds.setUrl(p.getProperty("dbURL")); - cpds.setUser(p.getProperty("dbUser")); - cpds.setPassword(p.getProperty("dbPass")); - - tds = new SharedPoolDataSource(); - tds.setConnectionPoolDataSource(cpds); - tds.setMaxActive(10); - tds.setMaxWait(5); - tds.setDefaultAutoCommit(false); - -// CheckConnection cc = new CheckConnection(); -// cc.check(tds); - - List sequence = new ArrayList(); - int k = 0; - while(true) { - if ( p.get("convert."+k) != null ) { - SchemaConversionDriver s = new SchemaConversionDriver(); - s.load(p, "convert."+k); - sequence.add(s); - k++; - } else { - break; - } - - - } - - doMigrate(sequence, p.getProperty("dbDriver")); - - tds.close(); - - } - - public void doMigrate(List sequence, String dbDriver) - { - try - { - SchemaConversionController scc = new SchemaConversionController(); - for (SchemaConversionDriver spec : sequence) - { - Class handlerClass = Class.forName(spec.getHandlerClass()); - SchemaConversionHandler sch = (SchemaConversionHandler) handlerClass - .newInstance(); - sch.setDbDriver(dbDriver); - log.info("Migrating using Handler " + spec.getHandler()); - int k = 0; - scc.init(tds, sch, spec); - while (scc.migrate(tds, sch, spec)) { - log.info("Completed Batch "+(k++)); - } - log.info("Done Migrating using Handler " + spec.getHandler()); - } - - } - catch (Exception ex) - { - log.info(this + ":doMigrate Failed ", ex); - } - } -} - diff --git a/assignment/assignment-impl/impl/src/java/org/sakaiproject/assignment/impl/conversion/impl/upgradeschema.config b/assignment/assignment-impl/impl/src/java/org/sakaiproject/assignment/impl/conversion/impl/upgradeschema.config index 6c0bc06b7fa7..6debc44e7c7f 100644 --- a/assignment/assignment-impl/impl/src/java/org/sakaiproject/assignment/impl/conversion/impl/upgradeschema.config +++ b/assignment/assignment-impl/impl/src/java/org/sakaiproject/assignment/impl/conversion/impl/upgradeschema.config @@ -1,9 +1,4 @@ # UpgradeSchema Control File (Default) -# Conversion needs the database connection details -dbDriver=com.mysql.jdbc.Driver -dbURL=PUT_YOUR_URL_HERE -dbUser=PUT_YOUR_USERNAME_HERE -dbPass=PUT_YOUR_PASSWORD_HERE convert.0=SubmitterIdAssignmentsConversion convert.0.handler.class=org.sakaiproject.assignment.impl.conversion.impl.SubmitterIdAssignmentsConversionHandler diff --git a/assignment/runconversion.sh b/assignment/runconversion.sh index 0ad465d5f4bd..d0f0636d90f4 100644 --- a/assignment/runconversion.sh +++ b/assignment/runconversion.sh @@ -1,22 +1,104 @@ -#!/bin/sh -CLASSPATH="$CLASSPATH:$CATALINA_HOME/common/lib/sakai-kernel-common-1.0.4.jar" -CLASSPATH="$CLASSPATH:$CATALINA_HOME/common/lib/log4j-1.2.12.jar" -CLASSPATH="$CLASSPATH:$CATALINA_HOME/common/lib/commons-logging-1.0.4.jar" -CLASSPATH="$CLASSPATH:$CATALINA_HOME/components/sakai-kernel-component/WEB-INF/lib/sakai-kernel-util-1.0.4.jar" -CLASSPATH="$CLASSPATH:$CATALINA_HOME/components/sakai-assignment-pack/WEB-INF/lib/sakai-assignment-impl-2.6.0.jar" -CLASSPATH="$CLASSPATH:$CATALINA_HOME/components/sakai-assignment-pack/WEB-INF/lib/commons-codec-1.3.jar" -CLASSPATH="$CLASSPATH:$CATALINA_HOME/shared/lib/commons-pool-1.3.jar" -CLASSPATH="$CLASSPATH:$CATALINA_HOME/shared/lib/sakai-kernel-api-1.0.4.jar" -CLASSPATH="$CLASSPATH:$CATALINA_HOME/shared/lib/sakai-assignment-api-2.6.0.jar" -CLASSPATH="$CLASSPATH:$CATALINA_HOME/shared/lib/commons-dbcp-1.2.2.jar" -CLASSPATH="$CLASSPATH:$CATALINA_HOME/shared/lib/commons-collections-3.1.jar" - -##### JDBC DRIVER ##### -## MYSQL ## -CLASSPATH="$CLASSPATH:$CATALINA_HOME/common/lib/mysql-connector-java-3.1.14-bin.jar" -## ORACLE ## -CLASSPATH="$CLASSPATH:$CATALINA_HOME/common/lib/ojdbc14.jar" +#!/bin/bash +# +# Usage: +# ./runconversion.sh -j JDBC_DRIVER_JAR -k KERNEL_VERSION -s SAKAI_VERSION -m /path/to/m2/repository -p SAKAI_PROPERTIES_FILE UPGRADESCHEMA_CONFIG +# +# Example: +# ./runconversion.sh -j "$CATALINA_HOME/common/lib/mysql-connector-java-3.1.14-bin.jar" \ +# -p "$CATALINA_HOME/sakai/sakai.properties" \ +# -k 1.0.3 \ +# -s 2.6.0 \ +# -m ~/.m2/repository upgradeschema_mysql.config + +# The "runconversion.sh" script does not have to be run +# in place. It could be copied to the working directory. + +# For Cygwin, ensure paths are in the proper format. +cygwin=false; +case "`uname`" in + CYGWIN*) cygwin=true ;; +esac +if $cygwin; then + [ -n "$CLASSPATH" ] && CLASSPATH=`cygpath --path --unix "$CLASSPATH"` + m2repository=`cygpath --path --unix "$HOMEDRIVE""$HOMEPATH"`/.m2/repository +else + m2repository="$HOME"/.m2/repository +fi + +usage() +{ + cat<