rendered paste bodypublic class JtdsConnectionProvider {
private String username = "";
private String password = "";
private String db = "master";
boolean trusted = false;
private String ip = "";
private int port = 1433;
private String instance = "";
private String ssl = "off";
private Connection con;
private boolean connected = false;
private String lastError = "";
/**
* provide basic connection
* SQL authentication
* connection
*
* @param ip/host
* @param username
* @param password
*/
public JtdsConnectionProvider(String ip, String username, String password) {
super();
this.username = username;
this.password = password;
this.ip = ip;
}
/**
* Provide trusted
* connection
* @param ip/host
*/
public JtdsConnectionProvider(String ip) {
super();
this.ip = ip;
this.trusted = true;
}
public void overridePort(int port){
this.port = port;
}
public void overrideDB(String dbname){
this.db = dbname;
}
/** SSL **/
/** request - SSL is requested; if the server does not support it then a plain connection is used **/
public static final String SSL_LEVEL_REQUEST = "request";
/** require - SSL is requested; if the server does not support it then an exception is thrown **/
public static final String SSL_LEVEL_REQUIRE = "require";
/** authenticate - Same as require except the server's certificate must be signed by a trusted CA **/
public static final String SSL_LEVEL_AUTHENTICATE = "authenticate";
/** DEFAULT - off - SSL is not request or used; this is the default **/
public static final String SSL_LEVEL_OFF = "off";
public void requestSSL(){
this.ssl = SSL_LEVEL_REQUEST;
}
public void requireSSL(){
this.ssl = SSL_LEVEL_REQUIRE;
}
public void forceSSL(){
this.ssl = SSL_LEVEL_AUTHENTICATE;
}
public void setInstance(String instance){
this.instance = instance;
}
/** CONNECTION STRING **/
private static final String JDBC_CONNECTION_URL = "jdbc:jtds:sqlserver://";
private static final String JDBC_DATABASE_ATTRIBUTE = "databaseName=";
private static final String JDBC_INSTANCE_ATTRIBUTE = "instance=";
private static final String JDBC_SSL_LEVEL = "ssl=";
public String getConnectionString(){
StringBuilder connectionUrl = new StringBuilder(JDBC_CONNECTION_URL);
connectionUrl.append(this.ip);
connectionUrl.append(":");
connectionUrl.append(this.port);
connectionUrl.append(";");
connectionUrl.append(JDBC_DATABASE_ATTRIBUTE);
connectionUrl.append(this.db);
connectionUrl.append(";");
/** decision entries **/
addInstance(connectionUrl);
addSSL(connectionUrl);
return connectionUrl.toString();
}
/** Add SSL **/
private void addSSL(StringBuilder connectionUrl) {
if(!this.ssl.equals(SSL_LEVEL_OFF)){
connectionUrl.append(JDBC_SSL_LEVEL);
connectionUrl.append(this.ssl);
connectionUrl.append(";");
}
}
/** Add instance **/
private void addInstance(StringBuilder connectionUrl) {
if(StringUtils.isNotEmpty(this.instance)){
connectionUrl.append(JDBC_INSTANCE_ATTRIBUTE);
connectionUrl.append(this.instance);
connectionUrl.append(";");
}
}
/** CONNECTING **/
private static final String JDBC_DRIVER_NAME = "net.sourceforge.jtds.jdbc.Driver";
private Connection connect() throws Exception{
this.lastError = "";
try {
Class.forName(JDBC_DRIVER_NAME);
con = DriverManager.getConnection(getConnectionString(), this.username, this.password);
} catch (ClassNotFoundException e) {
LoggingUtil.getGlobalLogger().log(Level.SEVERE,"Could not create database connection:: " + e.toString());
lastError = "Wiring issue, class not found:" + JDBC_DRIVER_NAME + "::" + e.toString();
throw e;
}catch(SQLException e) {
LoggingUtil.getGlobalLogger().log(Level.SEVERE,"Could not create database connection error:: "+ e.toString());
lastError = "SQLException::" + e.toString();
throw e;
}catch(Throwable e){
LoggingUtil.getGlobalLogger().log(Level.SEVERE,"Could not create database connection error:: "+ e.toString());
lastError = "Catch all failure::" + e.toString();
throw new Exception(e);
}
return con;
}
public void disconnect(){
try {
this.con.close();
} catch (SQLException e) {
LoggingUtil.getGlobalLogger().log(Level.SEVERE,"Could not close database connection:: "+ e.toString());
lastError = "Failed to close connection::" + e.toString();
}finally{
this.con = null;
}
}
public boolean isConnected(){
if(this.con != null){
return true;
}
return false;
}
private Connection getConnection() throws Exception{
if(isConnected()){
return this.con;
}
return connect();
}
public String getConnectionError(){
return this.lastError;
}
public static void main(String[] args) {
JtdsConnectionProvider test1 = new JtdsConnectionProvider("10.203.80.101", "sa", "firewall");
System.out.println("Start basic-------------");
System.out.println(test1.getConnectionString());
try {
test1.getConnection();
System.out.println("Sucess - disconnect-------------");
test1.disconnect();
} catch (Exception e) {
// TODO Auto-generated catch block
System.out.println(test1.getConnectionError());
e.printStackTrace();
}
System.out.println("Add port-------------");
test1.overridePort(1433);
System.out.println(test1.getConnectionString());
try {
test1.getConnection();
System.out.println("Sucess - disconnect-------------");
test1.disconnect();
} catch (Exception e) {
System.out.println(test1.getConnectionError());
// TODO Auto-generated catch block
e.printStackTrace();
}
/**
System.out.println("Add SSL-------------");
test1.requestSSL();
System.out.println(test1.getConnectionString());
System.out.println("Add Instance-------------");
test1.setInstance("websense");
System.out.println(test1.getConnectionString());
**/
System.out.println("Change DB-------------");
test1.overrideDB("wslogdb70");
System.out.println(test1.getConnectionString());
try {
test1.getConnection();
System.out.println("Sucess - disconnect-------------");
test1.disconnect();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}