Revision: 134
http://polepos.svn.sourceforge.net/polepos/?rev=134&view=rev
Author: carlrosenberger
Date: 2010-07-01 11:39:10 +0000 (Thu, 01 Jul 2010)
Log Message:
-----------
cr: Improved JDBC code for tree deletion to use prepared statements.
Modified Paths:
--------------
trunk/polepos/src/org/polepos/circuits/sepang/SepangDriver.java
trunk/polepos/src/org/polepos/reporters/PDFReporter.java
trunk/polepos/src/org/polepos/teams/cobra/SepangCobra.java
trunk/polepos/src/org/polepos/teams/db4o/SepangDb4o.java
trunk/polepos/src/org/polepos/teams/hibernate/SepangHibernate.java
trunk/polepos/src/org/polepos/teams/jdbc/SepangJdbc.java
trunk/polepos/src/org/polepos/teams/jdo/SepangJdo.java
trunk/polepos/src/org/polepos/teams/jpa/SepangJpa.java
trunk/polepos/src/org/polepos/teams/jvi/SepangJvi.java
Modified: trunk/polepos/src/org/polepos/circuits/sepang/SepangDriver.java
===================================================================
--- trunk/polepos/src/org/polepos/circuits/sepang/SepangDriver.java 2010-06-24 18:16:24 UTC (rev 133)
+++ trunk/polepos/src/org/polepos/circuits/sepang/SepangDriver.java 2010-07-01 11:39:10 UTC (rev 134)
@@ -19,9 +19,6 @@
package org.polepos.circuits.sepang;
-/**
- * @author Herkules
- */
public interface SepangDriver
{
@@ -29,8 +26,6 @@
void read ();
- void read_hot ();
-
void delete ();
}
Modified: trunk/polepos/src/org/polepos/reporters/PDFReporter.java
===================================================================
--- trunk/polepos/src/org/polepos/reporters/PDFReporter.java 2010-06-24 18:16:24 UTC (rev 133)
+++ trunk/polepos/src/org/polepos/reporters/PDFReporter.java 2010-07-01 11:39:10 UTC (rev 134)
@@ -48,12 +48,11 @@
public PDFReporter(String path) {
super(path);
+ // Fail early if the document is still open in Acrobat Reader and can't be written to.
+ setupDocument(path);
}
protected void report(Graph graph) {
- if(_document == null) {
- setupDocument(path());
- }
Circuit circuit = graph.circuit();
if(! circuit.equals(_circuit)){
_circuit = circuit;
@@ -136,6 +135,9 @@
private void setupDocument(String path) {
+ if(_document != null){
+ return;
+ }
String fileName = path + "/" + "PolePosition.pdf";
File file = new File(fileName);
file.delete();
@@ -144,8 +146,8 @@
_writer = PdfWriter.getInstance(_document, new FileOutputStream(file));
_document.open();
} catch (Exception exc) {
- exc.printStackTrace();
_document=null;
+ throw new RuntimeException(exc);
}
}
Modified: trunk/polepos/src/org/polepos/teams/cobra/SepangCobra.java
===================================================================
--- trunk/polepos/src/org/polepos/teams/cobra/SepangCobra.java 2010-06-24 18:16:24 UTC (rev 133)
+++ trunk/polepos/src/org/polepos/teams/cobra/SepangCobra.java 2010-07-01 11:39:10 UTC (rev 134)
@@ -132,10 +132,6 @@
readTree(tree);
}
- public void read_hot() {
- read();
- }
-
private void deleteTree(DatastoreObject tree){
DatastoreManager dm = db();
Modified: trunk/polepos/src/org/polepos/teams/db4o/SepangDb4o.java
===================================================================
--- trunk/polepos/src/org/polepos/teams/db4o/SepangDb4o.java 2010-06-24 18:16:24 UTC (rev 133)
+++ trunk/polepos/src/org/polepos/teams/db4o/SepangDb4o.java 2010-07-01 11:39:10 UTC (rev 134)
@@ -52,10 +52,6 @@
});
}
- public void read_hot() {
- read();
- }
-
public void delete() {
begin();
Tree tree = readAndActivate();
Modified: trunk/polepos/src/org/polepos/teams/hibernate/SepangHibernate.java
===================================================================
--- trunk/polepos/src/org/polepos/teams/hibernate/SepangHibernate.java 2010-06-24 18:16:24 UTC (rev 133)
+++ trunk/polepos/src/org/polepos/teams/hibernate/SepangHibernate.java 2010-07-01 11:39:10 UTC (rev 134)
@@ -60,10 +60,6 @@
}
}
- public void read_hot() {
- read();
- }
-
public void delete(){
try{
Transaction tx = db().beginTransaction();
Modified: trunk/polepos/src/org/polepos/teams/jdbc/SepangJdbc.java
===================================================================
--- trunk/polepos/src/org/polepos/teams/jdbc/SepangJdbc.java 2010-06-24 18:16:24 UTC (rev 133)
+++ trunk/polepos/src/org/polepos/teams/jdbc/SepangJdbc.java 2010-07-01 11:39:10 UTC (rev 134)
@@ -26,15 +26,10 @@
import org.polepos.circuits.sepang.*;
import org.polepos.framework.*;
-/**
- * @author Herkules
- */
public class SepangJdbc extends JdbcDriver implements SepangDriver{
private static final String TABLE = "malaysia";
- Tree lastRead;
-
public void takeSeatIn(Car car, TurnSetup setup) throws CarMotorFailureException{
super.takeSeatIn(car, setup);
openConnection();
@@ -68,8 +63,8 @@
public void read(){
try {
PreparedStatement preparedStatement = prepareStatement("select * from " + TABLE + " where id = ?");
- lastRead = read(preparedStatement, 1);
- Tree.traverse(lastRead, new TreeVisitor() {
+ Tree root = read(preparedStatement, 1);
+ Tree.traverse(root, new TreeVisitor() {
public void visit(Tree tree) {
addToCheckSum(tree.getDepth());
}
@@ -107,38 +102,44 @@
return tree;
}
- public void read_hot() {
- read();
- }
-
public void delete(){
try{
- delete(1);
- commit();
+ PreparedStatement selectStatement = prepareStatement("select * from " + TABLE + " where id=?");
+ PreparedStatement deleteStatement = prepareStatement("delete from " + TABLE + " where id=?");
+ try{
+ delete(1, selectStatement, deleteStatement);
+ commit();
+ }
+ finally{
+ selectStatement.close();
+ deleteStatement.close();
+ }
}catch ( SQLException sqlex ){
sqlex.printStackTrace();
}
}
- private void delete(int id) throws SQLException{
- ResultSetStatement resultSetStatement = null;
- int precedingID, subsequentID;
+ private void delete(int id, PreparedStatement selectStatement, PreparedStatement deleteStatement) throws SQLException{
+ ResultSet rs = null;
+ int precedingID;
+ int subsequentID;
try {
- resultSetStatement = executeQuery("select * from " + TABLE + " where id=" + id);
- ResultSet rs = resultSetStatement._resultSet;
+ selectStatement.setInt(1, id);
+ rs = selectStatement.executeQuery();
rs.next();
precedingID = rs.getInt(2);
subsequentID = rs.getInt(3);
} finally {
- closeQuery(resultSetStatement);
+ closeResultSet(rs);
}
if(precedingID > 0){
- delete(precedingID);
+ delete(precedingID, selectStatement, deleteStatement);
}
if(subsequentID > 0){
- delete(subsequentID);
+ delete(subsequentID, selectStatement, deleteStatement);
}
- executeUpdate("delete from " + TABLE + " where id=" + id);
+ deleteStatement.setInt(1, id);
+ deleteStatement.executeUpdate();
}
}
Modified: trunk/polepos/src/org/polepos/teams/jdo/SepangJdo.java
===================================================================
--- trunk/polepos/src/org/polepos/teams/jdo/SepangJdo.java 2010-06-24 18:16:24 UTC (rev 133)
+++ trunk/polepos/src/org/polepos/teams/jdo/SepangJdo.java 2010-07-01 11:39:10 UTC (rev 134)
@@ -26,9 +26,6 @@
import org.polepos.teams.jdo.data.JdoTreeVisitor;
-/**
- * @author Herkules
- */
public class SepangJdo extends JdoDriver implements SepangDriver {
private Object oid;
@@ -51,10 +48,6 @@
});
}
- public void read_hot() {
- read();
- }
-
public void delete(){
begin();
JdoTree tree = (JdoTree)db().getObjectById(oid, false);
Modified: trunk/polepos/src/org/polepos/teams/jpa/SepangJpa.java
===================================================================
--- trunk/polepos/src/org/polepos/teams/jpa/SepangJpa.java 2010-06-24 18:16:24 UTC (rev 133)
+++ trunk/polepos/src/org/polepos/teams/jpa/SepangJpa.java 2010-07-01 11:39:10 UTC (rev 134)
@@ -54,10 +54,6 @@
commit();
}
- public void read_hot() {
- read();
- }
-
public void delete(){
begin();
JpaTree tree = (JpaTree)db().find(JpaTree.class,oid);
Modified: trunk/polepos/src/org/polepos/teams/jvi/SepangJvi.java
===================================================================
--- trunk/polepos/src/org/polepos/teams/jvi/SepangJvi.java 2010-06-24 18:16:24 UTC (rev 133)
+++ trunk/polepos/src/org/polepos/teams/jvi/SepangJvi.java 2010-07-01 11:39:10 UTC (rev 134)
@@ -49,10 +49,6 @@
commit();
}
- public void read_hot() {
- read();
- }
-
public void delete(){
begin();
JviTree tree = (JviTree)(Object)db().loidToJod((Long)oid);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|