You are viewing a plain text version of this content. The canonical link for it is here.
Posted to slide-dev@jakarta.apache.org by cm...@apache.org on 2002/08/27 18:40:15 UTC
cvs commit: jakarta-slide/src/stores/org/apache/slide/store/impl/rdbms StandardRDBMSAdapter.java HSQLDBSchema.sql
cmlenz 2002/08/27 09:40:15
Modified: src/stores/org/apache/slide/store/impl/rdbms
StandardRDBMSAdapter.java HSQLDBSchema.sql
Log:
added latest revision relation
Revision Changes Path
1.8 +77 -22 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.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- StandardRDBMSAdapter.java 23 Aug 2002 13:18:53 -0000 1.7
+++ StandardRDBMSAdapter.java 27 Aug 2002 16:40:15 -0000 1.8
@@ -768,9 +768,22 @@
throw new RevisionDescriptorNotFoundException(uri.toString());
}
- Hashtable branches = new Hashtable();
+ // retrieve latest revision numbers
Hashtable latestRevisionNumbers = new Hashtable();
- Hashtable workingRevisions = new Hashtable();
+ sql.setLength(0);
+ sql.append("SELECT BRANCH_ID, REVISION_ID ").
+ append("FROM SLIDE_REVISION_LATEST ").
+ append("WHERE URI_ID = ").append(uriId);
+ rs = stmt.executeQuery(sql.toString());
+ while (rs.next()) {
+ String branch = getBranchName(conn, rs.getLong("BRANCH_ID"));
+ NodeRevisionNumber nrn =
+ new NodeRevisionNumber(
+ getRevisionNumber(conn, rs.getLong("REVISION_ID")));
+ latestRevisionNumbers.put(branch, nrn);
+ }
+
+ Hashtable branches = new Hashtable();
sql.setLength(0);
sql.append("SELECT A.REVISION_ID, A.REVISION_NUMBER, ")
.append("B.BRANCH_NAME FROM SLIDE_REVISION A, SLIDE_BRANCH B ")
@@ -794,12 +807,14 @@
predecessors.addElement(
new NodeRevisionNumber(
getRevisionNumber(conn,
- rs2.getLong("PREDECESSOR_ID"),
- uriId, branch)));
+ rs2.getLong("PREDECESSOR_ID"))));
}
branches.put(nrn, predecessors);
rs2.close();
}
+
+ Hashtable workingRevisions = new Hashtable();
+
result = new NodeRevisionDescriptors(uri.toString(),
new NodeRevisionNumber(),
workingRevisions,
@@ -852,12 +867,12 @@
.append(revisionDescriptors.isVersioned()).append(")");
stmt.execute(sql.toString());
}
-
- // for now, only the latest revision from the main branch is stored
- long branchId =
- getBranchId(conn, NodeRevisionDescriptors.MAIN_BRANCH);
+
+ String branch = NodeRevisionDescriptors.MAIN_BRANCH;
+ long branchId = getBranchId(conn, branch);
NodeRevisionNumber nrn =
revisionDescriptors.getLatestRevision();
+
sql.setLength(0);
sql.append("SELECT 1 FROM SLIDE_REVISION ")
.append("WHERE URI_ID = ").append(uriId)
@@ -874,6 +889,16 @@
stmt.execute(sql.toString());
}
+ if (nrn != null) {
+ long revisionId = getRevisionId(conn, uriId, branch, nrn);
+ sql.setLength(0);
+ sql.append("INSERT INTO SLIDE_REVISION_LATEST ").
+ append("VALUES (").append(uriId).append(", ").
+ append(branchId).append(", ").
+ append(revisionId).append(")");
+ stmt.execute(sql.toString());
+ }
+
// Creating records in the branches table
// TODO Retained from the old Slide Schema
@@ -918,11 +943,17 @@
rs = stmt.executeQuery(sql.toString());
stmt2 = conn.createStatement();
if (rs.next()) {
+ long revisionId = rs.getLong("REVISION_ID");
+
sql.setLength(0);
- sql.append("DELETE FROM SLIDE_REVISION_PREDECESSOR ")
- .append("WHERE REVISION_ID = ")
- .append(rs.getLong("REVISION_ID"));
+ sql.append("DELETE FROM SLIDE_REVISION_PREDECESSOR ").
+ append("WHERE REVISION_ID = ").append(revisionId);
stmt2.execute(sql.toString());
+
+ sql.setLength(0);
+ sql.append("DELETE FROM SLIDE_REVISION_LATEST ").
+ append("WHERE REVISION_ID = ").append(revisionId);
+
}
} catch (SQLException e) {
throw new ServiceAccessException(service, e);
@@ -1647,6 +1678,34 @@
/**
+ * Retrieve the branch name for the corresponding ID.
+ */
+ protected String getBranchName(Connection conn, long branchID)
+ throws SQLException {
+
+ Statement stmt = null;
+ try {
+ StringBuffer sql = new StringBuffer();
+ sql.append("SELECT BRANCH_NAME FROM SLIDE_BRANCH ")
+ .append("WHERE BRANCH_ID = ").append(branchID);
+ stmt = conn.createStatement();
+ ResultSet rs = stmt.executeQuery(sql.toString());
+ if (rs.next()) {
+ return rs.getString("BRANCH_NAME");
+ } else {
+ return null;
+ }
+ } finally {
+ if (stmt != null) {
+ try {
+ stmt.close();
+ } catch (SQLException sqle) { }
+ }
+ }
+ }
+
+
+ /**
* Add the branchname and id
*/
protected void setBranchId(Connection conn, String branchName)
@@ -1894,19 +1953,15 @@
* Get the revision number string for the current SLIDE_URI
*/
protected String getRevisionNumber
- (Connection conn, long versionId, long uriId, String branch)
+ (Connection conn, long versionId)
throws SQLException {
Statement stmt = null;
try {
StringBuffer sql = new StringBuffer();
stmt = conn.createStatement();
- sql.append("SELECT A.REVISION_NUMBER ")
- .append("FROM SLIDE_REVISION A, SLIDE_BRANCH B ")
- .append("WHERE A.REVISION_ID = ").append(versionId)
- .append(" AND A.URI_ID = ").append(uriId)
- .append(" AND A.BRANCH_ID = B.BRANCH_ID")
- .append(" AND B.BRANCH_NAME = '").append(branch).append("'");
+ sql.append("SELECT REVISION_NUMBER FROM SLIDE_REVISION ")
+ .append("WHERE REVISION_ID = ").append(versionId);
ResultSet rs = stmt.executeQuery(sql.toString());
if (rs.next()) {
return rs.getString("REVISION_NUMBER");
1.9 +15 -4 jakarta-slide/src/stores/org/apache/slide/store/impl/rdbms/HSQLDBSchema.sql
Index: HSQLDBSchema.sql
===================================================================
RCS file: /home/cvs/jakarta-slide/src/stores/org/apache/slide/store/impl/rdbms/HSQLDBSchema.sql,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- HSQLDBSchema.sql 27 Aug 2002 14:07:04 -0000 1.8
+++ HSQLDBSchema.sql 27 Aug 2002 16:40:15 -0000 1.9
@@ -91,10 +91,21 @@
CREATE TABLE SLIDE_REVISION_PREDECESSOR (
REVISION_ID INT NOT NULL,
PREDECESSOR_ID INT NOT NULL,
- CONSTRAINT FH_SLIDE_REVISION_PREDECESSOR
+ CONSTRAINT FK_SLIDE_REVISION_PREDECESSOR
FOREIGN KEY (REVISION_ID) REFERENCES SLIDE_REVISION (REVISION_ID),
FOREIGN KEY (PREDECESSOR_ID) REFERENCES SLIDE_REVISION (REVISION_ID),
UNIQUE (REVISION_ID, PREDECESSOR_ID)
+);
+
+CREATE TABLE SLIDE_REVISION_LATEST (
+ URI_ID INT NOT NULL,
+ BRANCH_ID INT NOT NULL,
+ REVISION_ID INT NOT NULL,
+ CONSTRAINT FK_SLIDE_REVISION_PREDECESSOR
+ FOREIGN KEY (URI_ID) REFERENCES SLIDE_REVISION_HISTORY (URI_ID),
+ FOREIGN KEY (BRANCH_ID) REFERENCES SLIDE_BRANCH (BRANCH_ID),
+ FOREIGN KEY (REVISION_ID) REFERENCES SLIDE_REVISION (REVISION_ID),
+ UNIQUE (URI_ID, BRANCH_ID)
);
CREATE TABLE SLIDE_REVISION_LABEL (
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>