Index: lams_tool_deploy/src/java/org/lamsfoundation/lams/tool/deploy/Deploy.java =================================================================== diff -u -r80b79caffb24c6e12d0c308ca492bb70751e3415 -r58266b05c67b9cc6cdf82200ccfce53a1f057fec --- lams_tool_deploy/src/java/org/lamsfoundation/lams/tool/deploy/Deploy.java (.../Deploy.java) (revision 80b79caffb24c6e12d0c308ca492bb70751e3415) +++ lams_tool_deploy/src/java/org/lamsfoundation/lams/tool/deploy/Deploy.java (.../Deploy.java) (revision 58266b05c67b9cc6cdf82200ccfce53a1f057fec) @@ -92,6 +92,7 @@ dbUpdater.setDbDriverUrl(config.getDbDriverUrl()); dbUpdater.setToolSignature(config.getToolSignature()); dbUpdater.setToolVersion(config.getToolVersion()); + dbUpdater.setToolCompatibleVersion(config.getMinServerVersionNumber()); dbUpdater.checkInstalledVersion(); if (dbUpdater.getToolExists() && forceDB==false) { @@ -216,15 +217,6 @@ { System.out.println("Activating Tool: " + config.getToolSignature()); dbUpdater.activateTool(config.getToolSignature(), 1); - - /*ToolDBActivateTask dbActivateTask = new ToolDBActivateTask(); - dbActivateTask.setDbUsername(config.getDbUsername()); - dbActivateTask.setDbPassword(config.getDbPassword()); - dbActivateTask.setDbDriverClass(config.getDbDriverClass()); - dbActivateTask.setDbDriverUrl(config.getDbDriverUrl()); - dbActivateTask.setLearningLibraryId(dbDeployTask.getLearningLibraryId()); - dbActivateTask.setToolId(dbDeployTask.getToolId()); - dbActivateTask.execute();*/ } else { Index: lams_tool_deploy/src/java/org/lamsfoundation/lams/tool/deploy/ToolDBUpdater.java =================================================================== diff -u -r80b79caffb24c6e12d0c308ca492bb70751e3415 -r58266b05c67b9cc6cdf82200ccfce53a1f057fec --- lams_tool_deploy/src/java/org/lamsfoundation/lams/tool/deploy/ToolDBUpdater.java (.../ToolDBUpdater.java) (revision 80b79caffb24c6e12d0c308ca492bb70751e3415) +++ lams_tool_deploy/src/java/org/lamsfoundation/lams/tool/deploy/ToolDBUpdater.java (.../ToolDBUpdater.java) (revision 58266b05c67b9cc6cdf82200ccfce53a1f057fec) @@ -27,7 +27,6 @@ import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; - import org.apache.commons.dbutils.DbUtils; /** @@ -43,13 +42,19 @@ // Holds value of property toolVersion private String toolVersion; - // Holds the value of property toolExists + // Holds value of property toolCompatibleversion + private String toolCompatibleVersion; + + // Holds value property toolExists private boolean toolExists; - // Holds the value of property toolNewer + // Holds value property toolNewer private boolean toolNewer; + // Holds value property compatibleVersion + private boolean compatibleVersion; + /** * Creates instance of ToolDBUpdater */ @@ -84,6 +89,7 @@ /** * Checks the tool is installed in the db, sets property toolExists * Checks the tool version in the db, sets the property toolNewer + * Checks the database Sever version is higher than the install one */ public void checkInstalledVersion() { @@ -92,7 +98,8 @@ ResultSet results = null; try { - stmt = conn.prepareStatement("SELECT tool_version FROM lams_tool WHERE tool_signature=\""+toolSignature+"\""); + + stmt = conn.prepareStatement("SELECT tool_version FROM lams_tool WHERE tool_signature=\""+toolSignature+"\""); results = stmt.executeQuery(); if (results.first()) { @@ -114,11 +121,40 @@ toolExists = false; } + // Checking the server version, uses the date section of the version for accuracy + // eg 2.0.200612051427 becomes 200612051427 + stmt = conn.prepareStatement("SELECT config_value FROM lams_configuration WHERE config_key=\"ServerVersionNumber\""); + results = stmt.executeQuery(); + if (results.first()) + { + + String dbVersionStr = results.getString("config_value"); + double dbVersion = java.lang.Double.parseDouble(dbVersionStr.substring(dbVersionStr.lastIndexOf('.'))); + double instVersion = java.lang.Double.parseDouble(toolCompatibleVersion.substring(toolCompatibleVersion.lastIndexOf('.'))); + + if (dbVersion < instVersion) + { + System.out.println("The minimum ServerVersionNumber \"" +toolCompatibleVersion+ "\" for install tool " + +this.toolSignature+ " " +this.toolVersion+ + " is higher than the current installed \"" +dbVersionStr+ "\""); + System.out.println("BUILD FAILED"); + System.exit(0); + } + else + { + this.compatibleVersion = true; + } + } + else + { + throw new DeployException("Could not get the ServerVersionNumber from the database."); + } + conn.close(); } catch (SQLException sqlex) { - throw new DeployException("Could not get tool version", sqlex); + throw new DeployException("Problem checking tool version compatibility", sqlex); } finally { @@ -187,4 +223,19 @@ * @return True if the tool to be installed is a newer version than the version in the datbase */ public boolean getToolNewer() {return this.toolNewer;} + + /** + * @return returns the toolCompatibleVersion + */ + public String getToolCompatibleVersion() {return this.toolCompatibleVersion;} + + /** + * @param ver sets toolCompatibleVersion + */ + public void setToolCompatibleVersion(String ver) {this.toolCompatibleVersion = ver;} + + /** + * @return True if tool is compatible with the server version in the db + */ + public boolean getToolCompatible() {return this.compatibleVersion;} }