RYA-161 Merge Tool with client; Closes #84 from isper3at/RYA-123_MergeTool

Project: http://git-wip-us.apache.org/repos/asf/incubator-rya/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-rya/commit/b61920ab
Tree: http://git-wip-us.apache.org/repos/asf/incubator-rya/tree/b61920ab
Diff: http://git-wip-us.apache.org/repos/asf/incubator-rya/diff/b61920ab

Branch: refs/heads/master
Commit: b61920abf96698a6df5b44f273f90283595b57e6
Parents: 2d6d818
Author: isper3at <[email protected]>
Authored: Thu Sep 8 05:37:50 2016 -0400
Committer: pujav65 <[email protected]>
Committed: Thu Dec 15 13:38:49 2016 -0500

----------------------------------------------------------------------
 .../rya/api/resolver/RyaTripleContext.java      |  35 +-
 dao/accumulo.rya/pom.xml                        |   2 -
 .../rya/mongodb/MongoConnectorFactory.java      |  22 +-
 .../org/apache/rya/mongodb/MongoDBRyaDAO.java   |   6 +-
 .../dao/SimpleMongoDBStorageStrategy.java       |   1 -
 .../rya/mongodb/MongoDBQueryEngineTest.java     |  45 +--
 extras/rya.export/export.accumulo/pom.xml       |  67 +---
 .../accumulo/AccumuloRyaStatementStore.java     |  73 ++--
 .../export/accumulo/common/InstanceType.java    |  62 ----
 .../accumulo/conf/AccumuloExportConstants.java  |  86 +----
 .../AccumuloParentMetadataRepository.java       |  13 +-
 ...imestampPolicyAccumuloRyaStatementStore.java |  64 ++++
 .../accumulo/util/AccumuloInstanceDriver.java   |  23 +-
 .../export/accumulo/util/AccumuloRyaUtils.java  |  30 +-
 .../api/conf/AccumuloConfigurationAdapter.java  | 101 ++++--
 .../api/conf/AccumuloMergeConfiguration.java    |  26 +-
 .../src/main/xsd/AccumuloMergeConfiguration.xsd |  30 +-
 .../accumulo/AccumuloRyaStatementStoreTest.java |  71 +++-
 .../apache/rya/export/accumulo/TestUtils.java   |   5 +-
 .../driver/AccumuloDualInstanceDriver.java      |  15 +-
 ...muloParentMetadataRepositoryAdapterTest.java |  28 +-
 .../conf/AccumuloConfigurationAdapterTest.java  |  82 +++--
 extras/rya.export/export.api/pom.xml            |  16 +-
 .../java/org/apache/rya/export/api/Merger.java  |   2 +-
 .../apache/rya/export/api/StatementMerger.java  |   4 +-
 .../export/api/conf/ConfigurationAdapter.java   |  39 ++-
 .../rya/export/api/conf/MergeConfiguration.java |  86 ++---
 .../api/conf/MergeConfigurationDecorator.java   | 151 ++++++++
 .../api/conf/MergeConfigurationException.java   |   9 +
 .../TimestampPolicyConfigurationAdapter.java    |  46 +++
 .../TimestampPolicyMergeConfiguration.java      |  80 +++++
 .../policy/TimestampPolicyStatementStore.java   |  53 +++
 .../api/metadata/MergeParentMetadata.java       | 137 ++++++++
 .../ParentMetadataDoesNotExistException.java    |  44 +++
 .../api/metadata/ParentMetadataException.java   |  44 +++
 .../metadata/ParentMetadataExistsException.java |  44 +++
 .../api/metadata/ParentMetadataRepository.java  |  43 +++
 .../export/api/parent/MergeParentMetadata.java  | 137 --------
 .../ParentMetadataDoesNotExistException.java    |  35 --
 .../api/parent/ParentMetadataException.java     |  35 --
 .../parent/ParentMetadataExistsException.java   |  35 --
 .../api/parent/ParentMetadataRepository.java    |  43 ---
 .../export/api/store/AddStatementException.java |   2 +-
 .../api/store/ContainsStatementException.java   |   2 +-
 .../api/store/FetchStatementException.java      |   2 +-
 .../api/store/RemoveStatementException.java     |   2 +-
 .../rya/export/api/store/RyaStatementStore.java |  18 +-
 .../api/store/RyaStatementStoreDecorator.java   |  67 ----
 .../api/store/RyaStatementStorePolicy.java      |  80 +++++
 .../api/store/UpdateStatementException.java     |   3 +-
 .../src/main/xsd/MergeConfiguration.xsd         | 117 ++++---
 .../xsd/TimestampMergePolicyConfiguration.xsd   |  37 ++
 extras/rya.export/export.client/conf/config.xml |  36 ++
 extras/rya.export/export.client/pom.xml         | 123 +++++++
 .../rya/export/client/MergeDriverClient.java    | 138 ++++++++
 .../client/conf/DateTimePickerDialog.java       | 172 +++++++++
 .../client/conf/MergeConfigHadoopAdapter.java   |  36 ++
 .../client/conf/MergeConfigurationCLI.java      | 227 ++++++++++++
 .../rya/export/client/conf/TimeUtils.java       | 348 +++++++++++++++++++
 .../export/client/merge/MemoryTimeMerger.java   | 161 +++++++++
 .../client/merge/StatementStoreFactory.java     | 139 ++++++++
 .../client/merge/VisibilityStatementMerger.java |  62 ++++
 extras/rya.export/export.integration/pom.xml    |  13 +-
 .../org/apache/rya/indexing/export/ITBase.java  | 289 +++++++++++++++
 .../rya/indexing/export/StoreToStoreIT.java     | 257 ++++++++++++++
 extras/rya.export/export.mongo/pom.xml          |  56 +--
 .../export/mongo/MongoRyaStatementStore.java    |  44 ++-
 .../mongo/MongoRyaStatementStoreDecorator.java  |  46 ---
 .../parent/MongoParentMetadataRepository.java   |  16 +-
 .../parent/ParentMetadataRepositoryAdapter.java |   3 +-
 .../TimestampPolicyMongoRyaStatementStore.java  |  78 +++++
 .../mongo/time/TimeMongoRyaStatementStore.java  | 101 ------
 .../ParentMetadataRepositoryAdapterTest.java    |   2 +-
 extras/rya.export/pom.xml                       |  33 +-
 .../apache/rya/indexing/GeoRyaSailFactory.java  |  19 +-
 pom.xml                                         |   1 -
 76 files changed, 3516 insertions(+), 1184 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/b61920ab/common/rya.api/src/main/java/org/apache/rya/api/resolver/RyaTripleContext.java
----------------------------------------------------------------------
diff --git 
a/common/rya.api/src/main/java/org/apache/rya/api/resolver/RyaTripleContext.java
 
b/common/rya.api/src/main/java/org/apache/rya/api/resolver/RyaTripleContext.java
index 37d19b1..a8c6e7b 100644
--- 
a/common/rya.api/src/main/java/org/apache/rya/api/resolver/RyaTripleContext.java
+++ 
b/common/rya.api/src/main/java/org/apache/rya/api/resolver/RyaTripleContext.java
@@ -8,9 +8,9 @@ package org.apache.rya.api.resolver;
  * to you under the Apache License, Version 2.0 (the
  * "License"); you may not use this file except in compliance
  * with the License.  You may obtain a copy of the License at
- * 
+ *
  *   http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing,
  * software distributed under the License is distributed on an
  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
@@ -54,9 +54,9 @@ public class RyaTripleContext {
 
     public Log logger = LogFactory.getLog(RyaTripleContext.class);
     private TripleRowResolver tripleResolver;
-    private List<TriplePatternStrategy> triplePatternStrategyList = new 
ArrayList<TriplePatternStrategy>();
+    private final List<TriplePatternStrategy> triplePatternStrategyList = new 
ArrayList<TriplePatternStrategy>();
 
-    private RyaTripleContext(boolean addPrefixHash) {
+    public RyaTripleContext(final boolean addPrefixHash) {
         addDefaultTriplePatternStrategies(addPrefixHash);
         if (addPrefixHash){
                tripleResolver = new WholeRowHashedTripleResolver();
@@ -73,23 +73,23 @@ public class RyaTripleContext {
         public static final RyaTripleContext HASHED_INSTANCE = new 
RyaTripleContext(true);
     }
 
-    public synchronized static RyaTripleContext 
getInstance(RdfCloudTripleStoreConfiguration conf) {
+    public synchronized static RyaTripleContext getInstance(final 
RdfCloudTripleStoreConfiguration conf) {
        if (conf.isPrefixRowsWithHash()){
                return RyaTripleContextHolder.HASHED_INSTANCE;
        }
         return RyaTripleContextHolder.INSTANCE;
     }
-    
 
-     public Map<RdfCloudTripleStoreConstants.TABLE_LAYOUT, TripleRow> 
serializeTriple(RyaStatement statement) throws TripleRowResolverException {
+
+     public Map<RdfCloudTripleStoreConstants.TABLE_LAYOUT, TripleRow> 
serializeTriple(final RyaStatement statement) throws TripleRowResolverException 
{
         return getTripleResolver().serialize(statement);
     }
 
-    public RyaStatement 
deserializeTriple(RdfCloudTripleStoreConstants.TABLE_LAYOUT table_layout, 
TripleRow tripleRow) throws TripleRowResolverException {
+    public RyaStatement deserializeTriple(final 
RdfCloudTripleStoreConstants.TABLE_LAYOUT table_layout, final TripleRow 
tripleRow) throws TripleRowResolverException {
         return getTripleResolver().deserialize(table_layout, tripleRow);
     }
 
-    protected void addDefaultTriplePatternStrategies(boolean addPrefixHash) {
+    protected void addDefaultTriplePatternStrategies(final boolean 
addPrefixHash) {
        if (addPrefixHash){
             triplePatternStrategyList.add(new 
HashedSpoWholeRowTriplePatternStrategy());
             triplePatternStrategyList.add(new 
HashedPoWholeRowTriplePatternStrategy());
@@ -102,32 +102,33 @@ public class RyaTripleContext {
     }
 
     //retrieve triple pattern strategy
-    public TriplePatternStrategy retrieveStrategy(RyaURI subject, RyaURI 
predicate, RyaType object, RyaURI context) {
-        for (TriplePatternStrategy strategy : triplePatternStrategyList) {
-            if (strategy.handles(subject, predicate, object, context))
+    public TriplePatternStrategy retrieveStrategy(final RyaURI subject, final 
RyaURI predicate, final RyaType object, final RyaURI context) {
+        for (final TriplePatternStrategy strategy : triplePatternStrategyList) 
{
+            if (strategy.handles(subject, predicate, object, context)) {
                 return strategy;
+            }
         }
         return null;
     }
 
-    public TriplePatternStrategy retrieveStrategy(RyaStatement stmt) {
+    public TriplePatternStrategy retrieveStrategy(final RyaStatement stmt) {
         return retrieveStrategy(stmt.getSubject(), stmt.getPredicate(), 
stmt.getObject(), stmt.getContext());
     }
 
-    public TriplePatternStrategy retrieveStrategy(TABLE_LAYOUT layout) {
-        for(TriplePatternStrategy strategy : triplePatternStrategyList) {
+    public TriplePatternStrategy retrieveStrategy(final TABLE_LAYOUT layout) {
+        for(final TriplePatternStrategy strategy : triplePatternStrategyList) {
             if (strategy.getLayout().equals(layout)) {
                 return strategy;
             }
         }
         return null;
     }
-    
+
    public TripleRowResolver getTripleResolver() {
         return tripleResolver;
     }
 
-    public void setTripleResolver(TripleRowResolver tripleResolver) {
+    public void setTripleResolver(final TripleRowResolver tripleResolver) {
         this.tripleResolver = tripleResolver;
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/b61920ab/dao/accumulo.rya/pom.xml
----------------------------------------------------------------------
diff --git a/dao/accumulo.rya/pom.xml b/dao/accumulo.rya/pom.xml
index ddb6458..6248475 100644
--- a/dao/accumulo.rya/pom.xml
+++ b/dao/accumulo.rya/pom.xml
@@ -71,13 +71,11 @@ under the License.
             <artifactId>mrunit</artifactId>
             <classifier>hadoop2</classifier>
             <version>1.1.0</version>
-            <scope>test</scope>
         </dependency>
         <dependency>
             <groupId>org.apache.accumulo</groupId>
             <artifactId>accumulo-minicluster</artifactId>
             <version>${accumulo.version}</version>
-            <scope>test</scope>
         </dependency>
     </dependencies>
 

http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/b61920ab/dao/mongodb.rya/src/main/java/org/apache/rya/mongodb/MongoConnectorFactory.java
----------------------------------------------------------------------
diff --git 
a/dao/mongodb.rya/src/main/java/org/apache/rya/mongodb/MongoConnectorFactory.java
 
b/dao/mongodb.rya/src/main/java/org/apache/rya/mongodb/MongoConnectorFactory.java
index c240675..3d70219 100644
--- 
a/dao/mongodb.rya/src/main/java/org/apache/rya/mongodb/MongoConnectorFactory.java
+++ 
b/dao/mongodb.rya/src/main/java/org/apache/rya/mongodb/MongoConnectorFactory.java
@@ -6,9 +6,9 @@
  * to you under the Apache License, Version 2.0 (the
  * "License"); you may not use this file except in compliance
  * with the License.  You may obtain a copy of the License at
- * 
+ *
  *   http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing,
  * software distributed under the License is distributed on an
  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
@@ -66,7 +66,7 @@ public class MongoConnectorFactory {
     }
 
     /**
-     * Create a MongoDB client object and assign it to this class's static 
mongoClient 
+     * Create a MongoDB client object and assign it to this class's static 
mongoClient
      * @param conf configuration containing connection parameters
      * @throws ConfigurationRuntimeException - Thrown if the configured 
server, port, user, or others are missing.
      * @throws MongoException  if can't connect despite conf parameters are 
given
@@ -76,7 +76,7 @@ public class MongoConnectorFactory {
         // Connect to a running Mongo server
         final String host = 
requireNonNull(conf.get(MongoDBRdfConfiguration.MONGO_INSTANCE), 
MSG_INTRO+"host name is required");
         final int port = 
requireNonNullInt(conf.get(MongoDBRdfConfiguration.MONGO_INSTANCE_PORT), 
MSG_INTRO+"Port number is required.");
-        ServerAddress server = new ServerAddress(host, port);
+        final ServerAddress server = new ServerAddress(host, port);
         // check for authentication credentials
         if (conf.get(MongoDBRdfConfiguration.MONGO_USER) != null) {
             final String username = 
conf.get(MongoDBRdfConfiguration.MONGO_USER);
@@ -96,27 +96,29 @@ public class MongoConnectorFactory {
 
     /**
      * Throw exception for un-configured required values.
-     * 
+     *
      * @param required  String to check
      * @param message  throw configuration exception with this description
      * @return unaltered required string
      * @throws ConfigurationRuntimeException  if required is null
      */
-    private static String requireNonNull(String required, String message) 
throws ConfigurationRuntimeException {
-        if (required == null)
+    private static String requireNonNull(final String required, final String 
message) throws ConfigurationRuntimeException {
+        if (required == null) {
             throw new ConfigurationRuntimeException(message);
+        }
         return required;
     }
 
     /*
      * Same as above, check that it is a integer and return the parsed integer.
      */
-    private static int requireNonNullInt(String required, String message) 
throws ConfigurationRuntimeException {
-        if (required == null)
+    private static int requireNonNullInt(final String required, final String 
message) throws ConfigurationRuntimeException {
+        if (required == null) {
             throw new ConfigurationRuntimeException(message);
+        }
         try {
             return Integer.parseInt(required);
-        } catch (NumberFormatException e) {
+        } catch (final NumberFormatException e) {
             throw new ConfigurationRuntimeException(message);
         }
     }

http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/b61920ab/dao/mongodb.rya/src/main/java/org/apache/rya/mongodb/MongoDBRyaDAO.java
----------------------------------------------------------------------
diff --git 
a/dao/mongodb.rya/src/main/java/org/apache/rya/mongodb/MongoDBRyaDAO.java 
b/dao/mongodb.rya/src/main/java/org/apache/rya/mongodb/MongoDBRyaDAO.java
index fe78f3a..07051a9 100644
--- a/dao/mongodb.rya/src/main/java/org/apache/rya/mongodb/MongoDBRyaDAO.java
+++ b/dao/mongodb.rya/src/main/java/org/apache/rya/mongodb/MongoDBRyaDAO.java
@@ -57,7 +57,7 @@ public final class MongoDBRyaDAO implements 
RyaDAO<MongoDBRdfConfiguration>{
     private static final Logger log = Logger.getLogger(MongoDBRyaDAO.class);
 
     private MongoDBRdfConfiguration conf;
-    private MongoClient mongoClient;
+    private final MongoClient mongoClient;
     private DB db;
     private DBCollection coll;
     private MongoDBQueryEngine queryEngine;
@@ -150,11 +150,11 @@ public final class MongoDBRyaDAO implements 
RyaDAO<MongoDBRdfConfiguration>{
             for(final RyaSecondaryIndexer index: secondaryIndexers) {
                 index.storeStatement(statement);
             }
-        } catch (IOException e) {
+        } catch (final IOException e) {
             log.error("Unable to add: " + statement.toString());
             throw new RyaDAOException(e);
         }
-        catch (DuplicateKeyException e){
+        catch (final DuplicateKeyException e){
             log.error("Attempting to load duplicate triple: " + 
statement.toString());
         }
     }

http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/b61920ab/dao/mongodb.rya/src/main/java/org/apache/rya/mongodb/dao/SimpleMongoDBStorageStrategy.java
----------------------------------------------------------------------
diff --git 
a/dao/mongodb.rya/src/main/java/org/apache/rya/mongodb/dao/SimpleMongoDBStorageStrategy.java
 
b/dao/mongodb.rya/src/main/java/org/apache/rya/mongodb/dao/SimpleMongoDBStorageStrategy.java
index d51a2fe..258d37f 100644
--- 
a/dao/mongodb.rya/src/main/java/org/apache/rya/mongodb/dao/SimpleMongoDBStorageStrategy.java
+++ 
b/dao/mongodb.rya/src/main/java/org/apache/rya/mongodb/dao/SimpleMongoDBStorageStrategy.java
@@ -90,7 +90,6 @@ public class SimpleMongoDBStorageStrategy implements 
MongoDBStorageStrategy<RyaS
         if (context != null){
             query.append(CONTEXT, context.getData());
         }
-
         return query;
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/b61920ab/dao/mongodb.rya/src/test/java/org/apache/rya/mongodb/MongoDBQueryEngineTest.java
----------------------------------------------------------------------
diff --git 
a/dao/mongodb.rya/src/test/java/org/apache/rya/mongodb/MongoDBQueryEngineTest.java
 
b/dao/mongodb.rya/src/test/java/org/apache/rya/mongodb/MongoDBQueryEngineTest.java
index 1670b74..98fdace 100644
--- 
a/dao/mongodb.rya/src/test/java/org/apache/rya/mongodb/MongoDBQueryEngineTest.java
+++ 
b/dao/mongodb.rya/src/test/java/org/apache/rya/mongodb/MongoDBQueryEngineTest.java
@@ -8,9 +8,9 @@ package org.apache.rya.mongodb;
  * to you under the Apache License, Version 2.0 (the
  * "License"); you may not use this file except in compliance
  * with the License.  You may obtain a copy of the License at
- * 
+ *
  *   http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing,
  * software distributed under the License is distributed on an
  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
@@ -51,34 +51,37 @@ public class MongoDBQueryEngineTest extends 
MongoRyaTestBase {
     @Before
     public void setUp() throws Exception {
         // Set up Mongo/Rya
-        Configuration conf = new Configuration();
+        final Configuration conf = new Configuration();
         conf.set(MongoDBRdfConfiguration.MONGO_DB_NAME, "test");
         conf.set(MongoDBRdfConfiguration.MONGO_COLLECTION_PREFIX, "rya_");
         conf.set(RdfCloudTripleStoreConfiguration.CONF_TBL_PREFIX, "rya_");
         configuration = new MongoDBRdfConfiguration(conf);
-        int port = mongoClient.getServerAddressList().get(0).getPort();
+        final int port = mongoClient.getServerAddressList().get(0).getPort();
         configuration.set(MongoDBRdfConfiguration.MONGO_INSTANCE_PORT, 
Integer.toString(port));
 
         engine = new MongoDBQueryEngine(configuration, mongoClient);
 
         // Add Data
-        MongoDBRyaDAO dao = new MongoDBRyaDAO(configuration, mongoClient);
+        final MongoDBRyaDAO dao = new MongoDBRyaDAO(configuration, 
mongoClient);
         dao.add(getStatement("u:a", "u:tt", "u:b"));
         dao.add(getStatement("u:a", "u:tt", "u:c"));
     }
 
-    private RyaStatement getStatement(String s, String p, String o) {
-        RyaStatementBuilder builder = new RyaStatementBuilder();
-        if (s != null)
+    private RyaStatement getStatement(final String s, final String p, final 
String o) {
+        final RyaStatementBuilder builder = new RyaStatementBuilder();
+        if (s != null) {
             builder.setSubject(new RyaURI(s));
-        if (p != null)
+        }
+        if (p != null) {
             builder.setPredicate(new RyaURI(p));
-        if (o != null)
+        }
+        if (o != null) {
             builder.setObject(new RyaURI(o));
+        }
         return builder.build();
     }
 
-    public int size(CloseableIteration<?, ?> iter) throws Exception {
+    public int size(final CloseableIteration<?, ?> iter) throws Exception {
         int i = 0;
         while (iter.hasNext()) {
             i++;
@@ -89,29 +92,29 @@ public class MongoDBQueryEngineTest extends 
MongoRyaTestBase {
 
     @Test
     public void statementQuery() throws Exception {
-        RyaStatement s = getStatement("u:a", null, null);
+        final RyaStatement s = getStatement("u:a", null, null);
         Assert.assertEquals(2, size(engine.query(s, configuration)));
     }
 
     @SuppressWarnings("unchecked")
     @Test
     public void bindingSetsQuery() throws Exception {
-        RyaStatement s = getStatement("u:a", null, null);
-        
-        MapBindingSet bs1 = new MapBindingSet();
+        final RyaStatement s = getStatement("u:a", null, null);
+
+        final MapBindingSet bs1 = new MapBindingSet();
         bs1.addBinding("foo", new URIImpl("u:x"));
 
-        Map.Entry<RyaStatement, BindingSet> e1 = new 
RdfCloudTripleStoreUtils.CustomEntry<RyaStatement, BindingSet>(s, bs1);
-        Collection<Entry<RyaStatement, BindingSet>> stmts1 = 
Lists.newArrayList(e1);
+        final Map.Entry<RyaStatement, BindingSet> e1 = new 
RdfCloudTripleStoreUtils.CustomEntry<RyaStatement, BindingSet>(s, bs1);
+        final Collection<Entry<RyaStatement, BindingSet>> stmts1 = 
Lists.newArrayList(e1);
         Assert.assertEquals(2, size(engine.queryWithBindingSet(stmts1, 
configuration)));
 
-        
-        MapBindingSet bs2 = new MapBindingSet();
+
+        final MapBindingSet bs2 = new MapBindingSet();
         bs2.addBinding("foo", new URIImpl("u:y"));
 
-        Map.Entry<RyaStatement, BindingSet> e2 = new 
RdfCloudTripleStoreUtils.CustomEntry<RyaStatement, BindingSet>(s, bs2);
+        final Map.Entry<RyaStatement, BindingSet> e2 = new 
RdfCloudTripleStoreUtils.CustomEntry<RyaStatement, BindingSet>(s, bs2);
 
-        Collection<Entry<RyaStatement, BindingSet>> stmts2 = 
Lists.newArrayList(e1, e2);
+        final Collection<Entry<RyaStatement, BindingSet>> stmts2 = 
Lists.newArrayList(e1, e2);
         Assert.assertEquals(4, size(engine.queryWithBindingSet(stmts2, 
configuration)));
 }
 }

http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/b61920ab/extras/rya.export/export.accumulo/pom.xml
----------------------------------------------------------------------
diff --git a/extras/rya.export/export.accumulo/pom.xml 
b/extras/rya.export/export.accumulo/pom.xml
index 23598b0..7489c64 100644
--- a/extras/rya.export/export.accumulo/pom.xml
+++ b/extras/rya.export/export.accumulo/pom.xml
@@ -25,7 +25,7 @@ under the License.
     <parent>
         <groupId>org.apache.rya</groupId>
         <artifactId>rya.export.parent</artifactId>
-        <version>3.2.10-SNAPSHOT</version>
+        <version>3.2.11-incubating-SNAPSHOT</version>
     </parent>
     
     <modelVersion>4.0.0</modelVersion>
@@ -39,7 +39,7 @@ under the License.
         <dependency>
             <groupId>org.apache.rya</groupId>
             <artifactId>rya.export.api</artifactId>
-            <version>3.2.10-SNAPSHOT</version>
+            <version>${project.version}</version>
         </dependency>
         <dependency>
             <groupId>org.apache.rya</groupId>
@@ -51,23 +51,18 @@ under the License.
             <artifactId>rya.mapreduce</artifactId>
         </dependency>
 
-        <!-- Log4j 2 bridge, api, and core. -->        
+        <!-- Testing dependencies. -->
         <dependency>
-            <groupId>org.apache.logging.log4j</groupId>
-            <artifactId>log4j-1.2-api</artifactId>
-            <version>2.5</version>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <scope>test</scope>
         </dependency>
         <dependency>
-            <groupId>org.apache.logging.log4j</groupId>
-            <artifactId>log4j-api</artifactId>
-            <version>2.5</version>
+            <groupId>org.mockito</groupId>
+            <artifactId>mockito-all</artifactId>
+            <scope>test</scope>
         </dependency>
-        <dependency>
-            <groupId>org.apache.logging.log4j</groupId>
-            <artifactId>log4j-core</artifactId>
-            <version>2.5</version>
-        </dependency> 
-        
+
         <!--  Accumulo -->
         <dependency>
             <groupId>org.apache.accumulo</groupId>
@@ -90,51 +85,9 @@ under the License.
             <artifactId>libthrift</artifactId>
             <version>0.9.1</version>
         </dependency>
-
-        <!-- Testing dependencies. -->
-        <dependency>
-            <groupId>junit</groupId>
-            <artifactId>junit</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.mockito</groupId>
-            <artifactId>mockito-all</artifactId>
-            <scope>test</scope>
-        </dependency>
     </dependencies>
-    
     <build>
         <plugins>
-            <!-- Use the pre-build 'jar-with-dependencies' assembly to package 
the dependent class files into the final jar. 
-                 This creates a jar file that can be deployed to Fluo without 
having to include any dependent jars. -->
-            <plugin>
-                <artifactId>maven-assembly-plugin</artifactId>
-                <configuration>
-                    <archive>
-                        <manifest>
-                            <addClasspath>true</addClasspath>
-                            <classpathLayoutType>custom</classpathLayoutType>
-                            
<customClasspathLayout>WEB-INF/lib/$${artifact.groupIdPath}/$${artifact.artifactId}-$${artifact.version}$${dashClassifier?}.$${artifact.extension}</customClasspathLayout>
-                        
-                            
<mainClass>org.apache.rya.indexing.pcj.fluo.PcjAdminClient</mainClass>
-                        </manifest>
-                    </archive>
-                    <descriptorRefs>
-                        <descriptorRef>jar-with-dependencies</descriptorRef>
-                    </descriptorRefs>
-                </configuration>
-                <executions>
-                    <execution>
-                        <id>make-assembly</id>
-                        <phase>package</phase>
-                        <goals>
-                            <goal>single</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-
             <plugin>
                 <groupId>org.codehaus.mojo</groupId>
                 <artifactId>jaxb2-maven-plugin</artifactId>

http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/b61920ab/extras/rya.export/export.accumulo/src/main/java/org/apache/rya/export/accumulo/AccumuloRyaStatementStore.java
----------------------------------------------------------------------
diff --git 
a/extras/rya.export/export.accumulo/src/main/java/org/apache/rya/export/accumulo/AccumuloRyaStatementStore.java
 
b/extras/rya.export/export.accumulo/src/main/java/org/apache/rya/export/accumulo/AccumuloRyaStatementStore.java
index 90c30ee..2376c20 100644
--- 
a/extras/rya.export/export.accumulo/src/main/java/org/apache/rya/export/accumulo/AccumuloRyaStatementStore.java
+++ 
b/extras/rya.export/export.accumulo/src/main/java/org/apache/rya/export/accumulo/AccumuloRyaStatementStore.java
@@ -24,6 +24,7 @@ import java.io.IOException;
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.Map.Entry;
+import java.util.Optional;
 import java.util.Set;
 
 import org.apache.accumulo.core.client.IteratorSetting;
@@ -31,10 +32,18 @@ import org.apache.accumulo.core.client.Scanner;
 import org.apache.accumulo.core.data.Key;
 import org.apache.accumulo.core.data.Value;
 import org.apache.log4j.Logger;
-import org.apache.rya.export.accumulo.common.InstanceType;
-import org.apache.rya.export.accumulo.util.AccumuloInstanceDriver;
+import org.apache.rya.accumulo.AccumuloRyaDAO;
+import org.apache.rya.api.RdfCloudTripleStoreConstants;
+import org.apache.rya.api.domain.RyaStatement;
+import org.apache.rya.api.persist.RyaDAOException;
+import org.apache.rya.api.resolver.RyaTripleContext;
+import org.apache.rya.api.resolver.triple.TripleRowResolverException;
+import org.apache.rya.export.InstanceType;
+import org.apache.rya.export.accumulo.parent.AccumuloParentMetadataRepository;
 import org.apache.rya.export.accumulo.util.AccumuloRyaUtils;
 import org.apache.rya.export.api.MergerException;
+import org.apache.rya.export.api.metadata.MergeParentMetadata;
+import org.apache.rya.export.api.metadata.ParentMetadataExistsException;
 import org.apache.rya.export.api.store.AddStatementException;
 import org.apache.rya.export.api.store.ContainsStatementException;
 import org.apache.rya.export.api.store.FetchStatementException;
@@ -46,12 +55,6 @@ import com.google.common.base.Function;
 import com.google.common.collect.Iterators;
 
 import info.aduna.iteration.CloseableIteration;
-import mvm.rya.accumulo.AccumuloRyaDAO;
-import mvm.rya.api.RdfCloudTripleStoreConstants;
-import mvm.rya.api.domain.RyaStatement;
-import mvm.rya.api.persist.RyaDAOException;
-import mvm.rya.api.resolver.RyaTripleContext;
-import mvm.rya.api.resolver.triple.TripleRowResolverException;
 
 /**
  * Allows specific CRUD operations an Accumulo {@link RyaStatement} storage
@@ -72,7 +75,7 @@ public class AccumuloRyaStatementStore implements 
RyaStatementStore {
     private final AccumuloRyaDAO accumuloRyaDao;
     private final String tablePrefix;
     private final Set<IteratorSetting> iteratorSettings = new HashSet<>();
-    private final AccumuloInstanceDriver accumuloInstanceDriver;
+    private final AccumuloParentMetadataRepository metadataRepo;
 
     /**
      * Creates a new instance of {@link AccumuloRyaStatementStore}.
@@ -86,20 +89,13 @@ public class AccumuloRyaStatementStore implements 
RyaStatementStore {
      * @param zooKeepers the comma-separated list of zoo keeper host names.
      * @throws MergerException
      */
-    public AccumuloRyaStatementStore(final String instanceName, final String 
username, final String password, final InstanceType instanceType, final String 
tablePrefix, final String auths, final String zooKeepers) throws 
MergerException {
+    public AccumuloRyaStatementStore(final AccumuloRyaDAO dao, final String 
tablePrefix, final String ryaInstance) {
         this.tablePrefix = tablePrefix;
         if (tablePrefix != null) {
             RdfCloudTripleStoreConstants.prefixTables(tablePrefix);
         }
-
-        final String driverName = instanceName + 
AccumuloRyaStatementStore.class.getSimpleName();
-        accumuloInstanceDriver = new AccumuloInstanceDriver(driverName, 
instanceType, true, false, true, username, password, instanceName, tablePrefix, 
auths, zooKeepers);
-        try {
-            accumuloInstanceDriver.setUp();
-        } catch (final Exception e) {
-            throw new MergerException(e);
-        }
-        accumuloRyaDao = accumuloInstanceDriver.getDao();
+        accumuloRyaDao = dao;
+        metadataRepo = new AccumuloParentMetadataRepository(dao);
     }
 
     @Override
@@ -142,7 +138,14 @@ public class AccumuloRyaStatementStore implements 
RyaStatementStore {
     public void addStatement(final RyaStatement statement) throws 
AddStatementException {
         try {
             accumuloRyaDao.add(statement);
-        } catch (final RyaDAOException e) {
+            accumuloRyaDao.flush();
+            //This is a hack since a statement re-added with the same 
timestamp won't reappear since its been marked for deletion.
+            //RYA-197 is the ticket for fixing this hack.
+            if(!containsStatement(statement)) {
+                statement.setTimestamp(statement.getTimestamp() + 1L);
+                accumuloRyaDao.add(statement);
+            }
+        } catch (final RyaDAOException | ContainsStatementException e) {
             throw new AddStatementException("Unable to add the Rya Statement", 
e);
         }
     }
@@ -176,6 +179,22 @@ public class AccumuloRyaStatementStore implements 
RyaStatementStore {
         }
     }
 
+    @Override
+    public Optional<MergeParentMetadata> getParentMetadata() {
+        MergeParentMetadata metadata = null;
+        try {
+            metadata = metadataRepo.get();
+        } finally {
+            return Optional.ofNullable(metadata);
+        }
+    }
+
+    @Override
+    public void setParentMetadata(final MergeParentMetadata metadata) throws 
ParentMetadataExistsException {
+        metadataRepo.set(metadata);
+    }
+
+
     public RyaStatement findStatement(final RyaStatement ryaStatement) throws 
RyaDAOException {
         RyaStatement resultRyaStatement = null;
         CloseableIteration<RyaStatement, RyaDAOException> iter = null;
@@ -194,20 +213,6 @@ public class AccumuloRyaStatementStore implements 
RyaStatementStore {
     }
 
     /**
-     * @return the {@link AccumuloRyaDAO}.
-     */
-    public AccumuloRyaDAO getRyaDAO() {
-        return accumuloRyaDao;
-    }
-
-    /**
-     * @return the {@link AccumuloInstanceDriver}.
-     */
-    public AccumuloInstanceDriver getAccumuloInstanceDriver() {
-        return accumuloInstanceDriver;
-    }
-
-    /**
      * Adds an iterator setting to the statement store for it to use when it
      * fetches statements.
      * @param iteratorSetting the {@link IteratorSetting} to add.

http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/b61920ab/extras/rya.export/export.accumulo/src/main/java/org/apache/rya/export/accumulo/common/InstanceType.java
----------------------------------------------------------------------
diff --git 
a/extras/rya.export/export.accumulo/src/main/java/org/apache/rya/export/accumulo/common/InstanceType.java
 
b/extras/rya.export/export.accumulo/src/main/java/org/apache/rya/export/accumulo/common/InstanceType.java
deleted file mode 100644
index 41543d6..0000000
--- 
a/extras/rya.export/export.accumulo/src/main/java/org/apache/rya/export/accumulo/common/InstanceType.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.rya.export.accumulo.common;
-
-import org.apache.accumulo.core.client.mock.MockInstance;
-import org.apache.accumulo.minicluster.MiniAccumuloCluster;
-
-/**
- * The type of Accumulo instance.
- */
-public enum InstanceType {
-    /**
-     * An Accumulo instance that runs using a regular Accumulo distribution.
-     */
-    DISTRIBUTION,
-    /**
-     * An Accumulo instance that runs using a {@link MiniAccumuloCluster}.
-     */
-    MINI,
-    /**
-     * An Accumulo instance that runs using a {@link MockInstance}.
-     */
-    MOCK;
-
-    /**
-     * Finds the instance type by name.
-     * @param name the name to find.
-     * @return the {@link InstanceType} or {@code null} if none could be found.
-     */
-    public static InstanceType fromName(String name) {
-        for (InstanceType instanceType : InstanceType.values()) {
-            if (instanceType.toString().equals(name)) {
-                return instanceType;
-            }
-        }
-        return null;
-    }
-
-    /**
-     * @return {@code true} if the Accumulo instance is a {@link MockInstance}.
-     * {@code false} otherwise.
-     */
-    public boolean isMock() {
-        return this == MOCK;
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/b61920ab/extras/rya.export/export.accumulo/src/main/java/org/apache/rya/export/accumulo/conf/AccumuloExportConstants.java
----------------------------------------------------------------------
diff --git 
a/extras/rya.export/export.accumulo/src/main/java/org/apache/rya/export/accumulo/conf/AccumuloExportConstants.java
 
b/extras/rya.export/export.accumulo/src/main/java/org/apache/rya/export/accumulo/conf/AccumuloExportConstants.java
index ed0aa62..51dec9b 100644
--- 
a/extras/rya.export/export.accumulo/src/main/java/org/apache/rya/export/accumulo/conf/AccumuloExportConstants.java
+++ 
b/extras/rya.export/export.accumulo/src/main/java/org/apache/rya/export/accumulo/conf/AccumuloExportConstants.java
@@ -18,25 +18,20 @@
  */
 package org.apache.rya.export.accumulo.conf;
 
-import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.Date;
 import java.util.List;
 import java.util.Map.Entry;
 
-import org.apache.accumulo.core.client.IteratorSetting;
-import org.apache.accumulo.core.iterators.user.TimestampFilter;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.log4j.Logger;
-import org.apache.rya.export.accumulo.common.InstanceType;
+import org.apache.rya.accumulo.mr.MRUtils;
+import org.apache.rya.api.RdfCloudTripleStoreConfiguration;
+import org.apache.rya.indexing.accumulo.ConfigUtils;
 
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
 
-import mvm.rya.accumulo.mr.MRUtils;
-import mvm.rya.api.RdfCloudTripleStoreConfiguration;
-import mvm.rya.indexing.accumulo.ConfigUtils;
-
 /**
  * Constant used for Accumulo merger exports.
  */
@@ -53,12 +48,6 @@ public class AccumuloExportConstants {
      */
     public static final String ACCUMULO_INSTANCE_TYPE_PROP = 
"ac.instance.type";
 
-    /**
-     * A value used for the {@link #START_TIME_PROP} property to indicate that 
a dialog
-     * should be displayed to select the time.
-     */
-    public static final String USE_START_TIME_DIALOG = "dialog";
-
     public static final SimpleDateFormat START_TIME_FORMATTER = new 
SimpleDateFormat("yyyyMMddHHmmssSSSz");
 
     /**
@@ -115,23 +104,6 @@ public class AccumuloExportConstants {
     }
 
     /**
-     * Creates a formatted string for the start time based on the specified 
date and whether the dialog is to be displayed.
-     * @param startDate the start {@link Date} to format.
-     * @param isStartTimeDialogEnabled {@code true} to display the time dialog 
instead of using the date. {@code false}
-     * to use the provided {@code startDate}.
-     * @return the formatted start time string or {@code "dialog"}.
-     */
-    public static String getStartTimeString(final Date startDate, final 
boolean isStartTimeDialogEnabled) {
-        String startTimeString;
-        if (isStartTimeDialogEnabled) {
-            startTimeString = USE_START_TIME_DIALOG; // set start date from 
dialog box
-        } else {
-            startTimeString = convertDateToStartTimeString(startDate);
-        }
-        return startTimeString;
-    }
-
-    /**
      * Converts the specified date into a string to use as the start time for 
the timestamp filter.
      * @param date the start {@link Date} of the filter that will be formatted 
as a string.
      * @return the formatted start time string.
@@ -140,56 +112,4 @@ public class AccumuloExportConstants {
         final String startTimeString = START_TIME_FORMATTER.format(date);
         return startTimeString;
     }
-
-    /**
-     * Converts the specified string into a date to use as the start time for 
the timestamp filter.
-     * @param startTimeString the formatted time string.
-     * @return the start {@link Date}.
-     */
-    public static Date convertStartTimeStringToDate(final String 
startTimeString) {
-        Date date;
-        try {
-            date = START_TIME_FORMATTER.parse(startTimeString);
-        } catch (final ParseException e) {
-            log.error("Could not parse date", e);
-            return null;
-        }
-        return date;
-    }
-
-    /**
-     * Creates an {@link IteratorSetting} with a time stamp filter that starts 
with the specified data.
-     * @param startTimeString the start time of the filter.
-     * @return the {@link IteratorSetting}.
-     */
-    public static IteratorSetting getStartTimeSetting(final String 
startTimeString) {
-        Date date = null;
-        try {
-            date = START_TIME_FORMATTER.parse(startTimeString);
-        } catch (final ParseException e) {
-            throw new IllegalArgumentException("Couldn't parse " + 
startTimeString, e);
-        }
-        return getStartTimeSetting(date);
-    }
-
-    /**
-     * Creates an {@link IteratorSetting} with a time stamp filter that starts 
with the specified data.
-     * @param date the start {@link Date} of the filter.
-     * @return the {@link IteratorSetting}.
-     */
-    public static IteratorSetting getStartTimeSetting(final Date date) {
-        return getStartTimeSetting(date.getTime());
-    }
-
-    /**
-     * Creates an {@link IteratorSetting} with a time stamp filter that starts 
with the specified data.
-     * @param time the start time of the filter.
-     * @return the {@link IteratorSetting}.
-     */
-    public static IteratorSetting getStartTimeSetting(final long time) {
-        final IteratorSetting setting = new IteratorSetting(1, 
"startTimeIterator", TimestampFilter.class);
-        TimestampFilter.setStart(setting, time, true);
-        TimestampFilter.setEnd(setting, Long.MAX_VALUE, true);
-        return setting;
-    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/b61920ab/extras/rya.export/export.accumulo/src/main/java/org/apache/rya/export/accumulo/parent/AccumuloParentMetadataRepository.java
----------------------------------------------------------------------
diff --git 
a/extras/rya.export/export.accumulo/src/main/java/org/apache/rya/export/accumulo/parent/AccumuloParentMetadataRepository.java
 
b/extras/rya.export/export.accumulo/src/main/java/org/apache/rya/export/accumulo/parent/AccumuloParentMetadataRepository.java
index fbf8374..3241fbb 100644
--- 
a/extras/rya.export/export.accumulo/src/main/java/org/apache/rya/export/accumulo/parent/AccumuloParentMetadataRepository.java
+++ 
b/extras/rya.export/export.accumulo/src/main/java/org/apache/rya/export/accumulo/parent/AccumuloParentMetadataRepository.java
@@ -46,14 +46,13 @@ import org.apache.accumulo.core.security.Authorizations;
 import org.apache.accumulo.core.security.TablePermission;
 import org.apache.hadoop.io.Text;
 import org.apache.log4j.Logger;
+import org.apache.rya.accumulo.AccumuloRyaDAO;
+import org.apache.rya.accumulo.mr.MRUtils;
 import org.apache.rya.export.api.MergerException;
-import org.apache.rya.export.api.parent.MergeParentMetadata;
-import org.apache.rya.export.api.parent.ParentMetadataDoesNotExistException;
-import org.apache.rya.export.api.parent.ParentMetadataExistsException;
-import org.apache.rya.export.api.parent.ParentMetadataRepository;
-
-import mvm.rya.accumulo.AccumuloRyaDAO;
-import mvm.rya.accumulo.mr.MRUtils;
+import org.apache.rya.export.api.metadata.MergeParentMetadata;
+import org.apache.rya.export.api.metadata.ParentMetadataDoesNotExistException;
+import org.apache.rya.export.api.metadata.ParentMetadataExistsException;
+import org.apache.rya.export.api.metadata.ParentMetadataRepository;
 
 /**
  * Accumulo repository for metadata pertaining to the parent database.  This

http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/b61920ab/extras/rya.export/export.accumulo/src/main/java/org/apache/rya/export/accumulo/policy/TimestampPolicyAccumuloRyaStatementStore.java
----------------------------------------------------------------------
diff --git 
a/extras/rya.export/export.accumulo/src/main/java/org/apache/rya/export/accumulo/policy/TimestampPolicyAccumuloRyaStatementStore.java
 
b/extras/rya.export/export.accumulo/src/main/java/org/apache/rya/export/accumulo/policy/TimestampPolicyAccumuloRyaStatementStore.java
new file mode 100644
index 0000000..ad27010
--- /dev/null
+++ 
b/extras/rya.export/export.accumulo/src/main/java/org/apache/rya/export/accumulo/policy/TimestampPolicyAccumuloRyaStatementStore.java
@@ -0,0 +1,64 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.rya.export.accumulo.policy;
+
+import java.util.Date;
+import java.util.Iterator;
+
+import org.apache.accumulo.core.client.IteratorSetting;
+import org.apache.accumulo.core.iterators.user.TimestampFilter;
+import org.apache.rya.api.domain.RyaStatement;
+import org.apache.rya.export.accumulo.AccumuloRyaStatementStore;
+import org.apache.rya.export.api.conf.policy.TimestampPolicyStatementStore;
+import org.apache.rya.export.api.store.FetchStatementException;
+import org.apache.rya.export.api.store.RyaStatementStore;
+
+/**
+ * A {@link RyaStatementStore} decorated to connect to an Accumulo database and
+ * filter statements based on a timestamp.
+ */
+public class TimestampPolicyAccumuloRyaStatementStore extends 
TimestampPolicyStatementStore {
+
+    /**
+     * Creates a new {@link TimestampPolicyAccumuloRyaStatementStore}
+     * @param store
+     * @param timestamp
+     */
+    public TimestampPolicyAccumuloRyaStatementStore(final 
AccumuloRyaStatementStore store, final Date timestamp) {
+        super(store, timestamp);
+        store.addIterator(getStartTimeSetting(timestamp));
+    }
+
+    /**
+     * Creates an {@link IteratorSetting} with a time stamp filter that starts 
with the specified data.
+     * @param time the start time of the filter.
+     * @return the {@link IteratorSetting}.
+     */
+    private static IteratorSetting getStartTimeSetting(final Date time) {
+        final IteratorSetting setting = new IteratorSetting(1, 
"startTimeIterator", TimestampFilter.class);
+        TimestampFilter.setStart(setting, time.getTime(), true);
+        TimestampFilter.setEnd(setting, Long.MAX_VALUE, true);
+        return setting;
+    }
+
+    @Override
+    public Iterator<RyaStatement> fetchStatements() throws 
FetchStatementException {
+        return store.fetchStatements();
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/b61920ab/extras/rya.export/export.accumulo/src/main/java/org/apache/rya/export/accumulo/util/AccumuloInstanceDriver.java
----------------------------------------------------------------------
diff --git 
a/extras/rya.export/export.accumulo/src/main/java/org/apache/rya/export/accumulo/util/AccumuloInstanceDriver.java
 
b/extras/rya.export/export.accumulo/src/main/java/org/apache/rya/export/accumulo/util/AccumuloInstanceDriver.java
index 4c086d8..f8d9484 100644
--- 
a/extras/rya.export/export.accumulo/src/main/java/org/apache/rya/export/accumulo/util/AccumuloInstanceDriver.java
+++ 
b/extras/rya.export/export.accumulo/src/main/java/org/apache/rya/export/accumulo/util/AccumuloInstanceDriver.java
@@ -43,19 +43,18 @@ import org.apache.accumulo.minicluster.MiniAccumuloCluster;
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.lang.SystemUtils;
 import org.apache.log4j.Logger;
-import org.apache.rya.export.accumulo.common.InstanceType;
+import org.apache.rya.accumulo.AccumuloRdfConfiguration;
+import org.apache.rya.accumulo.AccumuloRyaDAO;
+import org.apache.rya.accumulo.mr.MRUtils;
+import org.apache.rya.api.RdfCloudTripleStoreConstants;
+import org.apache.rya.api.persist.RyaDAOException;
+import org.apache.rya.export.InstanceType;
 import org.apache.rya.export.accumulo.conf.AccumuloExportConstants;
 
 import com.google.common.base.Preconditions;
 import com.google.common.collect.ImmutableList;
 import com.google.common.io.Files;
 
-import mvm.rya.accumulo.AccumuloRdfConfiguration;
-import mvm.rya.accumulo.AccumuloRyaDAO;
-import mvm.rya.accumulo.mr.MRUtils;
-import mvm.rya.api.RdfCloudTripleStoreConstants;
-import mvm.rya.api.persist.RyaDAOException;
-
 /**
  * Handles running a single {@link MiniAccumuloCluster} or a single {@link 
MockInstance} for an instance.
  */
@@ -136,7 +135,7 @@ public class AccumuloInstanceDriver {
     public AccumuloInstanceDriver(final String driverName, final InstanceType 
instanceType, final boolean shouldCreateIndices, final boolean isReadOnly, 
final boolean isParent, final String user, final String password, final String 
instanceName, final String tablePrefix, final String auth, final String 
zooKeepers) {
         this.driverName = Preconditions.checkNotNull(driverName);
         this.instanceType = instanceType;
-        this.isMock = instanceType.isMock();
+        isMock = instanceType == InstanceType.MOCK;
         this.shouldCreateIndices = shouldCreateIndices;
         this.isReadOnly = isReadOnly;
         this.user = user;
@@ -156,7 +155,9 @@ public class AccumuloInstanceDriver {
      */
     public void setUp() throws Exception {
         setUpInstance();
-        setUpTables();
+        if((isMock || instanceType == InstanceType.MINI) && isParent) {
+            setUpTables();
+        }
         setUpDao();
         setUpConfig();
     }
@@ -282,10 +283,12 @@ public class AccumuloInstanceDriver {
         addAuths(auth);
         final TablePermission tablePermission = isReadOnly ? 
TablePermission.READ : TablePermission.WRITE;
         for (final String tableSuffix : TABLE_NAME_SUFFIXES) {
+            log.info("Giving user: " + user + " " + tablePermission.toString() 
+ " permissions on table " + tablePrefix + tableSuffix);
             secOps.grantTablePermission(user, tablePrefix + tableSuffix, 
tablePermission);
         }
         if (shouldCreateIndices) {
             for (final String index : indices) {
+                log.info("Giving user: " + user + " " + 
tablePermission.toString() + " permissions on table " + index);
                 secOps.grantTablePermission(user, index, tablePermission);
             }
         }
@@ -394,7 +397,7 @@ public class AccumuloInstanceDriver {
      */
     public void tearDown() throws Exception {
         try {
-            //tearDownTables();
+            tearDownTables();
             tearDownDao();
             tearDownInstance();
         } finally {

http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/b61920ab/extras/rya.export/export.accumulo/src/main/java/org/apache/rya/export/accumulo/util/AccumuloRyaUtils.java
----------------------------------------------------------------------
diff --git 
a/extras/rya.export/export.accumulo/src/main/java/org/apache/rya/export/accumulo/util/AccumuloRyaUtils.java
 
b/extras/rya.export/export.accumulo/src/main/java/org/apache/rya/export/accumulo/util/AccumuloRyaUtils.java
index c425227..115074c 100644
--- 
a/extras/rya.export/export.accumulo/src/main/java/org/apache/rya/export/accumulo/util/AccumuloRyaUtils.java
+++ 
b/extras/rya.export/export.accumulo/src/main/java/org/apache/rya/export/accumulo/util/AccumuloRyaUtils.java
@@ -41,30 +41,30 @@ import org.apache.accumulo.core.client.mock.MockInstance;
 import org.apache.accumulo.core.client.security.tokens.PasswordToken;
 import org.apache.accumulo.core.data.Key;
 import org.apache.accumulo.core.data.Value;
+import org.apache.accumulo.core.iterators.Filter;
 import org.apache.accumulo.core.iterators.user.RegExFilter;
 import org.apache.accumulo.core.security.Authorizations;
 import org.apache.commons.lang.StringUtils;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.log4j.Logger;
+import org.apache.rya.accumulo.AccumuloRdfConfiguration;
+import org.apache.rya.accumulo.AccumuloRyaDAO;
+import org.apache.rya.accumulo.mr.MRUtils;
+import org.apache.rya.api.RdfCloudTripleStoreConstants;
+import org.apache.rya.api.RdfCloudTripleStoreConstants.TABLE_LAYOUT;
+import org.apache.rya.api.domain.RyaStatement;
+import org.apache.rya.api.domain.RyaURI;
+import org.apache.rya.api.persist.RyaDAOException;
+import org.apache.rya.api.resolver.RdfToRyaConversions;
+import org.apache.rya.api.resolver.RyaTripleContext;
+import org.apache.rya.api.resolver.triple.TripleRow;
+import org.apache.rya.api.resolver.triple.TripleRowResolverException;
+import org.apache.rya.indexing.accumulo.ConfigUtils;
 import org.openrdf.model.ValueFactory;
 
 import com.google.common.base.Joiner;
 import com.google.common.collect.ImmutableSet;
 
-import mvm.rya.accumulo.AccumuloRdfConfiguration;
-import mvm.rya.accumulo.AccumuloRyaDAO;
-import mvm.rya.accumulo.mr.MRUtils;
-import mvm.rya.api.RdfCloudTripleStoreConstants;
-import mvm.rya.api.RdfCloudTripleStoreConstants.TABLE_LAYOUT;
-import mvm.rya.api.domain.RyaStatement;
-import mvm.rya.api.domain.RyaURI;
-import mvm.rya.api.persist.RyaDAOException;
-import mvm.rya.api.resolver.RdfToRyaConversions;
-import mvm.rya.api.resolver.RyaTripleContext;
-import mvm.rya.api.resolver.triple.TripleRow;
-import mvm.rya.api.resolver.triple.TripleRowResolverException;
-import mvm.rya.indexing.accumulo.ConfigUtils;
-
 /**
  * Utility methods for an Accumulo Rya instance.
  */
@@ -153,7 +153,7 @@ public final class AccumuloRyaUtils {
     public static IteratorSetting getVersionRegExFilterSetting() {
         final IteratorSetting regex = new IteratorSetting(30, "version_regex", 
RegExFilter.class);
         RegExFilter.setRegexs(regex, 
"(.*)urn:(.*)#version[\u0000|\u0001](.*)", null, null, null, false);
-        RegExFilter.setNegate(regex, true);
+        Filter.setNegate(regex, true);
         return regex;
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/b61920ab/extras/rya.export/export.accumulo/src/main/java/org/apache/rya/export/api/conf/AccumuloConfigurationAdapter.java
----------------------------------------------------------------------
diff --git 
a/extras/rya.export/export.accumulo/src/main/java/org/apache/rya/export/api/conf/AccumuloConfigurationAdapter.java
 
b/extras/rya.export/export.accumulo/src/main/java/org/apache/rya/export/api/conf/AccumuloConfigurationAdapter.java
index 47e740d..63d0930 100644
--- 
a/extras/rya.export/export.accumulo/src/main/java/org/apache/rya/export/api/conf/AccumuloConfigurationAdapter.java
+++ 
b/extras/rya.export/export.accumulo/src/main/java/org/apache/rya/export/api/conf/AccumuloConfigurationAdapter.java
@@ -18,50 +18,81 @@
  */
 package org.apache.rya.export.api.conf;
 
-import org.apache.rya.export.JAXBAccumuloMergeConfiguration;
-import org.apache.rya.export.accumulo.common.InstanceType;
+import org.apache.rya.export.AccumuloMergeToolConfiguration;
+import org.apache.rya.export.DBType;
+import org.apache.rya.export.InstanceType;
+import org.apache.rya.export.MergeToolConfiguration;
 import 
org.apache.rya.export.api.conf.AccumuloMergeConfiguration.AccumuloBuilder;
 
 /**
  * Helper for creating the immutable application configuration that uses
  * Accumulo.
  */
-public class AccumuloConfigurationAdapter {
+public class AccumuloConfigurationAdapter extends ConfigurationAdapter {
     /**
-     * @param jConfig - The JAXB generated configuration.
+     * @param genConfig - The JAXB generated configuration.
      * @return The {@link MergeConfiguration} used in the application
      * @throws MergeConfigurationException
      */
-    public static AccumuloMergeConfiguration createConfig(final 
JAXBAccumuloMergeConfiguration jConfig) throws MergeConfigurationException {
-        final AccumuloBuilder configBuilder = (AccumuloBuilder) new 
AccumuloBuilder()
-        // Accumulo Properties
-        .setParentZookeepers(jConfig.getParentZookeepers())
-        .setParentAuths(jConfig.getParentAuths())
-        
.setParentInstanceType(InstanceType.fromName(jConfig.getParentInstanceType()))
-        .setChildZookeepers(jConfig.getChildZookeepers())
-        .setChildAuths(jConfig.getChildAuths())
-        
.setChildInstanceType(InstanceType.fromName(jConfig.getChildInstanceType()))
-        // Base Properties
-        .setParentHostname(jConfig.getParentHostname())
-        .setParentUsername(jConfig.getParentUsername())
-        .setParentPassword(jConfig.getParentPassword())
-        .setParentRyaInstanceName(jConfig.getParentRyaInstanceName())
-        .setParentDBType(jConfig.getParentDBType())
-        .setParentPort(jConfig.getParentPort())
-        .setParentTablePrefix(jConfig.getParentTablePrefix())
-        .setParentTomcatUrl(jConfig.getParentTomcatUrl())
-        .setChildHostname(jConfig.getChildHostname())
-        .setChildUsername(jConfig.getChildUsername())
-        .setChildPassword(jConfig.getChildPassword())
-        .setChildRyaInstanceName(jConfig.getChildRyaInstanceName())
-        .setChildDBType(jConfig.getChildDBType())
-        .setChildPort(jConfig.getChildPort())
-        .setChildTablePrefix(jConfig.getChildTablePrefix())
-        .setChildTomcatUrl(jConfig.getChildTomcatUrl())
-        .setMergePolicy(jConfig.getMergePolicy())
-        .setUseNtpServer(jConfig.isUseNtpServer())
-        .setNtpServerHost(jConfig.getNtpServerHost())
-        .setToolStartTime(jConfig.getToolStartTime());
-        return configBuilder.build();
+    @Override
+    public MergeConfiguration createConfig(final MergeToolConfiguration 
genConfig) throws MergeConfigurationException {
+        final AccumuloMergeToolConfiguration aConfig = 
(AccumuloMergeToolConfiguration) genConfig;
+        final DBType parentType = aConfig.getParentDBType();
+        final DBType childType = aConfig.getChildDBType();
+        final MergeConfiguration.Builder configBuilder = 
super.getBuilder(aConfig);
+        final AccumuloBuilder builder = new AccumuloBuilder(configBuilder);
+        if(parentType == DBType.ACCUMULO) {
+            verifyParentInstanceType(aConfig);
+            builder.setParentZookeepers(aConfig.getParentZookeepers())
+            .setParentAuths(aConfig.getParentAuths())
+            .setParentInstanceType(aConfig.getParentInstanceType());
+        }
+
+        if(childType == DBType.ACCUMULO) {
+            verifyChildInstanceType(aConfig);
+            builder.setChildZookeepers(aConfig.getChildZookeepers())
+            .setChildAuths(aConfig.getChildAuths())
+            .setChildInstanceType(aConfig.getChildInstanceType());
+        }
+
+        return builder.build();
+    }
+
+    private void verifyParentInstanceType(final AccumuloMergeToolConfiguration 
aConfig) throws MergeConfigurationException {
+        final InstanceType type = aConfig.getParentInstanceType();
+        switch(type) {
+        case DISTRIBUTION:
+            final String auths = aConfig.getParentAuths();
+            if(auths == null) {
+                throw new MergeConfigurationException("Missing authorization 
level for parent accumulo.");
+            }
+            final String zookeepers = aConfig.getParentZookeepers();
+            if(zookeepers == null) {
+                throw new MergeConfigurationException("Missing zookeeper 
location(s) for parent accumulo.");
+            }
+            break;
+        case MINI:
+        case MOCK:
+            break;
+        }
+    }
+
+    private void verifyChildInstanceType(final AccumuloMergeToolConfiguration 
aConfig) throws MergeConfigurationException {
+        final InstanceType type = aConfig.getChildInstanceType();
+        switch(type) {
+        case DISTRIBUTION:
+            final String auths = aConfig.getChildAuths();
+            if(auths == null) {
+                throw new MergeConfigurationException("Missing authorization 
level for child accumulo.");
+            }
+            final String zookeepers = aConfig.getChildZookeepers();
+            if(zookeepers == null) {
+                throw new MergeConfigurationException("Missing zookeeper 
location(s) for child accumulo.");
+            }
+            break;
+        case MINI:
+        case MOCK:
+            break;
+        }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/b61920ab/extras/rya.export/export.accumulo/src/main/java/org/apache/rya/export/api/conf/AccumuloMergeConfiguration.java
----------------------------------------------------------------------
diff --git 
a/extras/rya.export/export.accumulo/src/main/java/org/apache/rya/export/api/conf/AccumuloMergeConfiguration.java
 
b/extras/rya.export/export.accumulo/src/main/java/org/apache/rya/export/api/conf/AccumuloMergeConfiguration.java
index fbd5477..a35d5aa 100644
--- 
a/extras/rya.export/export.accumulo/src/main/java/org/apache/rya/export/api/conf/AccumuloMergeConfiguration.java
+++ 
b/extras/rya.export/export.accumulo/src/main/java/org/apache/rya/export/api/conf/AccumuloMergeConfiguration.java
@@ -18,17 +18,15 @@
  */
 package org.apache.rya.export.api.conf;
 
-import static com.google.common.base.Preconditions.checkNotNull;
-
 import org.apache.http.annotation.Immutable;
-import org.apache.rya.export.accumulo.common.InstanceType;
+import org.apache.rya.export.InstanceType;
 
 /**
  * Immutable configuration object to allow the MergeTool to connect to the 
parent and child
  * databases for data merging.
  */
 @Immutable
-public class AccumuloMergeConfiguration extends MergeConfiguration {
+public class AccumuloMergeConfiguration extends MergeConfigurationDecorator {
     /**
      * Information needed to connect to the parent database
      */
@@ -46,15 +44,15 @@ public class AccumuloMergeConfiguration extends 
MergeConfiguration {
     /**
      * Constructs a {@link AccumuloMergeConfiguration}.  All fields are 
required.
      */
-    private AccumuloMergeConfiguration(final AccumuloBuilder builder) throws 
MergeConfigurationException {
-        super(checkNotNull(builder));
+    private AccumuloMergeConfiguration(final 
AccumuloMergeConfiguration.AccumuloBuilder builder) throws 
MergeConfigurationException {
+        super(builder);
         try {
-            this.parentZookeepers = checkNotNull(builder.parentZookeepers);
-            this.parentAuths = checkNotNull(builder.parentAuths);
-            this.parentInstanceType = checkNotNull(builder.parentInstanceType);
-            this.childZookeepers = checkNotNull(builder.childZookeepers);
-            this.childAuths = checkNotNull(builder.childAuths);
-            this.childInstanceType = checkNotNull(builder.childInstanceType);
+            parentZookeepers = builder.parentZookeepers;
+            parentAuths = builder.parentAuths;
+            parentInstanceType = builder.parentInstanceType;
+            childZookeepers = builder.childZookeepers;
+            childAuths = builder.childAuths;
+            childInstanceType = builder.childInstanceType;
         } catch(final NullPointerException npe) {
             throw new MergeConfigurationException("The configuration was 
missing required field(s)", npe);
         }
@@ -114,8 +112,8 @@ public class AccumuloMergeConfiguration extends 
MergeConfiguration {
         private String childAuths;
         private InstanceType childInstanceType;
 
-        public AccumuloBuilder() {
-            super();
+        public AccumuloBuilder(final MergeConfiguration.Builder builder) {
+            super(builder);
         }
 
         /**

http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/b61920ab/extras/rya.export/export.accumulo/src/main/xsd/AccumuloMergeConfiguration.xsd
----------------------------------------------------------------------
diff --git 
a/extras/rya.export/export.accumulo/src/main/xsd/AccumuloMergeConfiguration.xsd 
b/extras/rya.export/export.accumulo/src/main/xsd/AccumuloMergeConfiguration.xsd
index 65d1ed5..e0cd5ce 100644
--- 
a/extras/rya.export/export.accumulo/src/main/xsd/AccumuloMergeConfiguration.xsd
+++ 
b/extras/rya.export/export.accumulo/src/main/xsd/AccumuloMergeConfiguration.xsd
@@ -26,21 +26,31 @@ under the License.
     <!-- Reference to External Module containing JAXBMergeConfiguration 
definition --> 
     <xs:include 
schemaLocation="../../../../export.api/src/main/xsd/MergeConfiguration.xsd"/>
 
-    <xs:complexType name="JAXBAccumuloMergeConfiguration">
+    <xs:complexType name="AccumuloMergeToolConfiguration">
         <xs:complexContent>
-            <xs:extension base="mc:JAXBMergeConfiguration">
+            <xs:extension base="mc:MergeToolConfiguration">
                 <xs:sequence>
-                    <!-- Parent Properties -->
-                    <xs:element name="parentZookeepers" type="xs:string"/>
-                    <xs:element name="parentAuths" type="xs:string"/>
-                    <xs:element name="parentInstanceType" type="xs:string"/>
+                    <!-- Parent Properties zookeepers and auths are not 
required 
+                    if the instance type is not distribution-->
+                    <xs:element name="parentZookeepers" type="xs:string" 
minOccurs="0"/>
+                    <xs:element name="parentAuths" type="xs:string" 
minOccurs="0"/>
+                    <xs:element name="parentInstanceType" 
type="mc:InstanceType"/>
 
-                    <!-- Child Properties -->
-                    <xs:element name="childZookeepers" type="xs:string"/>
-                    <xs:element name="childAuths" type="xs:string"/>
-                    <xs:element name="childInstanceType" type="xs:string"/>
+                    <!-- Child Properties zookeepers and auths are not 
required 
+                    if the instance type is not distribution-->
+                    <xs:element name="childZookeepers" type="xs:string" 
minOccurs="0"/>
+                    <xs:element name="childAuths" type="xs:string" 
minOccurs="0"/>
+                    <xs:element name="childInstanceType" 
type="mc:InstanceType"/>
                 </xs:sequence>
             </xs:extension>
         </xs:complexContent>
     </xs:complexType>
+    
+    <xs:simpleType name="InstanceType">
+      <xs:restriction base="xs:string">
+        <xs:enumeration value="mock"/>
+        <xs:enumeration value="mini"/>
+        <xs:enumeration value="distribution"/>
+      </xs:restriction>
+    </xs:simpleType>
 </schema>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/b61920ab/extras/rya.export/export.accumulo/src/test/java/org/apache/rya/export/accumulo/AccumuloRyaStatementStoreTest.java
----------------------------------------------------------------------
diff --git 
a/extras/rya.export/export.accumulo/src/test/java/org/apache/rya/export/accumulo/AccumuloRyaStatementStoreTest.java
 
b/extras/rya.export/export.accumulo/src/test/java/org/apache/rya/export/accumulo/AccumuloRyaStatementStoreTest.java
index 22df92a..7c2ff83 100644
--- 
a/extras/rya.export/export.accumulo/src/test/java/org/apache/rya/export/accumulo/AccumuloRyaStatementStoreTest.java
+++ 
b/extras/rya.export/export.accumulo/src/test/java/org/apache/rya/export/accumulo/AccumuloRyaStatementStoreTest.java
@@ -19,6 +19,7 @@
 package org.apache.rya.export.accumulo;
 
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
@@ -27,18 +28,20 @@ import java.util.Date;
 import java.util.Iterator;
 
 import org.apache.hadoop.conf.Configuration;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
+import org.apache.log4j.LogManager;
+import org.apache.log4j.Logger;
+import org.apache.rya.api.domain.RyaStatement;
+import org.apache.rya.export.InstanceType;
 import org.apache.rya.export.MergePolicy;
-import org.apache.rya.export.accumulo.common.InstanceType;
-import org.apache.rya.export.accumulo.conf.AccumuloExportConstants;
 import org.apache.rya.export.accumulo.util.AccumuloInstanceDriver;
 import org.apache.rya.export.api.MergerException;
 import org.apache.rya.export.api.conf.AccumuloMergeConfiguration;
 import org.apache.rya.export.api.store.AddStatementException;
 import org.apache.rya.export.api.store.FetchStatementException;
 import org.apache.rya.export.api.store.RemoveStatementException;
+import org.apache.rya.export.api.store.RyaStatementStore;
 import org.apache.rya.export.api.store.UpdateStatementException;
+import org.apache.rya.indexing.accumulo.ConfigUtils;
 import org.junit.After;
 import org.junit.AfterClass;
 import org.junit.Before;
@@ -47,9 +50,6 @@ import org.junit.Test;
 
 import com.google.common.collect.ImmutableList;
 
-import mvm.rya.api.domain.RyaStatement;
-import mvm.rya.indexing.accumulo.ConfigUtils;
-
 /**
  * Tests the methods of {@link AccumuloRyaStatementStore}.
  */
@@ -57,7 +57,7 @@ public class AccumuloRyaStatementStoreTest {
     private static final Logger log = 
LogManager.getLogger(AccumuloRyaStatementStoreTest.class);
     private static final InstanceType INSTANCE_TYPE = InstanceType.MOCK;
 
-    private static final boolean IS_MOCK = INSTANCE_TYPE.isMock();
+    private static final boolean IS_MOCK = INSTANCE_TYPE == InstanceType.MOCK;
     private static final String USER_NAME = IS_MOCK ? "test_user" : 
AccumuloInstanceDriver.ROOT_USER_NAME;
     private static final String PASSWORD = "password";
     private static final String INSTANCE_NAME = "test_instance";
@@ -115,6 +115,23 @@ public class AccumuloRyaStatementStoreTest {
         accumuloRyaStatementStore.fetchStatements();
     }
 
+    @Test
+    public void testRemoveAddStatements() throws MergerException {
+        final AccumuloRyaStatementStore accumuloRyaStatementStore = 
createAccumuloRyaStatementStore();
+
+        for (final RyaStatement ryaStatement : RYA_STATEMENTS) {
+            accumuloRyaStatementStore.addStatement(ryaStatement);
+        }
+        final RyaStatement stmnt = RYA_STATEMENTS.get(0);
+
+        assertTrue(accumuloRyaStatementStore.containsStatement(stmnt));
+        accumuloRyaStatementStore.removeStatement(stmnt);
+        assertFalse(accumuloRyaStatementStore.containsStatement(stmnt));
+
+        accumuloRyaStatementStore.addStatement(stmnt);
+        assertTrue(accumuloRyaStatementStore.containsStatement(stmnt));
+    }
+
     @Test (expected = FetchStatementException.class)
     public void testFetchStatements_FetchWrongInstance() throws 
MergerException {
         final AccumuloRyaStatementStore accumuloRyaStatementStore = 
createAccumuloRyaStatementStore();
@@ -123,7 +140,7 @@ public class AccumuloRyaStatementStoreTest {
             accumuloRyaStatementStore.addStatement(ryaStatement);
         }
 
-        final Configuration config = 
accumuloRyaStatementStore.getRyaDAO().getConf();
+        final Configuration config = accumuloInstanceDriver.getDao().getConf();
 
         config.set(ConfigUtils.CLOUDBASE_INSTANCE, "wrong instance");
 
@@ -147,6 +164,34 @@ public class AccumuloRyaStatementStoreTest {
     }
 
     @Test
+    public void testAddRemoveAddStatement() throws Exception {
+        final AccumuloRyaStatementStore accumuloRyaStatementStore = 
createAccumuloRyaStatementStore();
+        final RyaStatement stmnt = RYA_STATEMENTS.get(0);
+        accumuloRyaStatementStore.addStatement(stmnt);
+        assertTrue(accumuloRyaStatementStore.containsStatement(stmnt));
+        assertEquals(1, count(accumuloRyaStatementStore));
+
+        accumuloRyaStatementStore.removeStatement(stmnt);
+        assertFalse(accumuloRyaStatementStore.containsStatement(stmnt));
+        assertEquals(0, count(accumuloRyaStatementStore));
+
+        accumuloRyaStatementStore.addStatement(stmnt);
+        assertTrue(accumuloRyaStatementStore.containsStatement(stmnt));
+        assertEquals(1, count(accumuloRyaStatementStore));
+    }
+
+    private int count(final RyaStatementStore store) throws 
FetchStatementException {
+        final Iterator<RyaStatement> statements = store.fetchStatements();
+        int count = 0;
+        while(statements.hasNext()) {
+            final RyaStatement statement = statements.next();
+            System.out.println(statement.getObject().getData() + "     " + 
statement.getTimestamp());
+            count++;
+        }
+        return count;
+    }
+
+    @Test
     public void testRemoveStatement() throws MergerException {
         final AccumuloRyaStatementStore accumuloRyaStatementStore = 
createAccumuloRyaStatementStore();
 
@@ -360,7 +405,6 @@ public class AccumuloRyaStatementStoreTest {
 
         // Other
         
when(accumuloMergeConfiguration.getMergePolicy()).thenReturn(MergePolicy.TIMESTAMP);
-        
when(accumuloMergeConfiguration.getToolStartTime()).thenReturn(AccumuloExportConstants.convertDateToStartTimeString(new
 Date()));
 
         return accumuloMergeConfiguration;
     }
@@ -372,13 +416,8 @@ public class AccumuloRyaStatementStoreTest {
 
     private static AccumuloRyaStatementStore 
createAccumuloRyaStatementStore(final AccumuloMergeConfiguration 
accumuloMergeConfiguration) throws MergerException {
         final String instance = 
accumuloMergeConfiguration.getParentRyaInstanceName();
-        final String username = accumuloMergeConfiguration.getParentUsername();
-        final String password = accumuloMergeConfiguration.getParentPassword();
-        final InstanceType instanceType = 
accumuloMergeConfiguration.getParentInstanceType();
         final String tablePrefix = 
accumuloMergeConfiguration.getParentTablePrefix();
-        final String auths = accumuloMergeConfiguration.getParentAuths();
-        final String zooKeepers = 
accumuloMergeConfiguration.getParentZookeepers();
 
-        return new AccumuloRyaStatementStore(instance, username, password, 
instanceType, tablePrefix, auths, zooKeepers);
+        return new AccumuloRyaStatementStore(accumuloInstanceDriver.getDao(), 
tablePrefix, instance);
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/b61920ab/extras/rya.export/export.accumulo/src/test/java/org/apache/rya/export/accumulo/TestUtils.java
----------------------------------------------------------------------
diff --git 
a/extras/rya.export/export.accumulo/src/test/java/org/apache/rya/export/accumulo/TestUtils.java
 
b/extras/rya.export/export.accumulo/src/test/java/org/apache/rya/export/accumulo/TestUtils.java
index 41d6495..34d1ba9 100644
--- 
a/extras/rya.export/export.accumulo/src/test/java/org/apache/rya/export/accumulo/TestUtils.java
+++ 
b/extras/rya.export/export.accumulo/src/test/java/org/apache/rya/export/accumulo/TestUtils.java
@@ -20,11 +20,10 @@ package org.apache.rya.export.accumulo;
 
 import java.util.Date;
 
+import org.apache.rya.api.domain.RyaStatement;
+import org.apache.rya.api.domain.RyaURI;
 import org.apache.rya.export.accumulo.util.AccumuloRyaUtils;
 
-import mvm.rya.api.domain.RyaStatement;
-import mvm.rya.api.domain.RyaURI;
-
 /**
  * Utility methods for testing merging/copying.
  */

http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/b61920ab/extras/rya.export/export.accumulo/src/test/java/org/apache/rya/export/accumulo/driver/AccumuloDualInstanceDriver.java
----------------------------------------------------------------------
diff --git 
a/extras/rya.export/export.accumulo/src/test/java/org/apache/rya/export/accumulo/driver/AccumuloDualInstanceDriver.java
 
b/extras/rya.export/export.accumulo/src/test/java/org/apache/rya/export/accumulo/driver/AccumuloDualInstanceDriver.java
index d851d90..467476c 100644
--- 
a/extras/rya.export/export.accumulo/src/test/java/org/apache/rya/export/accumulo/driver/AccumuloDualInstanceDriver.java
+++ 
b/extras/rya.export/export.accumulo/src/test/java/org/apache/rya/export/accumulo/driver/AccumuloDualInstanceDriver.java
@@ -35,14 +35,13 @@ import org.apache.accumulo.core.security.Authorizations;
 import org.apache.accumulo.core.security.ColumnVisibility;
 import org.apache.accumulo.minicluster.MiniAccumuloCluster;
 import org.apache.log4j.Logger;
-import org.apache.rya.export.accumulo.common.InstanceType;
+import org.apache.rya.accumulo.AccumuloRdfConfiguration;
+import org.apache.rya.accumulo.AccumuloRyaDAO;
+import org.apache.rya.api.domain.RyaStatement;
+import org.apache.rya.api.persist.RyaDAOException;
+import org.apache.rya.export.InstanceType;
 import org.apache.rya.export.accumulo.util.AccumuloInstanceDriver;
 
-import mvm.rya.accumulo.AccumuloRdfConfiguration;
-import mvm.rya.accumulo.AccumuloRyaDAO;
-import mvm.rya.api.domain.RyaStatement;
-import mvm.rya.api.persist.RyaDAOException;
-
 /**
  * Handles running a {@link MiniAccumuloCluster} or a {@link MockInstance} for 
a parent and child instance for testing.
  */
@@ -89,7 +88,7 @@ public class AccumuloDualInstanceDriver {
      */
     public AccumuloDualInstanceDriver(final InstanceType instanceType, final 
boolean shouldCreateIndices, final boolean isParentReadOnly, final boolean 
isChildReadOnly, final boolean doesChildInitiallyExist) {
         this.instanceType = instanceType;
-        this.isMock = instanceType.isMock();
+        isMock = instanceType == InstanceType.MOCK;
         this.shouldCreateIndices = shouldCreateIndices;
         this.isParentReadOnly = isParentReadOnly;
         this.isChildReadOnly = isChildReadOnly;
@@ -186,7 +185,7 @@ public class AccumuloDualInstanceDriver {
      */
     public void tearDown() throws Exception {
         try {
-            //tearDownTables();
+            tearDownTables();
             tearDownDaos();
             tearDownInstances();
         } finally {

http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/b61920ab/extras/rya.export/export.accumulo/src/test/java/org/apache/rya/export/accumulo/parent/AccumuloParentMetadataRepositoryAdapterTest.java
----------------------------------------------------------------------
diff --git 
a/extras/rya.export/export.accumulo/src/test/java/org/apache/rya/export/accumulo/parent/AccumuloParentMetadataRepositoryAdapterTest.java
 
b/extras/rya.export/export.accumulo/src/test/java/org/apache/rya/export/accumulo/parent/AccumuloParentMetadataRepositoryAdapterTest.java
index eca01ee..a5adca1 100644
--- 
a/extras/rya.export/export.accumulo/src/test/java/org/apache/rya/export/accumulo/parent/AccumuloParentMetadataRepositoryAdapterTest.java
+++ 
b/extras/rya.export/export.accumulo/src/test/java/org/apache/rya/export/accumulo/parent/AccumuloParentMetadataRepositoryAdapterTest.java
@@ -1,14 +1,32 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
 package org.apache.rya.export.accumulo.parent;
 
 import static org.junit.Assert.assertEquals;
 
 import java.util.Date;
 
-import org.apache.rya.export.accumulo.common.InstanceType;
+import org.apache.rya.export.InstanceType;
 import org.apache.rya.export.accumulo.util.AccumuloInstanceDriver;
-import org.apache.rya.export.api.parent.MergeParentMetadata;
-import org.apache.rya.export.api.parent.ParentMetadataDoesNotExistException;
-import org.apache.rya.export.api.parent.ParentMetadataExistsException;
+import org.apache.rya.export.api.metadata.MergeParentMetadata;
+import org.apache.rya.export.api.metadata.ParentMetadataDoesNotExistException;
+import org.apache.rya.export.api.metadata.ParentMetadataExistsException;
 import org.junit.AfterClass;
 import org.junit.BeforeClass;
 import org.junit.Test;
@@ -25,7 +43,7 @@ public class AccumuloParentMetadataRepositoryAdapterTest {
 
     private static final InstanceType INSTANCE_TYPE = InstanceType.MOCK;
 
-    private static final boolean IS_MOCK = INSTANCE_TYPE.isMock();
+    private static final boolean IS_MOCK = INSTANCE_TYPE == InstanceType.MOCK;
     private static final String USER_NAME = IS_MOCK ? "test_user" : 
AccumuloInstanceDriver.ROOT_USER_NAME;
     private static final String PASSWORD = "password";
     private static final String INSTANCE_NAME = "test_instance";

Reply via email to