cmlenz      2002/08/22 01:55:54

  Modified:    src/stores/org/apache/slide/store/impl/rdbms JDBCStore.java
  Log:
  More cleanup
  
  Revision  Changes    Path
  1.10      +254 -262  
jakarta-slide/src/stores/org/apache/slide/store/impl/rdbms/JDBCStore.java
  
  Index: JDBCStore.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-slide/src/stores/org/apache/slide/store/impl/rdbms/JDBCStore.java,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- JDBCStore.java    21 Aug 2002 09:51:27 -0000      1.9
  +++ JDBCStore.java    22 Aug 2002 08:55:54 -0000      1.10
  @@ -475,8 +475,8 @@
   
           ObjectNode result = null;
           Statement stmt = null;
  -        StringBuffer sql = new StringBuffer();
           try {
  +            StringBuffer sql = new StringBuffer();
               stmt = connection.createStatement();
   
               long uriId = getUriId(uri.toString());
  @@ -577,8 +577,8 @@
           throws ServiceAccessException, ObjectNotFoundException {
   
           Statement stmt = null;
  -        StringBuffer sql = new StringBuffer();
           try {
  +            StringBuffer sql = new StringBuffer();
               stmt = connection.createStatement();
   
               long uriId = getUriId(uri.toString());
  @@ -652,8 +652,8 @@
           throws ServiceAccessException, ObjectAlreadyExistsException {
   
           Statement stmt = null;
  -        StringBuffer sql = new StringBuffer();
           try {
  +            StringBuffer sql = new StringBuffer();
               stmt = connection.createStatement();
               
               setUriId(uri.toString());
  @@ -727,8 +727,8 @@
           throws ServiceAccessException, ObjectNotFoundException {
   
           Statement stmt = null;
  -        StringBuffer sql = new StringBuffer();
           try {
  +            StringBuffer sql = new StringBuffer();
               stmt = connection.createStatement();
               
               long uriId = getUriId(object.getUri());
  @@ -784,8 +784,8 @@
           throws ServiceAccessException {
   
           Statement stmt = null;
  -        StringBuffer sql = new StringBuffer();
           try {
  +            StringBuffer sql = new StringBuffer();
               stmt = connection.createStatement();
               
               setUriId(permission.getObjectUri());
  @@ -841,8 +841,8 @@
           throws ServiceAccessException {
   
           Statement stmt = null;
  -        StringBuffer sql = new StringBuffer();
           try {
  +            StringBuffer sql = new StringBuffer();
               stmt = connection.createStatement();
               
               NodeRevisionNumber nrn = permission.getRevisionNumber();
  @@ -883,8 +883,8 @@
           throws ServiceAccessException {
   
           Statement stmt = null;
  -        StringBuffer sql = new StringBuffer();
           try {
  +            StringBuffer sql = new StringBuffer();
               stmt = connection.createStatement();
               
               sql.setLength(0);
  @@ -920,8 +920,8 @@
   
           Vector result = new Vector();
           Statement stmt = null;
  -        StringBuffer sql = new StringBuffer();
           try {
  +            StringBuffer sql = new StringBuffer();
               stmt = connection.createStatement();
               
               sql.setLength(0);
  @@ -973,8 +973,8 @@
           throws ServiceAccessException {
   
           Statement stmt = null;
  -        StringBuffer sql = new StringBuffer();
           try {
  +            StringBuffer sql = new StringBuffer();
               stmt = connection.createStatement();
               
               long lockId = getUriId(lock.getLockId());
  @@ -1044,8 +1044,8 @@
           throws ServiceAccessException, LockTokenNotFoundException {
   
           Statement stmt = null;
  -        StringBuffer sql = new StringBuffer();
           try {
  +            StringBuffer sql = new StringBuffer();
               stmt = connection.createStatement();
               
               long lockId = getUriId(lock.getLockId());
  @@ -1100,8 +1100,8 @@
   
           Vector result = new Vector();
           Statement stmt = null;
  -        StringBuffer sql = new StringBuffer();
           try {
  +            StringBuffer sql = new StringBuffer();
               stmt = connection.createStatement();
               
               sql.setLength(0);
  @@ -1156,90 +1156,85 @@
       public NodeRevisionDescriptors retrieveRevisionDescriptors(Uri uri)
           throws ServiceAccessException, RevisionDescriptorNotFoundException {
   
  -        NodeRevisionDescriptors revisionDescriptors = null;
  +        NodeRevisionDescriptors result = null;
           Statement stmt = null;
  -        Statement statement2 = null;
  -
  +        Statement stmt2 = null;
           try {
  +            StringBuffer sql = new StringBuffer();
               ResultSet rs = null;
  +            stmt = connection.createStatement();
  +            stmt2 = connection.createStatement();
  +            
  +            long uriId = getUriId(uri.toString());
   
  -            NodeRevisionNumber initialRevision = new NodeRevisionNumber();
  -            Hashtable workingRevisions = new Hashtable();
  -            Hashtable latestRevisionNumbers = new Hashtable();
  -            Hashtable branches = new Hashtable();
  +            // find out whether the node is versioned
               boolean isVersioned = false;
  -            long uriId = getUriId(uri.toString());
  -            stmt = connection.createStatement();
  -            statement2 = connection.createStatement();
  -            StringBuffer sql =
  -                new StringBuffer("select IS_VERSIONED from VERSION");
  -            sql.append(" where URI_ID= ");
  -            sql.append(uriId);
  +            sql.setLength(0);
  +            sql.append("SELECT IS_VERSIONED FROM VERSION ")
  +               .append("WHERE URI_ID = ").append(uriId);
               rs = stmt.executeQuery(sql.toString());
  -
               if (rs.next()) {
                   isVersioned = rs.getBoolean("IS_VERSIONED");
               } else {
                   throw new RevisionDescriptorNotFoundException(uri.toString());
               }
  -
  -
  -            sql = new StringBuffer("select VERSION_ID,REVISION_NO, ");
  -            sql.append("B.BRANCH_STRING  from VERSION_HISTORY A , ");
  -            sql.append("BRANCH B where A.URI_ID= ");
  -            sql.append(uriId).append(" and A.BRANCH_ID = B.BRANCH_ID");
  +            
  +            Hashtable branches = new Hashtable();
  +            Hashtable latestRevisionNumbers = new Hashtable();
  +            Hashtable workingRevisions = new Hashtable();
  +            sql.setLength(0);
  +            sql.append("SELECT A.VERSION_ID, A.REVISION_NO, B.BRANCH_STRING ")
  +               .append("FROM VERSION_HISTORY A, BRANCH B ")
  +               .append("WHERE A.URI_ID = ").append(uriId)
  +               .append(" AND A.BRANCH_ID = B.BRANCH_ID");
               rs = stmt.executeQuery(sql.toString());
  -
  -            while(rs.next()) {
  -                String branchid = rs.getString("BRANCH_STRING");
  -
  -                long versionid = rs.getLong("VERSION_ID");
  -                String currentRevisionNumber = rs.getString("REVISION_NO");
  -                latestRevisionNumbers
  -                    .put(branchid,
  -                        new NodeRevisionNumber(currentRevisionNumber));
  -
  -
  +            while (rs.next()) {
  +                String branch = rs.getString("BRANCH_STRING");
  +                long versionId = rs.getLong("VERSION_ID");
  +                NodeRevisionNumber nrn =
  +                    new NodeRevisionNumber(rs.getString("REVISION_NO"));
  +                
                   // We parse the revision list of the object
  -                sql = new StringBuffer("select PREDECESSOR_ID from ");
  -                sql.append("VERSION_PREDS where VERSION_ID  = ");
  -                sql.append(versionid);
  -                ResultSet res2 = statement2.executeQuery(sql.toString());
  -                Vector childList = new Vector();
  -
  -                while (res2.next()) {
  -                    childList.addElement(new NodeRevisionNumber
  -                        (getXNumber(res2.getLong("PREDECESSOR_ID"),
  -                                         uriId,
  -                                         branchid)));
  -                }
  -
  -                branches.put(new NodeRevisionNumber(currentRevisionNumber),
  -                             childList);
  -
  -                res2.close();
  -            }
  -
  -            revisionDescriptors = new NodeRevisionDescriptors
  -                (uri.toString(), initialRevision, workingRevisions,
  -                 latestRevisionNumbers, branches, isVersioned);
  -
  +                sql.setLength(0);
  +                sql.append("SELECT PREDECESSOR_ID FROM VERSION_PREDS ")
  +                   .append("WHERE VERSION_ID = ").append(versionId);
  +                ResultSet rs2 = stmt2.executeQuery(sql.toString());
  +                Vector predecessors = new Vector();
  +                while (rs2.next()) {
  +                    predecessors.addElement(
  +                        new NodeRevisionNumber(
  +                            getXNumber(rs2.getLong("PREDECESSOR_ID"), uriId,
  +                                       branch)));
  +                }
  +                branches.put(nrn, predecessors);
  +                rs2.close();
  +            }
  +            result = new NodeRevisionDescriptors(uri.toString(),
  +                                                 new NodeRevisionNumber(),
  +                                                 workingRevisions,
  +                                                 latestRevisionNumbers,
  +                                                 branches, isVersioned);
           } catch (SQLException e) {
               getLogger().log(e,LOG_CHANNEL,Logger.ERROR);
               throw new ServiceAccessException(this, e);
           } finally {
               try {
  -                stmt.close();
  -                statement2.close();
  +                if (stmt != null) {
  +                    stmt.close();
  +                }
  +                if (stmt2 != null) {
  +                    stmt2.close();
  +                }
               } catch (SQLException e) {
                   getLogger().log(e,LOG_CHANNEL,Logger.ERROR);
                   throw new ServiceAccessException(this, e);
               }
           }
  -        return revisionDescriptors;
  +        
  +        return result;
       }
  -
  -
  +    
  +    
       /**
        * Create a new revision information object.
        *
  @@ -1255,56 +1250,45 @@
           // creating the new records in the database.
   
           Statement stmt = null;
  -
           try {
  +            StringBuffer sql = new StringBuffer();
               ResultSet rs = null;
  -
  -            // Creating record in revisions tables
  -
  -            int isVersioned = 0;
  -            if (revisionDescriptors.isVersioned()) {
  -                isVersioned = 1;
  -            }
  -            long urid = getUriId(uri.toString());
               stmt = connection.createStatement();
   
  -            StringBuffer sql =
  -                    new StringBuffer("SELECT 1 FROM VERSION WHERE URI_ID =");
  -            sql.append(urid);
  +            long uriId = getUriId(uri.toString());
  +
  +            // Creating record in revisions tables
  +            sql.setLength(0);
  +            sql.append("SELECT 1 FROM VERSION WHERE URI_ID = ").append(uriId);
               rs = stmt.executeQuery(sql.toString());
               if (!rs.next()) {
  -                sql = new StringBuffer("insert into VERSION ");
  -                sql.append("(URI_ID,IS_VERSIONED) values( ");
  -                sql.append(urid).append(", ").append(isVersioned)
  -                      .append(")");
  +                sql.setLength(0);
  +                sql.append("INSERT INTO VERSION (URI_ID, IS_VERSIONED) ")
  +                   .append("VALUES (").append(uriId).append(", ")
  +                   .append(revisionDescriptors.isVersioned()).append(")");
                   stmt.execute(sql.toString());
               }
   
  -          // For now, only the latest revision from the main branch is stored
  -            long brid = getBranchID( NodeRevisionDescriptors.
  -                                            MAIN_BRANCH.toString());
  -            sql = new StringBuffer
  -                            ("SELECT 1 FROM VERSION_HISTORY WHERE URI_ID =");
  -            sql.append(urid).append(" and BRANCH_ID = ").append(brid);
  -            if (revisionDescriptors.getLatestRevision() == null) {
  -                sql.append(" and REVISION_NO = ").append("NULL");
  -            } else {
  -                sql.append(" and REVISION_NO = '").
  -                append(revisionDescriptors.getLatestRevision().toString())
  -                .append("'");
  -            }
  +            // for now, only the latest revision from the main branch is stored
  +            long branchId = getBranchID(NodeRevisionDescriptors.MAIN_BRANCH);
  +            NodeRevisionNumber nrn =
  +                revisionDescriptors.getLatestRevision();
  +            sql.setLength(0);
  +            sql.append("SELECT 1 FROM VERSION_HISTORY ")
  +               .append("WHERE URI_ID = ").append(uriId)
  +               .append(" AND BRANCH_ID = ").append(branchId)
  +               .append(" AND REVISION_NO ")
  +               .append((nrn != null) ? ("= '" + nrn + "'") : " IS NULL");
               rs = stmt.executeQuery(sql.toString());
  -            if (!rs.next()) {
  -                if (revisionDescriptors.getLatestRevision() != null) {
  -                    sql = new StringBuffer("insert into VERSION_HISTORY ");
  -                    sql.append("(URI_ID,BRANCH_ID,REVISION_NO) values(");
  -                    sql.append(urid).append(", ").append(brid);
  -                    sql.append(", '").append(
  -                            revisionDescriptors.getLatestRevision().toString())
  -                            .append("')");
  -                    stmt.execute(sql.toString());
  -                }
  +            if (!rs.next() && (nrn != null)) {
  +                sql.setLength(0);
  +                sql.append("INSERT INTO VERSION_HISTORY ")
  +                   .append("(URI_ID, BRANCH_ID, REVISION_NO) ")
  +                   .append("VALUES (").append(uriId).append(", ")
  +                   .append(branchId).append(", '").append(nrn).append("')");
  +                stmt.execute(sql.toString());
               }
  +            
               // Creating records in the branches table
               // TODO Retained from the old Slide Schema
   
  @@ -1313,7 +1297,9 @@
               throw new ServiceAccessException(this, e);
           } finally {
               try {
  -                stmt.close();
  +                if (stmt != null) {
  +                    stmt.close();
  +                }
               } catch (SQLException e) {
                   getLogger().log(e,LOG_CHANNEL,Logger.ERROR);
                   throw new ServiceAccessException(this, e);
  @@ -1338,7 +1324,6 @@
   
           removeRevisionDescriptors(uri);
           createRevisionDescriptors(uri, revisionDescriptors);
  -
       }
   
   
  @@ -1352,29 +1337,36 @@
           throws ServiceAccessException {
   
           Statement stmt = null;
  -
  +        Statement stmt2 = null;
           try {
  -            long uriId = getUriId(uri.toString());
  +            StringBuffer sql = new StringBuffer();
               ResultSet rs = null;
               stmt = connection.createStatement();
  -            StringBuffer sql = new StringBuffer
  -                ("SELECT VERSION_ID FROM VERSION_HISTORY");
  -            sql.append(" where URI_ID = ");
  -            sql.append(uriId);
  +            
  +            long uriId = getUriId(uri.toString());
  +            
  +            sql.setLength(0);
  +            sql.append("SELECT VERSION_ID FROM VERSION_HISTORY ")
  +               .append("WHERE URI_ID = ").append(uriId);
               rs = stmt.executeQuery(sql.toString());
  -            Statement substatement = connection.createStatement();
  +            stmt2 = connection.createStatement();
               if (rs.next()) {
  -                sql = new StringBuffer
  -                ("delete from VERSION_PREDS where VERSION_ID = ");
  -                sql.append(rs.getLong("VERSION_ID"));
  -                substatement.execute(sql.toString());
  +                sql.setLength(0);
  +                sql.append("DELETE FROM VERSION_PREDS WHERE VERSION_ID = ")
  +                   .append(rs.getLong("VERSION_ID"));
  +                stmt2.execute(sql.toString());
               }            
           } catch (SQLException e) {
               getLogger().log(e,LOG_CHANNEL,Logger.ERROR);
               throw new ServiceAccessException(this, e);
           } finally {
               try {
  -                stmt.close();
  +                if (stmt != null) {
  +                    stmt.close();
  +                }
  +                if (stmt2 != null) {
  +                    stmt2.close();
  +                }
               } catch (SQLException e) {
                   getLogger().log(e,LOG_CHANNEL,Logger.ERROR);
                   throw new ServiceAccessException(this, e);
  @@ -1394,63 +1386,56 @@
        * @param revisionNumber Node revision number
        */
       public NodeRevisionDescriptor retrieveRevisionDescriptor
  -        (Uri uri, NodeRevisionNumber revisionNumber)
  +        (Uri uri, NodeRevisionNumber nrn)
           throws ServiceAccessException, RevisionDescriptorNotFoundException {
   
  -        NodeRevisionDescriptor revisionDescriptor = null;
  -        Statement stmt = null;
  -
  -        if (revisionNumber == null) {
  +        if (nrn == null) {
  +            // TODO: should throw a NullPointerException
               throw new RevisionDescriptorNotFoundException(uri.toString());
           }
   
  +        NodeRevisionDescriptor result = null;
  +        Statement stmt = null;
           try {
  -
  +            StringBuffer sql = new StringBuffer();
               ResultSet rs = null;
  +            stmt = connection.createStatement();
  +            
               long uriId = getUriId(uri.toString());
  +            
  +            // retrieve branch name and version ID
               String branchName = null;
  -            Vector labels = new Vector();
  -            Hashtable properties = new Hashtable();
  -
  -            // Retrieving branch name (and also check that revision
  -            // does indeed exist)
  -
  -            stmt = connection.createStatement();
  -            StringBuffer sql = new StringBuffer("select A.VERSION_ID, ");
  -            sql.append("B.BRANCH_STRING from VERSION_HISTORY A, BRANCH B");
  -            sql.append(" where A.URI_ID = ");
  -            sql.append(uriId).append(" and A.REVISION_NO = '");
  -            sql.append(revisionNumber.toString());
  -            sql.append("' and B.BRANCH_ID = A.BRANCH_ID");
  +            long versionId = 0;
  +            sql.setLength(0);
  +            sql.append("SELECT A.VERSION_ID, B.BRANCH_STRING ")
  +               .append("FROM VERSION_HISTORY A, BRANCH B ")
  +               .append("WHERE A.URI_ID = ").append(uriId)
  +               .append(" AND A.REVISION_NO = '").append(nrn.toString());
  +            sql.append("' AND B.BRANCH_ID = A.BRANCH_ID");
               rs = stmt.executeQuery(sql.toString());
  -            long Version_ID = 0;
               if (rs.next()) {
                   branchName = rs.getString("BRANCH_STRING");
  -                Version_ID = rs.getLong("VERSION_ID");
  +                versionId = rs.getLong("VERSION_ID");
               } else {
                   throw new RevisionDescriptorNotFoundException(uri.toString());
               }
   
  -
  -            // Retrieve labels
  -
  -            sql = new StringBuffer
  -                 ("select LABEL_ID from VERSION_LABELS where VERSION_ID = ");
  -            sql.append(Version_ID);
  +            // retrieve labels
  +            Vector labels = new Vector();
  +            sql.setLength(0);
  +            sql.append("SELECT LABEL_ID FROM VERSION_LABELS ")
  +               .append("WHERE VERSION_ID = ").append(versionId);
               rs = stmt.executeQuery(sql.toString());
  -
               while (rs.next()) {
                   labels.addElement(getLabelName(rs.getLong("LABEL_ID")));
               }
   
  -
               // Retrieve properties
  -
  -            sql = new StringBuffer
  -                    ("select * from PROPERTIES where VERSION_ID = ");
  -            sql.append(Version_ID);
  +            Hashtable properties = new Hashtable();
  +            sql.setLength(0);
  +            sql.append("SELECT * FROM PROPERTIES WHERE VERSION_ID = ")
  +               .append(versionId);
               rs = stmt.executeQuery(sql.toString());
  -
               while (rs.next()) {
                   String propertyName = rs.getString("PROPERTY_NAME");
                   String propertyNamespace = rs.getString("PROPERTY_NAMESPACE");
  @@ -1463,23 +1448,24 @@
                   properties.put(propertyNamespace + propertyName, property);
               }
   
  -            revisionDescriptor =
  -                new NodeRevisionDescriptor(revisionNumber, branchName,
  -                                           labels, properties);
  -
  +            result = new NodeRevisionDescriptor(nrn, branchName, labels,
  +                                                properties);
  +            
           } catch (SQLException e) {
               getLogger().log(e,LOG_CHANNEL,Logger.ERROR);
               throw new ServiceAccessException(this, e);
           } finally {
               try {
  -                stmt.close();
  +                if (stmt != null) {
  +                    stmt.close();
  +                }
               } catch (SQLException e) {
                   getLogger().log(e,LOG_CHANNEL,Logger.ERROR);
                   throw new ServiceAccessException(this, e);
               }
           }
   
  -        return revisionDescriptor;
  +        return result;
       }
   
   
  @@ -1495,98 +1481,101 @@
           throws ServiceAccessException {
   
           Statement stmt = null;
  -
  +        PreparedStatement pstmt = null;
           try {
  +            StringBuffer sql = new StringBuffer();
               ResultSet rs = null;
  +            stmt = connection.createStatement();
   
               long uriId = getUriId(uri.toString());
  -            long brid = getBranchID(revisionDescriptor.getBranchName());
  -            if (brid == 0 ) {
  +            long branchId = getBranchID(revisionDescriptor.getBranchName());
  +            if (branchId == 0) {
                   setBranchID(revisionDescriptor.getBranchName());
  -                brid = getBranchID(revisionDescriptor.getBranchName());
  +                branchId = getBranchID(revisionDescriptor.getBranchName());
               }
  -            stmt = connection.createStatement();
  -
  -            StringBuffer sql = new StringBuffer
  -                    ("SELECT 1 FROM VERSION WHERE URI_ID =");
  -            sql.append(uriId);
  +            
  +            // TODO: this automatically creates the corresponding 
  +            // NodeRevisionDescriptors if they do not exist... 
  +            // is that intended?
  +            sql.setLength(0);
  +            sql.append("SELECT 1 FROM VERSION WHERE URI_ID = ")
  +               .append(uriId);
               rs = stmt.executeQuery(sql.toString());
               if (!rs.next()) {
  -                sql = new StringBuffer
  -                        ("insert into VERSION (URI_ID,IS_VERSIONED) values( ");
  -                sql.append(uriId).append(", ").append(0).append(")");
  +                sql.setLength(0);
  +                sql.append("INSERT INTO VERSION (URI_ID, IS_VERSIONED) ")
  +                   .append("VALUES (").append(uriId).append(", ").append(0)
  +                   .append(")");
                   stmt.execute(sql.toString());
               }
  -
  -            sql = new StringBuffer
  -                        ("SELECT 1 FROM VERSION_HISTORY WHERE URI_ID =");
  -            sql.append(uriId).append(" and BRANCH_ID = ");
  -            sql.append(brid).append(" and REVISION_NO = '" );
  -            sql.append(revisionDescriptor.getRevisionNumber().toString());
  -            sql.append("'");
  -
  +            
  +            sql.setLength(0);
  +            sql.append("SELECT 1 FROM VERSION_HISTORY WHERE URI_ID = ")
  +               .append(uriId).append(" AND BRANCH_ID = ")
  +               .append(branchId).append(" AND REVISION_NO = '" )
  +               .append(revisionDescriptor.getRevisionNumber().toString())
  +               .append("'");
               rs = stmt.executeQuery(sql.toString());
  -
               if (!rs.next()) {
  -
  -                sql = new StringBuffer
  -                    ("insert into VERSION_HISTORY (URI_ID,BRANCH_ID,");
  -                sql.append("REVISION_NO) values(");
  -                sql.append(uriId).append(", ").append(brid);
  -                sql.append(", '").append
  -                    (revisionDescriptor.getRevisionNumber().toString());
  -                sql.append("')");
  +                sql.setLength(0);
  +                sql.append("INSERT INTO VERSION_HISTORY (URI_ID, BRANCH_ID, ")
  +                   .append("REVISION_NO) VALUES (")
  +                   .append(uriId).append(", ").append(branchId).append(", '")
  +                   .append(revisionDescriptor.getRevisionNumber().toString())
  +                   .append("')");
                   stmt.execute(sql.toString());
               }
  -            long Version_ID = getVersionID(uriId,
  -                            revisionDescriptor.getBranchName(),
  -                            revisionDescriptor.getRevisionNumber().toString());
  -
  -            // Creating revision labels
  +            
  +            long versionId =
  +                getVersionID(uriId, revisionDescriptor.getBranchName(),
  +                             revisionDescriptor.getRevisionNumber().toString());
  +            
  +            // create revision labels
               Enumeration labels = revisionDescriptor.enumerateLabels();
               while (labels.hasMoreElements()) {
  -                String sLabel =(String)labels.nextElement();
  -                long label= getLabelID(sLabel);
  -                if (label == 0) {
  -                    setLabelID(sLabel);
  -                    label= getLabelID(sLabel);
  -                }
  -                sql = new StringBuffer("insert into VERSION_LABELS ");
  -                sql.append("(VERSION_ID,LABEL_ID) values( ");
  -                sql.append(Version_ID).append(", ");
  -                sql.append(label).append(")");
  +                String label =(String)labels.nextElement();
  +                long labelId = getLabelID(label);
  +                if (labelId == 0) {
  +                    setLabelID(label);
  +                    labelId = getLabelID(label);
  +                }
  +                sql.setLength(0);
  +                sql.append("INSERT INTO VERSION_LABELS (VERSION_ID,LABEL_ID) ")
  +                   .append("VALUES (").append(versionId).append(", ")
  +                   .append(labelId).append(")");
                   stmt.execute(sql.toString());
               }
   
  -            // Creating associated properties
  +            // create associated properties
               Enumeration properties = revisionDescriptor.enumerateProperties();
  -            PreparedStatement pstmt = connection.prepareStatement
  -                ("insert into PROPERTIES (VERSION_ID,PROPERTY_NAMESPACE,"
  -                +"PROPERTY_NAME,PROPERTY_VALUE,PROPERTY_TYPE,IS_PROTECTED)"
  -                +" values(?,?,?,?,?,? )");
  +            sql.setLength(0);
  +            sql.append("INSERT INTO PROPERTIES (VERSION_ID, ")
  +               .append("PROPERTY_NAMESPACE, PROPERTY_NAME, PROPERTY_VALUE, ")
  +               .append("PROPERTY_TYPE, IS_PROTECTED) ")
  +               .append("VALUES (?, ?, ?, ?, ?, ?)");
  +            pstmt = connection.prepareStatement(sql.toString());
               while (properties.hasMoreElements()) {
  -                NodeProperty property =
  -                    (NodeProperty) properties.nextElement();
  -                int protectedProperty = 0;
  -                if (property.isProtected()) {
  -                    protectedProperty = 1;
  -                }
  -                pstmt.setLong(1,Version_ID);
  -                pstmt.setString(2,property.getNamespace());
  -                pstmt.setString(3,property.getName());
  -                pstmt.setString(4,property.getValue().toString());
  -                pstmt.setString(5,property.getType());
  -                pstmt.setInt(6,protectedProperty);
  +                NodeProperty property = (NodeProperty)properties.nextElement();
  +                pstmt.setLong(1, versionId);
  +                pstmt.setString(2, property.getNamespace());
  +                pstmt.setString(3, property.getName());
  +                pstmt.setString(4, property.getValue().toString());
  +                pstmt.setString(5, property.getType());
  +                pstmt.setBoolean(6, property.isProtected());
                   pstmt.execute();
               }
  -            pstmt.close();
  -
  +            
           } catch (SQLException e) {
               getLogger().log(e,LOG_CHANNEL,Logger.ERROR);
               throw new ServiceAccessException(this, e);
           } finally {
               try {
  -                stmt.close();
  +                if (stmt != null) {
  +                    stmt.close();
  +                }
  +                if (pstmt != null) {
  +                    pstmt.close();
  +                }
               } catch (SQLException e) {
                   getLogger().log(e,LOG_CHANNEL,Logger.ERROR);
                   throw new ServiceAccessException(this, e);
  @@ -1608,6 +1597,7 @@
       public void storeRevisionDescriptor
           (Uri uri, NodeRevisionDescriptor revisionDescriptor)
           throws ServiceAccessException, RevisionDescriptorNotFoundException {
  +        
           myRevisionDescriptor = revisionDescriptor;
           removeRevisionDescriptor(uri, revisionDescriptor.getRevisionNumber());
           createRevisionDescriptor(uri, revisionDescriptor);
  @@ -1621,36 +1611,37 @@
        * @param revisionNumber Revision number
        * @exception ServiceAccessException Service access error
        */
  -    public void removeRevisionDescriptor(Uri uri,
  -                        NodeRevisionNumber revisionNumber)
  -                        throws ServiceAccessException {
  -
  +    public void removeRevisionDescriptor(Uri uri, NodeRevisionNumber nrn)
  +        throws ServiceAccessException {
  +        
           Statement stmt = null;
  -
           try {
  +            StringBuffer sql = new StringBuffer();
               stmt = connection.createStatement();
  +            
               long uriId = getUriId(uri.toString());
  -            String revisionNumberStr =
  -                (revisionNumber == null) ? "NULL" : revisionNumber.toString();
  +            
               String branchStr = null;
  -            try {
  +            if (myRevisionDescriptor != null) {
                   branchStr = myRevisionDescriptor.getBranchName();
  -            } catch (NullPointerException npex) {
  +            } else {
                   branchStr = "main";
               }
  -            long Version_ID =
  -                getVersionID(uriId,branchStr,revisionNumberStr);
  -            // Removing revision labels
  -            StringBuffer sql = new StringBuffer
  -                        ("delete from VERSION_LABELS where VERSION_ID= ");
  -            sql.append(Version_ID);
  +            
  +            long versionId =
  +                getVersionID(uriId, branchStr,
  +                             (nrn != null) ? nrn.toString() : "NULL");
  +            
  +            // remove revision labels
  +            sql.setLength(0);
  +            sql.append("DELETE FROM VERSION_LABELS WHERE VERSION_ID = ");
  +            sql.append(versionId);
               stmt.execute(sql.toString());
   
  -            // Removing associated properties
  -
  -            sql = new StringBuffer
  -                            ("delete from PROPERTIES where VERSION_ID= ");
  -            sql.append(Version_ID);
  +            // remove associated properties
  +            sql.setLength(0);
  +            sql.append("DELETE FROM PROPERTIES WHERE VERSION_ID = ");
  +            sql.append(versionId);
               stmt.execute(sql.toString());
   
           } catch (SQLException e) {
  @@ -1658,13 +1649,14 @@
               throw new ServiceAccessException(this, e);
           } finally {
               try {
  -                stmt.close();
  +                if (stmt != null) {
  +                    stmt.close();
  +                }
               } catch (SQLException e) {
                   getLogger().log(e,LOG_CHANNEL,Logger.ERROR);
                   throw new ServiceAccessException(this, e);
               }
           }
  -
       }
   
   
  @@ -1689,13 +1681,13 @@
           Statement selectStatement=null;
           try {
   
  -            long versionid = getVersionID(getUriId(revisionUri),
  +            long versionId = getVersionID(getUriId(revisionUri),
                                             revisionDescriptor.getBranchName(),
                                             revisionNumber);
               selectStatement = connection.createStatement();
               StringBuffer sql = new StringBuffer
                   ("select CONTENT from VERSION_CONTENT where VERSION_ID = ");
  -            sql.append(versionid);
  +            sql.append(versionId);
               ResultSet rs = selectStatement.executeQuery(sql.toString());
   
               if (!rs.next()) {
  @@ -1769,14 +1761,14 @@
   
           try {
   
  -            long versionid = getVersionID(getUriId(revisionUri),
  +            long versionId = getVersionID(getUriId(revisionUri),
                                             revisionDescriptor.getBranchName(),
                                             revisionNumber);
   
               selectStatement = connection.createStatement();
               StringBuffer sql = new StringBuffer
                       ("select 1 from VERSION_CONTENT where VERSION_ID = ");
  -            sql.append(versionid);
  +            sql.append(versionId);
               ResultSet rs = selectStatement.executeQuery(sql.toString());
               if (rs.next()) {
                   rs.close();
  @@ -1835,14 +1827,14 @@
   
           try {
   
  -            long versionid = getVersionID(getUriId(revisionUri),
  +            long versionId = getVersionID(getUriId(revisionUri),
                                             revisionDescriptor.getBranchName(),
                                             revisionNumber);
   
               selectStatement = connection.createStatement();
               StringBuffer sql = new StringBuffer
                       ("select 1 from VERSION_CONTENT where VERSION_ID = ");
  -            sql.append(versionid);
  +            sql.append(versionId);
               ResultSet rs = selectStatement.executeQuery(sql.toString());
   
               if (!rs.next()) {
  @@ -1899,10 +1891,10 @@
               revisionDescriptor.getRevisionNumber().toString();
   
           try {
  -            long versionid = getVersionID(getUriId(revisionUri),
  +            long versionId = getVersionID(getUriId(revisionUri),
                                             revisionDescriptor.getBranchName(),
                                             revisionNumber);
  -            removeContent(versionid);
  +            removeContent(versionId);
   
           } catch (Exception e) {
               getLogger().log(e,LOG_CHANNEL,Logger.ERROR);
  @@ -2269,20 +2261,20 @@
                                   NodeRevisionContent revisionContent)
           throws IOException, SQLException {
   
  -        long versionid = getVersionID(getUriId(revisionUri),
  +        long versionId = getVersionID(getUriId(revisionUri),
                                         revisionDescriptor.getBranchName(),
                                         revisionNumber);
  -        if (versionid == 0 ) {
  +        if (versionId == 0 ) {
               setVersionID(getUriId(revisionUri),
                            getBranchID(revisionDescriptor.getBranchName()),
                            revisionNumber);
  -            versionid = getVersionID(getUriId(revisionUri),
  +            versionId = getVersionID(getUriId(revisionUri),
                                        revisionDescriptor.getBranchName(),
                                        revisionNumber);
           }
           PreparedStatement insertStatement = connection.prepareStatement
               ("insert into VERSION_CONTENT values(?, ?)");
  -        insertStatement.setLong(1, versionid);
  +        insertStatement.setLong(1, versionId);
   
           InputStream is = revisionContent.streamContent();
   
  
  
  

--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to