Index: unix_installer/upgrader-package/bin/checkmysql.java =================================================================== diff -u -r0965ee8a6bd49be2d53cad08225f707b32a61674 -r9fd5236dbae4577a841b5e4de5132768436954d5 --- unix_installer/upgrader-package/bin/checkmysql.java (.../checkmysql.java) (revision 0965ee8a6bd49be2d53cad08225f707b32a61674) +++ unix_installer/upgrader-package/bin/checkmysql.java (.../checkmysql.java) (revision 9fd5236dbae4577a841b5e4de5132768436954d5) @@ -1,89 +1,84 @@ +import java.io.File; import java.sql.Connection; +import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; -import java.sql.SQLException; -import java.sql.DriverManager; +import java.sql.Statement; import java.util.Properties; -import java.io.*; +import java.sql.SQLException; public class checkmysql { - private String dbname, dbuser, dbpass, dburl; - - private static final String reqLamsVersion = "2.0"; - - public static void main(String args[]) + private String version; + private String dbDriverClass; + private String dbDriverUrl; + private String dbUsername; + private String dbPassword; + + // Check that the mysql version is valid + public static void main(String[] args) throws SQLException { - new checkmysql(); + checkmysql me = new checkmysql(); + + if (args.length < 4) + { + System.out.println("Usage: Java checkmysql dbDriverUrl dbUsername dbPassword version"); + System.exit(1); + } + else + { + me.execute(args[0], args[1], args[2], args[3]); + } } - - public checkmysql() + public void execute(String url, String user, String pass, String version) throws SQLException { - readProperties(); - System.out.println("Checking mysql installation"); - try - { - Class.forName("com.mysql.jdbc.Driver"); - Connection conn = DriverManager.getConnection(dburl, dbuser, dbpass); - PreparedStatement stmt = conn.prepareStatement("select config_value from lams_configuration where config_key=\"Version\""); - //PreparedStatement stmt = conn.prepareStatement("show tables"); - ResultSet result = stmt.executeQuery(); - - if (result.first()) + try{ + this.version = version; + this.dbDriverClass = "com.mysql.jdbc.Driver"; + this.dbDriverUrl = url; + this.dbUsername = user; + this.dbPassword = pass; + + Class.forName(dbDriverClass); + Connection conn = DriverManager.getConnection(dbDriverUrl, dbUsername, dbPassword); + conn.setAutoCommit(false); + PreparedStatement stmt = conn.prepareStatement("SELECT * FROM lams_configuration WHERE config_key= \"Version\""); + ResultSet results = stmt.executeQuery(); + + if (results.first() == false) { - String currVersion = result.getString("config_value"); - if (currVersion.equals(reqLamsVersion)) + throw new SQLException("Could not find LAMS database using url: " + dbDriverUrl); + } + else + { + String dbVersion = results.getString("config_value"); + if (dbVersion.equals(version) == false) { - System.out.println("Mysql databse check completed\n\nCurrent lams version: " + result.getString("config_value")); + throw new SQLException("Your current LAMS version: " +dbVersion+ " is not compatible with this upgrade. Required version: " +version); } else { - throw new SQLException("The current LAMS version (LAMS " +currVersion+ " is not compatible with this update, LAMS " + reqLamsVersion+ " is required"); - + System.out.println("LAMS version is compatible with this upgrade.\n"); } } - else - { - throw new SQLException("Result for test set was empty, your lams database is not valid"); - } - + conn.close(); } catch (SQLException e) { - System.out.println("Error detecting mysql: " + e.getMessage()); - System.exit(1); + System.out.println(e.getMessage()); + System.out.println("Upgrade failed. LAMS database check failed.\n"); + System.exit(1); } - catch (ClassNotFoundException c) - { - System.out.println("Error: " + c.getMessage()); - c.printStackTrace(); + catch (Exception e) + { + System.out.println(e.getMessage()); + System.out.println("Upgrade failed. Unknown failure checking LAMS database version.\n"); + e.printStackTrace(); System.exit(1); } - + } - - public void readProperties() - { - try - { - Properties lamsProperties = new Properties(); - lamsProperties.load(new FileInputStream("lams.properties")); - dbname = lamsProperties.getProperty("DB_NAME"); - dbuser = lamsProperties.getProperty("DB_USER"); - dbpass = lamsProperties.getProperty("DB_PASS"); - dburl = "jdbc:mysql://localhost/" +dbname+ "?characterEncoding=utf8"; - - } - catch (IOException e) - { - - System.out.println("Error: " + e.getMessage()); - System.exit(1); - - } - } - - + }