Revision: 141
http://polepos.svn.sourceforge.net/polepos/?rev=141&view=rev
Author: carlrosenberger
Date: 2010-11-20 14:05:07 +0000 (Sat, 20 Nov 2010)
Log Message:
-----------
cr: NestedListsJdbc is now consistent on read
Modified Paths:
--------------
trunk/polepos/src/org/polepos/data/ListHolder.java
trunk/polepos/src/org/polepos/teams/jdbc/JdbcDriver.java
trunk/polepos/src/org/polepos/teams/jdbc/NestedListsJdbc.java
trunk/polepos/src/org/polepos/teams/jdo/data/ListHolder.java
Modified: trunk/polepos/src/org/polepos/data/ListHolder.java
===================================================================
--- trunk/polepos/src/org/polepos/data/ListHolder.java 2010-11-20 12:59:52 UTC (rev 140)
+++ trunk/polepos/src/org/polepos/data/ListHolder.java 2010-11-20 14:05:07 UTC (rev 141)
@@ -159,8 +159,25 @@
public void id(long id){
this._id = id;
}
-
-
-
+ @Override
+ public boolean equals(Object obj) {
+ if(this == obj){
+ return true;
+ }
+ if(obj == null){
+ return false;
+ }
+ if(obj.getClass() != this.getClass()){
+ return false;
+ }
+ ListHolder other = (ListHolder) obj;
+ return _id == other._id;
+ }
+
+ @Override
+ public int hashCode() {
+ return (int)_id;
+ }
+
}
Modified: trunk/polepos/src/org/polepos/teams/jdbc/JdbcDriver.java
===================================================================
--- trunk/polepos/src/org/polepos/teams/jdbc/JdbcDriver.java 2010-11-20 12:59:52 UTC (rev 140)
+++ trunk/polepos/src/org/polepos/teams/jdbc/JdbcDriver.java 2010-11-20 14:05:07 UTC (rev 141)
@@ -306,15 +306,24 @@
}
public void createTable(String tablename, String[] colnames, Class[] coltypes) {
+ createTable(tablename, colnames, coltypes, colnames[0]);
+ }
+
+ public void createTable(String tablename, String[] colnames, Class[] coltypes, String primaryKey) {
String sql = "create table " + tablename + " (" + colnames[0]
+ " INTEGER NOT NULL";
for (int i = 1; i < colnames.length; i++) {
sql += ", " + colnames[i] + " " + JdbcCar.colTypesMap.get(coltypes[i]);
}
- sql += ", PRIMARY KEY(" + colnames[0] + "))";
+ if(primaryKey != null){
+ sql += ", PRIMARY KEY(" + primaryKey + ")";
+ }
+ sql += ")";
+
executeSQL(sql);
}
+
public void dropIndex(String tablename, String colname){
Statement statement = null;
Modified: trunk/polepos/src/org/polepos/teams/jdbc/NestedListsJdbc.java
===================================================================
--- trunk/polepos/src/org/polepos/teams/jdbc/NestedListsJdbc.java 2010-11-20 12:59:52 UTC (rev 140)
+++ trunk/polepos/src/org/polepos/teams/jdbc/NestedListsJdbc.java 2010-11-20 14:05:07 UTC (rev 141)
@@ -56,7 +56,9 @@
createTable(LIST_TABLE,
new String[]{ "id", "item"},
- new Class[] {Integer.TYPE, Integer.TYPE,} );
+ new Class[] {Integer.TYPE, Integer.TYPE,},
+ null);
+ createIndex(LIST_TABLE, "id");
close();
@@ -107,7 +109,8 @@
public void read() throws Throwable {
PreparedStatement listHolderStatement = prepareStatement("select * from listholder where id = ?");
PreparedStatement listStatement = prepareStatement("select * from list where id = ?");
- ListHolder root = recurseRead(listHolderStatement, listStatement, _rootId);
+ Set<ListHolder> found = new HashSet<ListHolder>();
+ ListHolder root = recurseRead(listHolderStatement, listStatement, _rootId, found);
root.accept(new Visitor<ListHolder>(){
public void visit(ListHolder listHolder){
addToCheckSum(listHolder);
@@ -117,13 +120,17 @@
private ListHolder recurseRead(PreparedStatement listHolderStatement,
- PreparedStatement listStatement, int id) throws SQLException {
+ PreparedStatement listStatement, int id, Set<ListHolder> found) throws SQLException {
listHolderStatement.setInt(ID, id);
ResultSet listHolderResultSet = listHolderStatement.executeQuery();
listHolderResultSet.next();
ListHolder listHolder = new ListHolder();
listHolder.id(id);
+ if(found.contains(listHolder)){
+ return listHolder;
+ }
+ found.add(listHolder);
listHolder.name(listHolderResultSet.getString(NAME));
listStatement.setInt(ID, id);
@@ -132,7 +139,7 @@
List <ListHolder> list = new ArrayList<ListHolder>();
listHolder.list(list);
do{
- list.add(recurseRead(listHolderStatement, listStatement, listResultSet.getInt(ITEM)));
+ list.add(recurseRead(listHolderStatement, listStatement, listResultSet.getInt(ITEM), found));
} while(listResultSet.next());
}
return listHolder;
Modified: trunk/polepos/src/org/polepos/teams/jdo/data/ListHolder.java
===================================================================
--- trunk/polepos/src/org/polepos/teams/jdo/data/ListHolder.java 2010-11-20 12:59:52 UTC (rev 140)
+++ trunk/polepos/src/org/polepos/teams/jdo/data/ListHolder.java 2010-11-20 14:05:07 UTC (rev 141)
@@ -157,5 +157,24 @@
return _list;
}
+ @Override
+ public boolean equals(Object obj) {
+ if(this == obj){
+ return true;
+ }
+ if(obj == null){
+ return false;
+ }
+ if(obj.getClass() != this.getClass()){
+ return false;
+ }
+ ListHolder other = (ListHolder) obj;
+ return _id == other._id;
+ }
+
+ @Override
+ public int hashCode() {
+ return (int)_id;
+ }
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|