remm        01/06/21 13:55:18

  Modified:    src/stores/slidestore/reference JDBCDescriptorsStore.java
  Log:
  - Improve the efficiency of some of the methods which do write operations
    on the database by reusing the prepared statements.
  - Some prepared statements were not properly closed.
  - Many thanks to Mark Hortman <mark.hortman at jcafeinc.com> for this
    patch.
  
  Revision  Changes    Path
  1.19      +36 -21    
jakarta-slide/src/stores/slidestore/reference/JDBCDescriptorsStore.java
  
  Index: JDBCDescriptorsStore.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-slide/src/stores/slidestore/reference/JDBCDescriptorsStore.java,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- JDBCDescriptorsStore.java 2001/06/20 06:23:26     1.18
  +++ JDBCDescriptorsStore.java 2001/06/21 20:55:14     1.19
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-slide/src/stores/slidestore/reference/JDBCDescriptorsStore.java,v 
1.18 2001/06/20 06:23:26 msmith Exp $
  - * $Revision: 1.18 $
  - * $Date: 2001/06/20 06:23:26 $
  + * $Header: 
/home/cvs/jakarta-slide/src/stores/slidestore/reference/JDBCDescriptorsStore.java,v 
1.19 2001/06/21 20:55:14 remm Exp $
  + * $Revision: 1.19 $
  + * $Date: 2001/06/21 20:55:14 $
    *
    * ====================================================================
    *
  @@ -84,7 +84,7 @@
    * JDBC 1.0 and 2.0 compliant store implementation.
    * 
    * @author <a href="mailto:[EMAIL PROTECTED]";>Remy Maucherat</a>
  - * @version $Revision: 1.18 $
  + * @version $Revision: 1.19 $
    */
   
   public class JDBCDescriptorsStore
  @@ -568,6 +568,7 @@
                   // Load each permission
                   childrenVector.addElement(res.getString(CHILDREN_CHILDURI));
               }
  +            closeStatement(statement);
               
               statement = connection.prepareStatement
                   ("select * from links where linkto= ?");
  @@ -667,15 +668,18 @@
            statement.execute();
               closeStatement(statement);
               
  +         statement = null;
               Enumeration children = object.enumerateChildren();
               while (children.hasMoreElements()) {
  -                statement = connection.prepareStatement
  -                    ("insert into children values(?, ?)");
  +             if (statement == null){
  +                 statement = connection.prepareStatement
  +                     ("insert into children values(?, ?)");
  +             }
                   statement.setString(1, object.getUri());
                   statement.setString(2, (String)children.nextElement());
                   statement.execute();
  -                closeStatement(statement);
               }
  +         closeStatement(statement);
               
               // Updating inbound links
               /*
  @@ -757,16 +761,19 @@
               statement.execute();
               closeStatement(statement);
               
  +         statement = null;
               // Inserting children
               Enumeration children = object.enumerateChildren();
               while (children.hasMoreElements()) {
  -                statement = connection.prepareStatement
  -                    ("insert into children values(?,?)");
  +             if (statement == null){
  +                 statement = connection.prepareStatement
  +                     ("insert into children values(?,?)");
  +             }
                   statement.setString(1, uri.toString());
                   statement.setString(2, (String) children.nextElement());
                   statement.execute();
  -                closeStatement(statement);
               }
  +         closeStatement(statement);
               
               // Updating inbound links
               /*
  @@ -1259,6 +1266,7 @@
                            new NodeRevisionNumber
                                (res.getString(LATESTREVISIONS_NUMBER)));
               }
  +            closeStatement(statement);
               
               statement = connection.prepareStatement
                   ("select * from revision where uri= ?");
  @@ -1269,8 +1277,10 @@
                   String currentRevisionNumber = res.getString(REVISION_NUMBER);
                   
                   // We parse the revision list of the object
  -                statement2 = connection.prepareStatement
  -                    ("select * from branches where uri = ? and xnumber = ?");
  +             if (statement2 == null){
  +                 statement2 = connection.prepareStatement
  +                     ("select * from branches where uri = ? and xnumber = ?");
  +             }
                   statement2.setString(1, uri.toString());
                   statement2.setString(2, currentRevisionNumber);
                   ResultSet res2 = statement2.executeQuery();
  @@ -1285,8 +1295,8 @@
                                childList);
                   
                   res2.close();
  -                closeStatement(statement2);
               }
  +         closeStatement(statement2);
               
               revisionDescriptors = new NodeRevisionDescriptors
                   (uri.toString(), initialRevision, workingRevisions, 
  @@ -1553,21 +1563,23 @@
               closeStatement(statement);
               
               // Creating revision labels
  -            
  +            statement = null;
               Enumeration labels = revisionDescriptor.enumerateLabels();
               while (labels.hasMoreElements()) {
  -                statement = connection.prepareStatement
  -                    ("insert into label values(?,?,?)");
  +             if (statement == null){
  +                 statement = connection.prepareStatement
  +                     ("insert into label values(?,?,?)");
  +             }
                   statement.setString(1, uri.toString());
                   statement.setString
                       (2, revisionDescriptor.getRevisionNumber().toString());
                   statement.setString(3, (String)labels.nextElement());
                   statement.execute();
  -                closeStatement(statement);
               }
  -            
  +         closeStatement(statement);
               // Creating associated properties
               
  +         statement = null;
               Enumeration properties = revisionDescriptor.enumerateProperties();
               while (properties.hasMoreElements()) {
                   NodeProperty property = 
  @@ -1576,8 +1588,10 @@
                   if (property.isProtected()) {
                       protectedProperty = 1;
                   }
  -                statement = connection.prepareStatement
  -                    ("insert into property values(?,?,?,?,?,?,?)");
  +             if (statement == null){
  +                 statement = connection.prepareStatement
  +                     ("insert into property values(?,?,?,?,?,?,?)");
  +             }
                   statement.setString(1, uri.toString());
                   statement.setString
                       (2, revisionDescriptor.getRevisionNumber().toString());
  @@ -1587,8 +1601,9 @@
                   statement.setString(6, property.getType());
                   statement.setInt(7, protectedProperty);
                   statement.execute();
  -                closeStatement(statement);
               }
  +         closeStatement(statement);
  +
               
           } catch (SQLException e) {
               throw new ServiceAccessException(this, e);
  
  
  

Reply via email to