Thanks to visit codestin.com
Credit goes to github.com

Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 44 additions & 0 deletions src/main/java/org/utplsql/api/DBHelper.java
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@
*/
public final class DBHelper {

public static final String UTPLSQL_VERSION = "3.0.3";
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This could be called: UTPLSQL_COMPATIBILITY_VERSION


private DBHelper() {}

/**
Expand Down Expand Up @@ -52,4 +54,46 @@ public static String getCurrentSchema(Connection conn) throws SQLException {
}
}

/**
* Check the utPLSQL version compatibility.
* @param conn the connection
* @return true if the requested utPLSQL version is compatible with the one installed on database
* @throws SQLException any database error
*/
public static boolean versionCompatibilityCheck(Connection conn, String requested, String current)
throws SQLException {
CallableStatement callableStatement = null;
try {
callableStatement = conn.prepareCall("BEGIN ? := ut_runner.version_compatibility_check(?, ?); END;");
callableStatement.registerOutParameter(1, Types.SMALLINT);
callableStatement.setString(2, requested);

if (current == null)
callableStatement.setNull(3, Types.VARCHAR);
else
callableStatement.setString(3, current);

callableStatement.executeUpdate();
return callableStatement.getInt(1) == 1;
} catch (SQLException e) {
if (e.getErrorCode() == 6550)
return false;
else
throw e;
} finally {
if (callableStatement != null)
callableStatement.close();
}
}

public static boolean versionCompatibilityCheck(Connection conn, String requested)
throws SQLException {
return versionCompatibilityCheck(conn, requested, null);
}

public static boolean versionCompatibilityCheck(Connection conn)
throws SQLException {
return versionCompatibilityCheck(conn, UTPLSQL_VERSION);
}

}
37 changes: 37 additions & 0 deletions src/test/java/org/utplsql/api/DBHelperTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
package org.utplsql.api;

import org.junit.Assert;
import org.junit.Rule;
import org.junit.Test;
import org.utplsql.api.rules.DatabaseRule;

import java.sql.SQLException;

public class DBHelperTest {

@Rule
public final DatabaseRule db = new DatabaseRule();

@Test
public void compatibleVersion() {
try {
boolean isCompatible = DBHelper.versionCompatibilityCheck(db.newConnection(), "3.0.0", "3.0.0");
Assert.assertTrue(isCompatible);
} catch (SQLException e) {
e.printStackTrace();
Assert.fail();
}
}

@Test
public void incompatibleVersion() {
try {
boolean isCompatible = DBHelper.versionCompatibilityCheck(db.newConnection(), "3.1.0", "3.0.0");
Assert.assertFalse(isCompatible);
} catch (SQLException e) {
e.printStackTrace();
Assert.fail();
}
}

}