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]

Reply via email to