ozeigermann 2004/03/23 06:07:41
Modified: src/stores/org/apache/slide/store/impl/rdbms
StandardRDBMSAdapter.java
Log:
Applied patch by Christophe Lombart to correctly manager table VERSION_PREDS.
Revision Changes Path
1.21 +49 -10
jakarta-slide/src/stores/org/apache/slide/store/impl/rdbms/StandardRDBMSAdapter.java
Index: StandardRDBMSAdapter.java
===================================================================
RCS file:
/home/cvs/jakarta-slide/src/stores/org/apache/slide/store/impl/rdbms/StandardRDBMSAdapter.java,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -r1.20 -r1.21
--- StandardRDBMSAdapter.java 3 Mar 2004 12:06:47 -0000 1.20
+++ StandardRDBMSAdapter.java 23 Mar 2004 14:07:41 -0000 1.21
@@ -61,7 +61,7 @@
public class StandardRDBMSAdapter extends AbstractRDBMSAdapter {
- protected static String LOG_CHANNEL = StandardRDBMSAdapter.class.getName();
+ protected static final String LOG_CHANNEL =
StandardRDBMSAdapter.class.getName();
private boolean bcompress;
@@ -709,11 +709,12 @@
PreparedStatement statement = null;
ResultSet res = null;
try {
- // FIXME Statement never executed and asymmetric vs
createRevisionDescriptors.
+
statement =
connection.prepareStatement(
"delete VERSION_PREDS from VERSION_PREDS vp, VERSION_HISTORY
vh, URI u where vp.VERSION_ID = vh.VERSION_ID and vh.URI_ID = u.URI_ID and
u.URI_STRING = ?");
statement.setString(1, uri.toString());
+ statement.executeUpdate();
} catch (SQLException e) {
throw createException(e, uri.toString());
} finally {
@@ -872,6 +873,8 @@
Hashtable workingRevisions = new Hashtable();
Hashtable latestRevisionNumbers = new Hashtable();
Hashtable branches = new Hashtable();
+ Vector allRevisions = new Vector();
+
boolean isVersioned = false;
// check if versioned
try {
@@ -892,18 +895,21 @@
try {
statement =
connection.prepareStatement(
- "select vh.REVISION_NO, b.BRANCH_STRING from
VERSION_HISTORY vh, BRANCH b, URI u where vh.BRANCH_ID = b.BRANCH_ID and vh.URI_ID =
u.URI_ID and u.URI_STRING = ?");
+ "select vh.REVISION_NO, b.BRANCH_STRING from VERSION_HISTORY
vh, BRANCH b, URI u where vh.BRANCH_ID = b.BRANCH_ID and vh.URI_ID = u.URI_ID and
u.URI_STRING = ? order by vh.REVISION_NO ");
statement.setString(1, uri.toString());
res = statement.executeQuery();
while (res.next()) {
- latestRevisionNumbers.put(res.getString(2), new
NodeRevisionNumber(res.getString(1)));
+ NodeRevisionNumber revisionNumber = new
NodeRevisionNumber(res.getString(1));
+ allRevisions.add(revisionNumber); // will be used to get
revisions successor
+ latestRevisionNumbers.put(res.getString(2), revisionNumber); //
store the lastest revision / branch
}
} finally {
close(statement, res);
}
- for (Enumeration e = latestRevisionNumbers.elements();
e.hasMoreElements();) {
+
+ for (Enumeration e = allRevisions.elements(); e.hasMoreElements();) {
NodeRevisionNumber revisionNumber = (NodeRevisionNumber)
e.nextElement();
- // get predecessors
+ // get successors
try {
statement =
connection.prepareStatement(
@@ -991,6 +997,39 @@
statement.executeUpdate();
} finally {
close(statement, res);
+ }
+ }
+
+
+ // Add revision successors
+ Enumeration revisionNumbers =
revisionDescriptors.enumerateRevisionNumbers();
+ while (revisionNumbers.hasMoreElements()) {
+ NodeRevisionNumber nodeRevisionNumber = (NodeRevisionNumber)
revisionNumbers.nextElement();
+
+ Enumeration successors =
revisionDescriptors.getSuccessors(nodeRevisionNumber);
+ while (successors.hasMoreElements())
+ {
+ try {
+ NodeRevisionNumber successor = (NodeRevisionNumber)
successors.nextElement();
+
+ statement =
+ connection.prepareStatement(
+ "insert into VERSION_PREDS (VERSION_ID,
PREDECESSOR_ID) " +
+ " select vr.version_id , suc.version_id" +
+ " FROM uri, version_history vr,
version_history suc " +
+ " where vr.uri_id = uri.uri_id " +
+ " and suc.uri_id = uri.uri_id " +
+ " and uri_string = ? " +
+ " and vr.revision_no = ? " +
+ " and suc.revision_no = ? " );
+
+ statement.setString(1, uri.toString());
+ statement.setString(2, nodeRevisionNumber.toString());
+ statement.setString(3, successor.toString());
+ statement.executeUpdate();
+ } finally {
+ close(statement);
+ }
}
}
getLogger().log(
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]