Subversion Repositories XServices

Compare Revisions

Ignore whitespace Rev 199 → Rev 198

/xservices/trunk/src/main/java/net/brutex/xservices/util/BrutexQuartzConnectionProvider.java
30,8 → 30,9
import java.util.ArrayList;
import java.util.List;
 
 
import lombok.extern.slf4j.Slf4j;
import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.quartz.utils.ConnectionProvider;
 
/**
38,15 → 39,15
* @author Brian Rosenberger
*
*/
@Slf4j
public class BrutexQuartzConnectionProvider implements ConnectionProvider {
private Connection conn = null;
private final Logger logger = LogManager.getLogger();
 
 
public Connection getConnection() throws SQLException {
if( conn!= null) { // Todo: && conn.conn.isValid(5)) {) {
log.debug("Checking tables on pre-exisiting database connection.");
logger.debug("Checking tables on pre-exisiting database connection.");
checkTables();
return conn;
}
54,7 → 55,7
// Class.forName("org.hsqldb.jdbc.JDBCDriver" );
Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
} catch (Exception e) {
log.error("Failed to load Derby JDBC driver.");
logger.fatal("Failed to load Derby JDBC driver.");
e.printStackTrace();
return null;
}
105,9 → 106,9
}
private synchronized void checkTables() throws SQLException {
log.debug("Checking QUARTZ database schema.");
logger.debug("Checking QUARTZ database schema.");
if(!isConnected(false)) {
log.error("Failed to validate QUARTZ database schema.");
logger.error("Failed to validate QUARTZ database schema.");
return;
}
List<String> ddl_list = new ArrayList<String>(11);
130,7 → 131,7
for (String tbl : ddl_list) {
ResultSet rs = dmd.getTables(null, "APP", tbl, null);
if (!rs.next()) {
log.debug("Adding DDL for table {}.", tbl);
logger.log(Level.INFO, "Adding DDL for table "+ tbl);
Statement st = conn.createStatement();
File ddlFile = new File(ddl + tbl + ".ddl");
String create = "";
141,16 → 142,18
}
create.trim();
if( st.execute(create)) {
log.debug("Table {} created.", tbl);
logger.log(Level.INFO, "Table " + tbl + " created.");
}
} catch (FileNotFoundException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
} catch (SQLException ex) {
log.error("Error executing statement {}", create, ex );
logger.log(Level.ERROR, "Error executing statement "+ create );
System.out.println(ex.getMessage());
}
} else {
log.trace("Table {} exists.", tbl);
logger.trace("Table "+tbl+" exists.");
}
}
}
161,15 → 164,15
} else {
String t = this.getClass().getClassLoader().getResource("/").toString().substring(6); // WEB-INF/classes
t += "../data/db";
log.debug("Database directory is set to '{}'", t);
logger.debug("Database directory is set to '" + t + "'");
try {
this.conn = DriverManager.getConnection("jdbc:derby:" + t + ";create=true;");
} catch (SQLException ex) {
log.error(ex.getMessage(), ex);
logger.error(ex.getMessage(), ex);
if(!fail) {
log.warn("Deleting database directory.");
logger.warn("Deleting database directory.");
recursiveDelete(new File(t));
log.warn("Retrying to connect to database.");
logger.warn("Retrying to connect to database.");
return isConnected(true);
} else {
return false;
178,6 → 181,7
}
return false;
}
 
}