You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stanbol.apache.org by su...@apache.org on 2012/08/31 10:46:37 UTC

svn commit: r1379367 - /incubator/stanbol/branches/contenthub-two-layered-structure/contenthub/revisionmanager/src/main/java/org/apache/stanbol/contenthub/revisionmanager/RevisionManager.java

Author: suat
Date: Fri Aug 31 08:46:37 2012
New Revision: 1379367

URL: http://svn.apache.org/viewvc?rev=1379367&view=rev
Log:
STANBOL-498:
-Added a method to the RevisionManager to remove the resources regarding a Store from revision tables.

Modified:
    incubator/stanbol/branches/contenthub-two-layered-structure/contenthub/revisionmanager/src/main/java/org/apache/stanbol/contenthub/revisionmanager/RevisionManager.java

Modified: incubator/stanbol/branches/contenthub-two-layered-structure/contenthub/revisionmanager/src/main/java/org/apache/stanbol/contenthub/revisionmanager/RevisionManager.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/branches/contenthub-two-layered-structure/contenthub/revisionmanager/src/main/java/org/apache/stanbol/contenthub/revisionmanager/RevisionManager.java?rev=1379367&r1=1379366&r2=1379367&view=diff
==============================================================================
--- incubator/stanbol/branches/contenthub-two-layered-structure/contenthub/revisionmanager/src/main/java/org/apache/stanbol/contenthub/revisionmanager/RevisionManager.java (original)
+++ incubator/stanbol/branches/contenthub-two-layered-structure/contenthub/revisionmanager/src/main/java/org/apache/stanbol/contenthub/revisionmanager/RevisionManager.java Fri Aug 31 08:46:37 2012
@@ -20,6 +20,7 @@ import java.sql.Connection;
 import java.sql.PreparedStatement;
 import java.sql.ResultSet;
 import java.sql.SQLException;
+import java.sql.Statement;
 import java.util.LinkedHashSet;
 import java.util.Set;
 
@@ -195,7 +196,7 @@ public class RevisionManager {
                     return new ChangeSetImpl<Item>(store, store.getEpoch(), Long.MIN_VALUE, Long.MAX_VALUE,
                             changedUris);
                 }
-                
+
                 // if the number of changes >= batchsize + 1
                 if (rs.absolute(batchSize + 1)) {
                     lastRowRevision = rs.getLong(2);
@@ -208,7 +209,7 @@ public class RevisionManager {
                         moreChanges = true;
                     }
                     while (rs.next()) {
-                        if(rs.isLast()) {
+                        if (rs.isLast()) {
                             break;
                         }
                         changedUris.add(rs.getString(1));
@@ -382,6 +383,39 @@ public class RevisionManager {
     }
 
     /**
+     * Clear the resources including the revision table and the epoch entry regarding the given {@link Store}
+     * 
+     * @param store
+     *            Store instance of which resources will be cleared
+     * @throws StoreException
+     */
+    public <Item> void clearRevisionTables(Store<Item> store) throws StoreException {
+        Connection con = null;
+        Statement stmt = null;
+        PreparedStatement ps = null;
+        String tableName = getStoreID(store);
+        try {
+            con = dbManager.getConnection();
+            // first remove the the table
+            stmt = con.createStatement();
+            stmt.executeUpdate("DROP TABLE " + tableName);
+
+            // delete the entry from epoch table
+            ps = con.prepareStatement("DELETE FROM " + StoreDBManager.EPOCH_TABLE_NAME
+                                      + " WHERE tableName = ?");
+            ps.setString(1, tableName);
+            ps.executeUpdate();
+
+        } catch (SQLException e) {
+            log.error("Failed clear test resources for the table: {}", tableName);
+        } finally {
+            dbManager.closeStatement(stmt);
+            dbManager.closeStatement(ps);
+            dbManager.closeConnection(con);
+        }
+    }
+
+    /**
      * Returns a string identifying the given {@link Store} instance in the scope of the revision management.
      * Currently, the name of the Store is used as the identifiers of the Store. The name is obtained through
      * the {@link Store#getName()} method.