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>