You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@rya.apache.org by pu...@apache.org on 2016/12/15 18:40:03 UTC
[09/10] incubator-rya git commit: RYA-161 Merge Tool with client;
Closes #84 from isper3at/RYA-123_MergeTool
http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/b61920ab/extras/rya.export/export.accumulo/src/test/java/org/apache/rya/export/api/conf/AccumuloConfigurationAdapterTest.java
----------------------------------------------------------------------
diff --git a/extras/rya.export/export.accumulo/src/test/java/org/apache/rya/export/api/conf/AccumuloConfigurationAdapterTest.java b/extras/rya.export/export.accumulo/src/test/java/org/apache/rya/export/api/conf/AccumuloConfigurationAdapterTest.java
index ad322a3..e62cae1 100644
--- a/extras/rya.export/export.accumulo/src/test/java/org/apache/rya/export/api/conf/AccumuloConfigurationAdapterTest.java
+++ b/extras/rya.export/export.accumulo/src/test/java/org/apache/rya/export/api/conf/AccumuloConfigurationAdapterTest.java
@@ -18,19 +18,22 @@
*/
package org.apache.rya.export.api.conf;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import java.util.Date;
+import org.apache.rya.export.AccumuloMergeToolConfiguration;
import org.apache.rya.export.DBType;
-import org.apache.rya.export.JAXBAccumuloMergeConfiguration;
+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.driver.AccumuloDualInstanceDriver;
import org.apache.rya.export.accumulo.util.AccumuloInstanceDriver;
-import org.junit.Assert;
import org.junit.Test;
/**
@@ -39,8 +42,8 @@ import org.junit.Test;
public class AccumuloConfigurationAdapterTest {
private static final InstanceType INSTANCE_TYPE = InstanceType.MOCK;
- private static final boolean IS_MOCK = INSTANCE_TYPE.isMock();
- private static final boolean USE_TIME_SYNC = false;
+ private static final boolean IS_MOCK = INSTANCE_TYPE == InstanceType.MOCK;
+ private static final boolean USE_TIME_SYNC = true;
private static final String PARENT_HOST_NAME = "localhost:1234";
private static final int PARENT_PORT = 1111;
@@ -68,7 +71,7 @@ public class AccumuloConfigurationAdapterTest {
@Test
public void testCreateConfig() throws MergeConfigurationException {
- final JAXBAccumuloMergeConfiguration jConfig = mock(JAXBAccumuloMergeConfiguration.class);
+ final AccumuloMergeToolConfiguration jConfig = mock(AccumuloMergeToolConfiguration.class);
// Parent Properties
when(jConfig.getParentHostname()).thenReturn(PARENT_HOST_NAME);
when(jConfig.getParentPort()).thenReturn(PARENT_PORT);
@@ -79,7 +82,7 @@ public class AccumuloConfigurationAdapterTest {
when(jConfig.getParentDBType()).thenReturn(DBType.ACCUMULO);
when(jConfig.getParentTomcatUrl()).thenReturn(PARENT_TOMCAT_URL);
// Parent Accumulo Properties
- when(jConfig.getParentInstanceType()).thenReturn(INSTANCE_TYPE.toString());
+ when(jConfig.getParentInstanceType()).thenReturn(INSTANCE_TYPE);
when(jConfig.getParentAuths()).thenReturn(PARENT_AUTH);
when(jConfig.getParentZookeepers()).thenReturn(PARENT_ZOOKEEPERS);
@@ -90,56 +93,51 @@ public class AccumuloConfigurationAdapterTest {
when(jConfig.getChildUsername()).thenReturn(CHILD_USER_NAME);
when(jConfig.getChildPassword()).thenReturn(CHILD_PASSWORD);
when(jConfig.getChildTablePrefix()).thenReturn(CHILD_TABLE_PREFIX);
- when(jConfig.getChildDBType()).thenReturn(DBType.ACCUMULO);
+ when(jConfig.getChildDBType()).thenReturn(DBType.MONGO);
when(jConfig.getChildTomcatUrl()).thenReturn(CHILD_TOMCAT_URL);
- // Child Accumulo Properties
- when(jConfig.getChildInstanceType()).thenReturn(INSTANCE_TYPE.toString());
- when(jConfig.getChildAuths()).thenReturn(CHILD_AUTH);
- when(jConfig.getChildZookeepers()).thenReturn(CHILD_ZOOKEEPERS);
// Other Properties
when(jConfig.getMergePolicy()).thenReturn(MergePolicy.TIMESTAMP);
when(jConfig.getNtpServerHost()).thenReturn(TIME_SERVER);
when(jConfig.isUseNtpServer()).thenReturn(USE_TIME_SYNC);
- when(jConfig.getToolStartTime()).thenReturn(TOOL_START_TIME);
- final AccumuloMergeConfiguration accumuloMergeConfiguration = AccumuloConfigurationAdapter.createConfig(jConfig);
+ final AccumuloConfigurationAdapter adapter = new AccumuloConfigurationAdapter();
+ final AccumuloMergeConfiguration accumuloMergeConfiguration = (AccumuloMergeConfiguration) adapter.createConfig(jConfig);
- Assert.assertNotNull(accumuloMergeConfiguration);
- Assert.assertEquals(AccumuloMergeConfiguration.class, accumuloMergeConfiguration.getClass());
+ assertNotNull(accumuloMergeConfiguration);
+ assertEquals(AccumuloMergeConfiguration.class, accumuloMergeConfiguration.getClass());
// Parent Properties
- Assert.assertEquals(PARENT_HOST_NAME, accumuloMergeConfiguration.getParentHostname());
- Assert.assertEquals(PARENT_USER_NAME, accumuloMergeConfiguration.getParentUsername());
- Assert.assertEquals(PARENT_PASSWORD, accumuloMergeConfiguration.getParentPassword());
- Assert.assertEquals(PARENT_INSTANCE, accumuloMergeConfiguration.getParentRyaInstanceName());
- Assert.assertEquals(PARENT_TABLE_PREFIX, accumuloMergeConfiguration.getParentTablePrefix());
- Assert.assertEquals(PARENT_TOMCAT_URL, accumuloMergeConfiguration.getParentTomcatUrl());
- Assert.assertEquals(DBType.ACCUMULO, accumuloMergeConfiguration.getParentDBType());
- Assert.assertEquals(PARENT_PORT, accumuloMergeConfiguration.getParentPort());
+ assertEquals(PARENT_HOST_NAME, accumuloMergeConfiguration.getParentHostname());
+ assertEquals(PARENT_USER_NAME, accumuloMergeConfiguration.getParentUsername());
+ assertEquals(PARENT_PASSWORD, accumuloMergeConfiguration.getParentPassword());
+ assertEquals(PARENT_INSTANCE, accumuloMergeConfiguration.getParentRyaInstanceName());
+ assertEquals(PARENT_TABLE_PREFIX, accumuloMergeConfiguration.getParentTablePrefix());
+ assertEquals(PARENT_TOMCAT_URL, accumuloMergeConfiguration.getParentTomcatUrl());
+ assertEquals(DBType.ACCUMULO, accumuloMergeConfiguration.getParentDBType());
+ assertEquals(PARENT_PORT, accumuloMergeConfiguration.getParentPort());
// Parent Accumulo Properties
- Assert.assertEquals(PARENT_ZOOKEEPERS, accumuloMergeConfiguration.getParentZookeepers());
- Assert.assertEquals(PARENT_AUTH, accumuloMergeConfiguration.getParentAuths());
- Assert.assertEquals(InstanceType.MOCK, accumuloMergeConfiguration.getParentInstanceType());
+ assertEquals(PARENT_ZOOKEEPERS, accumuloMergeConfiguration.getParentZookeepers());
+ assertEquals(PARENT_AUTH, accumuloMergeConfiguration.getParentAuths());
+ assertEquals(InstanceType.MOCK, accumuloMergeConfiguration.getParentInstanceType());
// Child Properties
- Assert.assertEquals(CHILD_HOST_NAME, accumuloMergeConfiguration.getChildHostname());
- Assert.assertEquals(CHILD_USER_NAME, accumuloMergeConfiguration.getChildUsername());
- Assert.assertEquals(CHILD_PASSWORD, accumuloMergeConfiguration.getChildPassword());
- Assert.assertEquals(CHILD_INSTANCE, accumuloMergeConfiguration.getChildRyaInstanceName());
- Assert.assertEquals(CHILD_TABLE_PREFIX, accumuloMergeConfiguration.getChildTablePrefix());
- Assert.assertEquals(CHILD_TOMCAT_URL, accumuloMergeConfiguration.getChildTomcatUrl());
- Assert.assertEquals(DBType.ACCUMULO, accumuloMergeConfiguration.getChildDBType());
- Assert.assertEquals(CHILD_PORT, accumuloMergeConfiguration.getChildPort());
+ assertEquals(CHILD_HOST_NAME, accumuloMergeConfiguration.getChildHostname());
+ assertEquals(CHILD_USER_NAME, accumuloMergeConfiguration.getChildUsername());
+ assertEquals(CHILD_PASSWORD, accumuloMergeConfiguration.getChildPassword());
+ assertEquals(CHILD_INSTANCE, accumuloMergeConfiguration.getChildRyaInstanceName());
+ assertEquals(CHILD_TABLE_PREFIX, accumuloMergeConfiguration.getChildTablePrefix());
+ assertEquals(CHILD_TOMCAT_URL, accumuloMergeConfiguration.getChildTomcatUrl());
+ assertEquals(DBType.MONGO, accumuloMergeConfiguration.getChildDBType());
+ assertEquals(CHILD_PORT, accumuloMergeConfiguration.getChildPort());
// Child Properties
- Assert.assertEquals(CHILD_ZOOKEEPERS, accumuloMergeConfiguration.getChildZookeepers());
- Assert.assertEquals(CHILD_AUTH, accumuloMergeConfiguration.getChildAuths());
- Assert.assertEquals(InstanceType.MOCK, accumuloMergeConfiguration.getChildInstanceType());
+ assertNull(accumuloMergeConfiguration.getChildZookeepers());
+ assertNull(accumuloMergeConfiguration.getChildAuths());
+ assertNull(accumuloMergeConfiguration.getChildInstanceType());
// Other Properties
- Assert.assertEquals(MergePolicy.TIMESTAMP, accumuloMergeConfiguration.getMergePolicy());
- Assert.assertEquals(Boolean.FALSE, accumuloMergeConfiguration.getUseNtpServer());
- Assert.assertEquals(TIME_SERVER, accumuloMergeConfiguration.getNtpServerHost());
- Assert.assertEquals(TOOL_START_TIME, accumuloMergeConfiguration.getToolStartTime());
+ assertEquals(MergePolicy.TIMESTAMP, accumuloMergeConfiguration.getMergePolicy());
+ assertTrue(accumuloMergeConfiguration.getUseNtpServer());
+ assertEquals(TIME_SERVER, accumuloMergeConfiguration.getNtpServerHost());
}
}
http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/b61920ab/extras/rya.export/export.api/pom.xml
----------------------------------------------------------------------
diff --git a/extras/rya.export/export.api/pom.xml b/extras/rya.export/export.api/pom.xml
index d0f88ee..892921c 100644
--- a/extras/rya.export/export.api/pom.xml
+++ b/extras/rya.export/export.api/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>
@@ -69,12 +69,12 @@ under the License.
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
- <version>1.4.3</version>
+ <version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
- <version>1.4.3</version>
+ <version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.glassfish.jaxb</groupId>
@@ -87,7 +87,7 @@ under the License.
<pluginManagement>
<plugins>
<!--
- If we e.g. execute on JDK 1.7, we should compile for Java 7 to get
+ If we e.g. execute on JDK 1.7, we should compile for Java 7 to get
the same (or higher) JAXB API version as used during the xjc execution.
-->
<plugin>
@@ -128,7 +128,6 @@ under the License.
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jaxb2-maven-plugin</artifactId>
- <version>2.2</version>
<executions>
<execution>
<id>xjc</id>
@@ -138,17 +137,12 @@ under the License.
</execution>
</executions>
<configuration>
- <sources>
- <source>src/main/xsd/MergeConfiguration.xsd</source>
- </sources>
<packageName>org.apache.rya.export</packageName>
<outputDirectory>src/gen/java</outputDirectory>
</configuration>
</plugin>
- <!--
- Create shaded jar with all the dependencies
- -->
+ <!--Create shaded jar with all the dependencies-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/b61920ab/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/Merger.java
----------------------------------------------------------------------
diff --git a/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/Merger.java b/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/Merger.java
index ce3e9d7..af5c70d 100644
--- a/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/Merger.java
+++ b/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/Merger.java
@@ -18,7 +18,7 @@
*/
package org.apache.rya.export.api;
-import mvm.rya.api.domain.RyaStatement;
+import org.apache.rya.api.domain.RyaStatement;
/**
* Performs the merging of {@link RyaStatement}s.
http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/b61920ab/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/StatementMerger.java
----------------------------------------------------------------------
diff --git a/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/StatementMerger.java b/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/StatementMerger.java
index 2737752..f48a673 100644
--- a/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/StatementMerger.java
+++ b/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/StatementMerger.java
@@ -18,9 +18,9 @@
*/
package org.apache.rya.export.api;
-import com.google.common.base.Optional;
+import org.apache.rya.api.domain.RyaStatement;
-import mvm.rya.api.domain.RyaStatement;
+import com.google.common.base.Optional;
/**
* Defines how 2 {@link RyaStatement}s will merge.
http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/b61920ab/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/conf/ConfigurationAdapter.java
----------------------------------------------------------------------
diff --git a/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/conf/ConfigurationAdapter.java b/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/conf/ConfigurationAdapter.java
index 39c4e0b..2699a96 100644
--- a/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/conf/ConfigurationAdapter.java
+++ b/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/conf/ConfigurationAdapter.java
@@ -18,7 +18,7 @@
*/
package org.apache.rya.export.api.conf;
-import org.apache.rya.export.JAXBMergeConfiguration;
+import org.apache.rya.export.MergeToolConfiguration;
import org.apache.rya.export.api.conf.MergeConfiguration.Builder;
/**
@@ -30,17 +30,32 @@ public class ConfigurationAdapter {
* @return The {@link MergeConfiguration} used in the application
* @throws MergeConfigurationException
*/
- public static MergeConfiguration createConfig(final JAXBMergeConfiguration jConfig) throws MergeConfigurationException {
- final Builder configBuilder = new Builder()
- .setParentHostname(jConfig.getParentHostname())
- .setParentRyaInstanceName(jConfig.getParentRyaInstanceName())
- .setParentDBType(jConfig.getParentDBType())
- .setParentPort(jConfig.getParentPort())
- .setChildHostname(jConfig.getChildHostname())
- .setChildRyaInstanceName(jConfig.getChildRyaInstanceName())
- .setChildDBType(jConfig.getChildDBType())
- .setChildPort(jConfig.getChildPort())
- .setMergePolicy(jConfig.getMergePolicy());
+ public MergeConfiguration createConfig(final MergeToolConfiguration jConfig) throws MergeConfigurationException {
+ final Builder configBuilder = getBuilder(jConfig);
return configBuilder.build();
}
+
+ protected Builder getBuilder(final MergeToolConfiguration jConfig) {
+ final Builder configBuilder = new Builder()
+ .setParentHostname(jConfig.getParentHostname())
+ .setParentUsername(jConfig.getParentUsername())
+ .setParentPassword(jConfig.getParentPassword())
+ .setParentTablePrefix(jConfig.getParentTablePrefix())
+ .setParentRyaInstanceName(jConfig.getParentRyaInstanceName())
+ .setParentTomcatUrl(jConfig.getParentTomcatUrl())
+ .setParentDBType(jConfig.getParentDBType())
+ .setParentPort(jConfig.getParentPort())
+ .setChildHostname(jConfig.getChildHostname())
+ .setChildUsername(jConfig.getChildUsername())
+ .setChildPassword(jConfig.getChildPassword())
+ .setChildTablePrefix(jConfig.getChildTablePrefix())
+ .setChildRyaInstanceName(jConfig.getChildRyaInstanceName())
+ .setChildTomcatUrl(jConfig.getChildTomcatUrl())
+ .setChildDBType(jConfig.getChildDBType())
+ .setChildPort(jConfig.getChildPort())
+ .setMergePolicy(jConfig.getMergePolicy())
+ .setUseNtpServer(jConfig.isUseNtpServer())
+ .setNtpServerHost(jConfig.getNtpServerHost());
+ return configBuilder;
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/b61920ab/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/conf/MergeConfiguration.java
----------------------------------------------------------------------
diff --git a/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/conf/MergeConfiguration.java b/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/conf/MergeConfiguration.java
index dd6fd89..96f7ed6 100644
--- a/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/conf/MergeConfiguration.java
+++ b/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/conf/MergeConfiguration.java
@@ -58,7 +58,6 @@ public class MergeConfiguration {
private final boolean useNtpServer;
private final String ntpServerHost;
- private final String toolStartTime;
/**
* Constructs a {@link MergeConfiguration}.
@@ -66,25 +65,24 @@ public class MergeConfiguration {
protected MergeConfiguration(final Builder builder) throws MergeConfigurationException {
try {
parentHostname = checkNotNull(builder.parentHostname);
- parentUsername = checkNotNull(builder.parentUsername);
- parentPassword = checkNotNull(builder.parentPassword);
+ parentUsername = builder.parentUsername;
+ parentPassword = builder.parentPassword;
parentRyaInstanceName = checkNotNull(builder.parentRyaInstanceName);
parentTablePrefix = checkNotNull(builder.parentTablePrefix);
parentTomcatUrl = checkNotNull(builder.parentTomcatUrl);
parentDBType = checkNotNull(builder.parentDBType);
parentPort = checkNotNull(builder.parentPort);
childHostname = checkNotNull(builder.childHostname);
- childUsername = checkNotNull(builder.childUsername);
- childPassword = checkNotNull(builder.childPassword);
+ childUsername = builder.childUsername;
+ childPassword = builder.childPassword;
childRyaInstanceName = checkNotNull(builder.childRyaInstanceName);
childTablePrefix = checkNotNull(builder.childTablePrefix);
childTomcatUrl = checkNotNull(builder.childTomcatUrl);
childDBType = checkNotNull(builder.childDBType);
childPort = checkNotNull(builder.childPort);
- mergePolicy = checkNotNull(builder.mergePolicy);
- useNtpServer = checkNotNull(builder.useNtpServer);
- ntpServerHost = checkNotNull(builder.ntpServerHost);
- toolStartTime = checkNotNull(builder.toolStartTime);
+ mergePolicy = builder.mergePolicy;
+ useNtpServer = builder.useNtpServer;
+ ntpServerHost = builder.ntpServerHost;
} catch(final NullPointerException npe) {
//fix this.
throw new MergeConfigurationException("The configuration was missing required field(s)", npe);
@@ -185,7 +183,7 @@ public class MergeConfiguration {
/**
* @return The URL of the Apache Tomcat server web page running on the child machine.
*/
- public String getChildTomcatUrl() {
+ public String getChildTomcatUrl() {;//
return childTomcatUrl;
}
@@ -226,28 +224,9 @@ public class MergeConfiguration {
}
/**
- * @return The time of the data to be included in the copy/merge process.
- */
- public String getToolStartTime() {
- return toolStartTime;
- }
-
- /**
- * Abstract builder to help create {@link MergeConfiguration}s.
- */
- public abstract static class AbstractBuilder<T extends AbstractBuilder<T>> {
- /**
- * @return The {@link MergeConfiguration} based on this builder.
- * @throws MergeConfigurationException
- * @throws NullPointerException if any field as not been provided
- */
- public abstract MergeConfiguration build() throws MergeConfigurationException;
- }
-
- /**
* Builder to help create {@link MergeConfiguration}s.
*/
- public static class Builder extends AbstractBuilder<Builder> {
+ public static class Builder {
private String parentHostname;
private String parentUsername;
private String parentPassword;
@@ -270,7 +249,41 @@ public class MergeConfiguration {
private Boolean useNtpServer;
private String ntpServerHost;
- private String toolStartTime;
+
+ /**
+ * Creates a new Builder to create a {@link MergeConfiguration}.
+ */
+ public Builder() {
+ }
+
+ /**
+ * Creates a Builder based on an existing one.
+ * @param builder - The {@link Builder}
+ */
+ public Builder(final Builder builder) {
+ parentDBType = builder.parentDBType;
+ parentHostname = builder.parentHostname;
+ parentPassword = builder.parentPassword;
+ parentPort = builder.parentPort;
+ parentRyaInstanceName = builder.parentRyaInstanceName;
+ parentTablePrefix = builder.parentTablePrefix;
+ parentTomcatUrl = builder.parentTomcatUrl;
+ parentUsername = builder.parentUsername;
+
+ childDBType = builder.childDBType;
+ childHostname = builder.childHostname;
+ childPassword = builder.childPassword;
+ childPort = builder.childPort;
+ childRyaInstanceName = builder.childRyaInstanceName;
+ childTablePrefix = builder.childTablePrefix;
+ childTomcatUrl = builder.childTomcatUrl;
+ childUsername = builder.childUsername;
+
+ mergePolicy = builder.mergePolicy;
+
+ useNtpServer = builder.useNtpServer;
+ ntpServerHost = builder.ntpServerHost;
+ }
/**
* @param hostname - the hostname of the parent.
@@ -446,17 +459,6 @@ public class MergeConfiguration {
return this;
}
- /**
- * @param toolStartTime - The time of the data to be included in the
- * copy/merge process.
- * @return the updated {@link Builder}.
- */
- public Builder setToolStartTime(final String toolStartTime) {
- this.toolStartTime = toolStartTime;
- return this;
- }
-
- @Override
public MergeConfiguration build() throws MergeConfigurationException {
return new MergeConfiguration(this);
}
http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/b61920ab/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/conf/MergeConfigurationDecorator.java
----------------------------------------------------------------------
diff --git a/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/conf/MergeConfigurationDecorator.java b/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/conf/MergeConfigurationDecorator.java
new file mode 100644
index 0000000..461d5fb
--- /dev/null
+++ b/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/conf/MergeConfigurationDecorator.java
@@ -0,0 +1,151 @@
+/*
+ * 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.api.conf;
+
+import org.apache.rya.export.DBType;
+import org.apache.rya.export.MergePolicy;
+
+/**
+ * Decorator for {@link MergeConfiguration}.
+ * <p>
+ * The {@link MergeConfiguration} should be decorated when a new datastore
+ * has specific configuration fields or a new statement merge policy
+ * requires configuration.
+ */
+public class MergeConfigurationDecorator extends MergeConfiguration {
+
+ /**
+ * Creates a new {@link MergeConfigurationDecorator}
+ * @param builder - The configuratoin builder.
+ * @throws MergeConfigurationException
+ */
+ public MergeConfigurationDecorator(final MergeConfiguration.Builder builder) throws MergeConfigurationException {
+ super(builder);
+ }
+
+ @Override
+ public int hashCode() {
+ return super.hashCode();
+ }
+
+ @Override
+ public boolean equals(final Object obj) {
+ return super.equals(obj);
+ }
+
+ @Override
+ public String getParentHostname() {
+ return super.getParentHostname();
+ }
+
+ @Override
+ public String getParentUsername() {
+ return super.getParentUsername();
+ }
+
+ @Override
+ public String getParentPassword() {
+ return super.getParentPassword();
+ }
+
+ @Override
+ public String getParentRyaInstanceName() {
+ return super.getParentRyaInstanceName();
+ }
+
+ @Override
+ public String getParentTablePrefix() {
+ return super.getParentTablePrefix();
+ }
+
+ @Override
+ public String getParentTomcatUrl() {
+ return super.getParentTomcatUrl();
+ }
+
+ @Override
+ public DBType getParentDBType() {
+ return super.getParentDBType();
+ }
+
+ @Override
+ public int getParentPort() {
+ return super.getParentPort();
+ }
+
+ @Override
+ public String getChildHostname() {
+ return super.getChildHostname();
+ }
+
+ @Override
+ public String getChildUsername() {
+ return super.getChildUsername();
+ }
+
+ @Override
+ public String getChildPassword() {
+ return super.getChildPassword();
+ }
+
+ @Override
+ public String getChildRyaInstanceName() {
+ return super.getChildRyaInstanceName();
+ }
+
+ @Override
+ public String getChildTablePrefix() {
+ return super.getChildTablePrefix();
+ }
+
+ @Override
+ public String getChildTomcatUrl() {
+ return super.getChildTomcatUrl();
+ }
+
+ @Override
+ public DBType getChildDBType() {
+ return super.getChildDBType();
+ }
+
+ @Override
+ public int getChildPort() {
+ return super.getChildPort();
+ }
+
+ @Override
+ public MergePolicy getMergePolicy() {
+ return super.getMergePolicy();
+ }
+
+ @Override
+ public Boolean getUseNtpServer() {
+ return super.getUseNtpServer();
+ }
+
+ @Override
+ public String getNtpServerHost() {
+ return super.getNtpServerHost();
+ }
+
+ @Override
+ public String toString() {
+ return super.toString();
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/b61920ab/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/conf/MergeConfigurationException.java
----------------------------------------------------------------------
diff --git a/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/conf/MergeConfigurationException.java b/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/conf/MergeConfigurationException.java
index 7e099e1..e7e8e8b 100644
--- a/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/conf/MergeConfigurationException.java
+++ b/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/conf/MergeConfigurationException.java
@@ -24,10 +24,19 @@ package org.apache.rya.export.api.conf;
public class MergeConfigurationException extends Exception {
private static final long serialVersionUID = 1L;
+ /**
+ * Creates a new {@link MergeConfigurationException}
+ * @param message - The error message.
+ */
public MergeConfigurationException(final String message) {
super(message);
}
+ /**
+ * Creates a new {@link MergeConfigurationException}
+ * @param message - The error message.
+ * @param source - The source of the error.
+ */
public MergeConfigurationException(final String message, final Throwable source) {
super(message, source);
}
http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/b61920ab/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/conf/policy/TimestampPolicyConfigurationAdapter.java
----------------------------------------------------------------------
diff --git a/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/conf/policy/TimestampPolicyConfigurationAdapter.java b/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/conf/policy/TimestampPolicyConfigurationAdapter.java
new file mode 100644
index 0000000..c9e21a6
--- /dev/null
+++ b/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/conf/policy/TimestampPolicyConfigurationAdapter.java
@@ -0,0 +1,46 @@
+/*
+ * 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.api.conf.policy;
+
+import org.apache.rya.export.MergeToolConfiguration;
+import org.apache.rya.export.TimestampMergePolicyConfiguration;
+import org.apache.rya.export.api.conf.ConfigurationAdapter;
+import org.apache.rya.export.api.conf.MergeConfiguration;
+import org.apache.rya.export.api.conf.MergeConfigurationException;
+import org.apache.rya.export.api.conf.policy.TimestampPolicyMergeConfiguration.TimestampPolicyBuilder;
+
+/**
+ * Helper for creating the immutable application configuration that uses
+ * Accumulo.
+ */
+public class TimestampPolicyConfigurationAdapter extends ConfigurationAdapter {
+ /**
+ * @param jConfig - The JAXB generated configuration.
+ * @return The {@link MergeConfiguration} used in the application
+ * @throws MergeConfigurationException
+ */
+ @Override
+ public MergeConfiguration createConfig(final MergeToolConfiguration jConfig) throws MergeConfigurationException {
+ final TimestampMergePolicyConfiguration timeConfig = (TimestampMergePolicyConfiguration) jConfig;
+ final MergeConfiguration.Builder configBuilder = super.getBuilder(jConfig);
+ final TimestampPolicyBuilder builder = new TimestampPolicyBuilder(configBuilder);
+ builder.setToolStartTime(timeConfig.getToolStartTime());
+ return builder.build();
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/b61920ab/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/conf/policy/TimestampPolicyMergeConfiguration.java
----------------------------------------------------------------------
diff --git a/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/conf/policy/TimestampPolicyMergeConfiguration.java b/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/conf/policy/TimestampPolicyMergeConfiguration.java
new file mode 100644
index 0000000..91bd4c2
--- /dev/null
+++ b/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/conf/policy/TimestampPolicyMergeConfiguration.java
@@ -0,0 +1,80 @@
+/*
+ * 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.api.conf.policy;
+
+import static java.util.Objects.requireNonNull;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+import org.apache.rya.export.api.conf.MergeConfiguration;
+import org.apache.rya.export.api.conf.MergeConfigurationDecorator;
+import org.apache.rya.export.api.conf.MergeConfigurationException;
+
+/**
+ * Configuration for merging Rya Statements using timestamp.
+ */
+public class TimestampPolicyMergeConfiguration extends MergeConfigurationDecorator {
+ private final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmssSSSz");
+ private final Date toolStartTime;
+
+ /**
+ * Creates a new {@link TimestampPolicyMergeConfiguration}
+ * @param builder - Builder used to create the configuration.
+ * @throws MergeConfigurationException - The provided time is not formatted properly.
+ */
+ public TimestampPolicyMergeConfiguration(final TimestampPolicyBuilder builder) throws MergeConfigurationException {
+ super(builder);
+ requireNonNull(builder.toolStartTime);
+ try {
+ toolStartTime = dateFormat.parse(builder.toolStartTime);
+ } catch (final ParseException e) {
+ throw new MergeConfigurationException("Cannot parse the configured start time.", e);
+ }
+ }
+
+ /**
+ * @return The time of the data to be included in the copy/merge process.
+ */
+ public Date getToolStartTime() {
+ return toolStartTime;
+ }
+
+ /**
+ * Builder to help create {@link MergeConfiguration}s.
+ */
+ public static class TimestampPolicyBuilder extends Builder {
+ private String toolStartTime;
+
+ public TimestampPolicyBuilder(final Builder builder) {
+ super(builder);
+ }
+
+ /**
+ * @param toolStartTime - The time of the data to be included in the
+ * copy/merge process.
+ * @return the updated {@link Builder}.
+ */
+ public Builder setToolStartTime(final String toolStartTime) {
+ this.toolStartTime = toolStartTime;
+ return this;
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/b61920ab/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/conf/policy/TimestampPolicyStatementStore.java
----------------------------------------------------------------------
diff --git a/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/conf/policy/TimestampPolicyStatementStore.java b/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/conf/policy/TimestampPolicyStatementStore.java
new file mode 100644
index 0000000..79ac19d
--- /dev/null
+++ b/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/conf/policy/TimestampPolicyStatementStore.java
@@ -0,0 +1,53 @@
+/*
+ * 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.api.conf.policy;
+
+import static java.util.Objects.requireNonNull;
+
+import java.util.Date;
+import java.util.Iterator;
+
+import org.apache.rya.api.domain.RyaStatement;
+import org.apache.rya.export.api.store.FetchStatementException;
+import org.apache.rya.export.api.store.RyaStatementStore;
+import org.apache.rya.export.api.store.RyaStatementStorePolicy;
+
+/**
+ * Statement Store decorated to fetch statements based on a timestamp.
+ */
+public abstract class TimestampPolicyStatementStore extends RyaStatementStorePolicy {
+ protected final Date timestamp;
+
+ /**
+ * Creates a new {@link TimestampPolicyStatementStore}
+ * @param store - The {@link RyaStatementStore} to decorate
+ * @param timestamp - The timestamp to fetch statements based on.
+ */
+ public TimestampPolicyStatementStore(final RyaStatementStore store, final Date timestamp) {
+ super(store);
+ this.timestamp = requireNonNull(timestamp);
+ }
+
+ /**
+ * The statements fetched will have been inserted into the statement store after
+ * the specified timestamp.
+ */
+ @Override
+ public abstract Iterator<RyaStatement> fetchStatements() throws FetchStatementException;
+}
http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/b61920ab/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/metadata/MergeParentMetadata.java
----------------------------------------------------------------------
diff --git a/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/metadata/MergeParentMetadata.java b/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/metadata/MergeParentMetadata.java
new file mode 100644
index 0000000..262007e
--- /dev/null
+++ b/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/metadata/MergeParentMetadata.java
@@ -0,0 +1,137 @@
+/*
+ * 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.api.metadata;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+
+import java.util.Date;
+
+import org.apache.commons.lang.builder.EqualsBuilder;
+import org.apache.commons.lang.builder.HashCodeBuilder;
+
+/**
+ * The parent database identifying information. Use the {@link ParentMetadataRepository}
+ * to retrieve this information
+ */
+public class MergeParentMetadata {
+ private final String ryaInstanceName;
+ private final Date timestamp;
+ private final Date filterTimestamp;
+ private final Long parentTimeOffset;
+
+ /**
+ * Creates a new {@link MergeParentMetadata}.
+ * @param ryaInstanceName - The Rya Instance Name of the parent database.
+ * @param timestamp - The timestamp of when the copy tool ran.
+ * @param filterTimestamp - The timestamp used by the copy tool to filter
+ * which data was included when copying.
+ * @param parentTimeOffset - The parent time offset metadata key for the
+ * table.
+ */
+ public MergeParentMetadata(final String ryaInstanceName, final Date timestamp, final Date filterTimestamp, final Long parentTimeOffset) {
+ this.ryaInstanceName = checkNotNull(ryaInstanceName);
+ this.timestamp = checkNotNull(timestamp);
+ this.filterTimestamp = filterTimestamp;
+ this.parentTimeOffset = checkNotNull(parentTimeOffset);
+ }
+
+ /**
+ * @return - The Rya Instance Name of the parent database.
+ */
+ public String getRyaInstanceName() {
+ return ryaInstanceName;
+ }
+
+ /**
+ * @return - The timestamp of when the copy tool ran.
+ */
+ public Date getTimestamp() {
+ return timestamp;
+ }
+
+ /**
+ * @return - The timestamp used by the copy tool to filter which data was
+ * included when copying.
+ */
+ public Date getFilterTimestamp() {
+ return filterTimestamp;
+ }
+
+ /**
+ * @return - The parent time offset metadata key for the table.
+ */
+ public Long getParentTimeOffset() {
+ return parentTimeOffset;
+ }
+
+ @Override
+ public boolean equals(final Object obj) {
+ if(!(obj instanceof MergeParentMetadata)) {
+ return false;
+ }
+ final MergeParentMetadata other = (MergeParentMetadata) obj;
+ final EqualsBuilder builder = new EqualsBuilder()
+ .append(getRyaInstanceName(), other.getRyaInstanceName())
+ .append(getTimestamp(), other.getTimestamp())
+ .append(getFilterTimestamp(), other.getFilterTimestamp())
+ .append(getParentTimeOffset(), other.getParentTimeOffset());
+ return builder.isEquals();
+ }
+
+ @Override
+ public int hashCode() {
+ final HashCodeBuilder builder = new HashCodeBuilder()
+ .append(getRyaInstanceName())
+ .append(getTimestamp())
+ .append(getFilterTimestamp())
+ .append(getParentTimeOffset());
+ return builder.toHashCode();
+ }
+
+ public static class Builder {
+ private String name;
+ private Date timestamp;
+ private Date filterTimestamp;
+ private Long parentTimeOffset;
+
+ public Builder setRyaInstanceName(final String name) {
+ this.name = checkNotNull(name);
+ return this;
+ }
+
+ public Builder setTimestamp(final Date timestamp) {
+ this.timestamp = checkNotNull(timestamp);
+ return this;
+ }
+
+ public Builder setFilterTimestmap(final Date filterTimestamp) {
+ this.filterTimestamp = checkNotNull(filterTimestamp);
+ return this;
+ }
+
+ public Builder setParentTimeOffset(final Long parentTimeOffset) {
+ this.parentTimeOffset = parentTimeOffset;
+ return this;
+ }
+
+ public MergeParentMetadata build() {
+ return new MergeParentMetadata(name, timestamp, filterTimestamp, parentTimeOffset);
+ }
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/b61920ab/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/metadata/ParentMetadataDoesNotExistException.java
----------------------------------------------------------------------
diff --git a/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/metadata/ParentMetadataDoesNotExistException.java b/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/metadata/ParentMetadataDoesNotExistException.java
new file mode 100644
index 0000000..0c5ffdd
--- /dev/null
+++ b/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/metadata/ParentMetadataDoesNotExistException.java
@@ -0,0 +1,44 @@
+/*
+ * 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.api.metadata;
+
+/**
+ * Thrown when the {@link ParentMetadataRepository} attempts to fetch
+ * the {@link MergeParentMetadata} and it does not exist.
+ */
+public class ParentMetadataDoesNotExistException extends ParentMetadataException {
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * Creates a new {@link ParentMetadataDoesNotExistException}
+ * @param message - The error message.
+ */
+ public ParentMetadataDoesNotExistException(final String message) {
+ super(message);
+ }
+
+ /**
+ * Creates a new {@link ParentMetadataDoesNotExistException}
+ * @param message - The error message.
+ * @param cause - The source of the error.
+ */
+ public ParentMetadataDoesNotExistException(final String message, final Throwable cause) {
+ super(message, cause);
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/b61920ab/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/metadata/ParentMetadataException.java
----------------------------------------------------------------------
diff --git a/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/metadata/ParentMetadataException.java b/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/metadata/ParentMetadataException.java
new file mode 100644
index 0000000..1d0de08
--- /dev/null
+++ b/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/metadata/ParentMetadataException.java
@@ -0,0 +1,44 @@
+/*
+ * 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.api.metadata;
+
+/**
+ * Thrown when the {@link ParentMetadataRepository} attempts to fetch
+ * the {@link MergeParentMetadata} and it does not exist.
+ */
+class ParentMetadataException extends Exception {
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * Creates a new {@link ParentMetadataException}
+ * @param message - The error message.
+ */
+ public ParentMetadataException(final String message) {
+ super(message);
+ }
+
+ /**
+ * Creates a new {@link ParentMetadataException}
+ * @param message - The error message.
+ * @param cause - The cause of the error.
+ */
+ public ParentMetadataException(final String message, final Throwable cause) {
+ super(message, cause);
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/b61920ab/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/metadata/ParentMetadataExistsException.java
----------------------------------------------------------------------
diff --git a/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/metadata/ParentMetadataExistsException.java b/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/metadata/ParentMetadataExistsException.java
new file mode 100644
index 0000000..3dba0f4
--- /dev/null
+++ b/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/metadata/ParentMetadataExistsException.java
@@ -0,0 +1,44 @@
+/*
+ * 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.api.metadata;
+
+/**
+ * Thrown when the {@link ParentMetadataRepository} attempts to set the
+ * {@link MergeParentMetadata} and it already exists.
+ */
+public class ParentMetadataExistsException extends ParentMetadataException {
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * Creates a new {@link ParentMetadataExistsException}
+ * @param message - The error message.
+ */
+ public ParentMetadataExistsException(final String message) {
+ super(message);
+ }
+
+ /**
+ * Creates a new {@link ParentMetadataExistsException}
+ * @param message - The error message.
+ * @apram cause - The source of the error.
+ */
+ public ParentMetadataExistsException(final String message, final Throwable cause) {
+ super(message, cause);
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/b61920ab/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/metadata/ParentMetadataRepository.java
----------------------------------------------------------------------
diff --git a/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/metadata/ParentMetadataRepository.java b/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/metadata/ParentMetadataRepository.java
new file mode 100644
index 0000000..fc0f4db
--- /dev/null
+++ b/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/metadata/ParentMetadataRepository.java
@@ -0,0 +1,43 @@
+/*
+ * 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.api.metadata;
+
+/**
+ * Repository for metadata pertaining to the parent database. This will contain
+ * all information to identify where any data was exported from.
+ * <p>
+ * The data found here is:
+ * <li>Parent database Rya Instance Name</li>
+ * <li>Timestamp used as the lower cutoff for the export</li>
+ */
+public interface ParentMetadataRepository {
+ /**
+ * @return The metadata for identifying the parent.
+ * @throws ParentMetadataDoesNotExistException - The {@link MergeParentMetadata}
+ * has not been set.
+ */
+ public MergeParentMetadata get() throws ParentMetadataDoesNotExistException;
+
+ /**
+ * @param metadata - The identifying metadata for the parent.
+ * @throws ParentMetadataExistsException - The {@link MergeParentMetadata} has
+ * already been set.
+ */
+ public void set(MergeParentMetadata metadata) throws ParentMetadataExistsException;
+}
http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/b61920ab/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/parent/MergeParentMetadata.java
----------------------------------------------------------------------
diff --git a/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/parent/MergeParentMetadata.java b/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/parent/MergeParentMetadata.java
deleted file mode 100644
index 2401adf..0000000
--- a/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/parent/MergeParentMetadata.java
+++ /dev/null
@@ -1,137 +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.api.parent;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import java.util.Date;
-
-import org.apache.commons.lang.builder.EqualsBuilder;
-import org.apache.commons.lang.builder.HashCodeBuilder;
-
-/**
- * The parent database identifying information. Use the {@link ParentMetadataRepository}
- * to retrieve this information
- */
-public class MergeParentMetadata {
- private final String ryaInstanceName;
- private final Date timestamp;
- private final Date filterTimestamp;
- private final Long parentTimeOffset;
-
- /**
- * Creates a new {@link MergeParentMetadata}.
- * @param ryaInstanceName - The Rya Instance Name of the parent database.
- * @param timestamp - The timestamp of when the copy tool ran.
- * @param filterTimestamp - The timestamp used by the copy tool to filter
- * which data was included when copying.
- * @param parentTimeOffset - The parent time offset metadata key for the
- * table.
- */
- public MergeParentMetadata(final String ryaInstanceName, final Date timestamp, final Date filterTimestamp, final Long parentTimeOffset) {
- this.ryaInstanceName = checkNotNull(ryaInstanceName);
- this.timestamp = checkNotNull(timestamp);
- this.filterTimestamp = filterTimestamp;
- this.parentTimeOffset = checkNotNull(parentTimeOffset);
- }
-
- /**
- * @return - The Rya Instance Name of the parent database.
- */
- public String getRyaInstanceName() {
- return ryaInstanceName;
- }
-
- /**
- * @return - The timestamp of when the copy tool ran.
- */
- public Date getTimestamp() {
- return timestamp;
- }
-
- /**
- * @return - The timestamp used by the copy tool to filter which data was
- * included when copying.
- */
- public Date getFilterTimestamp() {
- return filterTimestamp;
- }
-
- /**
- * @return - The parent time offset metadata key for the table.
- */
- public Long getParentTimeOffset() {
- return parentTimeOffset;
- }
-
- @Override
- public boolean equals(final Object obj) {
- if(!(obj instanceof MergeParentMetadata)) {
- return false;
- }
- final MergeParentMetadata other = (MergeParentMetadata) obj;
- final EqualsBuilder builder = new EqualsBuilder()
- .append(getRyaInstanceName(), other.getRyaInstanceName())
- .append(getTimestamp(), other.getTimestamp())
- .append(getFilterTimestamp(), other.getFilterTimestamp())
- .append(getParentTimeOffset(), other.getParentTimeOffset());
- return builder.isEquals();
- }
-
- @Override
- public int hashCode() {
- final HashCodeBuilder builder = new HashCodeBuilder()
- .append(getRyaInstanceName())
- .append(getTimestamp())
- .append(getFilterTimestamp())
- .append(getParentTimeOffset());
- return builder.toHashCode();
- }
-
- public static class Builder {
- private String name;
- private Date timestamp;
- private Date filterTimestamp;
- private Long parentTimeOffset;
-
- public Builder setRyaInstanceName(final String name) {
- this.name = checkNotNull(name);
- return this;
- }
-
- public Builder setTimestamp(final Date timestamp) {
- this.timestamp = checkNotNull(timestamp);
- return this;
- }
-
- public Builder setFilterTimestmap(final Date filterTimestamp) {
- this.filterTimestamp = checkNotNull(filterTimestamp);
- return this;
- }
-
- public Builder setParentTimeOffset(final Long parentTimeOffset) {
- this.parentTimeOffset = parentTimeOffset;
- return this;
- }
-
- public MergeParentMetadata build() {
- return new MergeParentMetadata(name, timestamp, filterTimestamp, parentTimeOffset);
- }
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/b61920ab/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/parent/ParentMetadataDoesNotExistException.java
----------------------------------------------------------------------
diff --git a/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/parent/ParentMetadataDoesNotExistException.java b/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/parent/ParentMetadataDoesNotExistException.java
deleted file mode 100644
index f6f691c..0000000
--- a/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/parent/ParentMetadataDoesNotExistException.java
+++ /dev/null
@@ -1,35 +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.api.parent;
-
-/**
- * Thrown when the {@link ParentMetadataRepository} attempts to fetch
- * the {@link MergeParentMetadata} and it does not exist. /
- */
-public class ParentMetadataDoesNotExistException extends ParentMetadataException {
- private static final long serialVersionUID = 1L;
-
- public ParentMetadataDoesNotExistException(final String message) {
- super(message);
- }
-
- public ParentMetadataDoesNotExistException(final String message, final Throwable cause) {
- super(message, cause);
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/b61920ab/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/parent/ParentMetadataException.java
----------------------------------------------------------------------
diff --git a/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/parent/ParentMetadataException.java b/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/parent/ParentMetadataException.java
deleted file mode 100644
index e3645b7..0000000
--- a/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/parent/ParentMetadataException.java
+++ /dev/null
@@ -1,35 +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.api.parent;
-
-/**
- * Thrown when the {@link ParentMetadataRepository} attempts to fetch
- * the {@link MergeParentMetadata} and it does not exist.
- */
-class ParentMetadataException extends Exception {
- private static final long serialVersionUID = 1L;
-
- public ParentMetadataException(final String message) {
- super(message);
- }
-
- public ParentMetadataException(final String message, final Throwable cause) {
- super(message, cause);
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/b61920ab/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/parent/ParentMetadataExistsException.java
----------------------------------------------------------------------
diff --git a/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/parent/ParentMetadataExistsException.java b/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/parent/ParentMetadataExistsException.java
deleted file mode 100644
index 6ff63dc..0000000
--- a/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/parent/ParentMetadataExistsException.java
+++ /dev/null
@@ -1,35 +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.api.parent;
-
-/**
- * Thrown when the {@link ParentMetadataRepository} attempts to set the
- * {@link MergeParentMetadata} and it already exists.
- */
-public class ParentMetadataExistsException extends ParentMetadataException {
- private static final long serialVersionUID = 1L;
-
- public ParentMetadataExistsException(final String message) {
- super(message);
- }
-
- public ParentMetadataExistsException(final String message, final Throwable cause) {
- super(message, cause);
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/b61920ab/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/parent/ParentMetadataRepository.java
----------------------------------------------------------------------
diff --git a/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/parent/ParentMetadataRepository.java b/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/parent/ParentMetadataRepository.java
deleted file mode 100644
index c5ab665..0000000
--- a/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/parent/ParentMetadataRepository.java
+++ /dev/null
@@ -1,43 +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.api.parent;
-
-/**
- * Repository for metadata pertaining to the parent database. This will contain
- * all information to identify where any data was exported from.
- * <p>
- * The data found here is:
- * <li>Parent database Rya Instance Name</li>
- * <li>Timestamp used as the lower cutoff for the export</li>
- */
-public interface ParentMetadataRepository {
- /**
- * @return The metadata for identifying the parent.
- * @throws ParentMetadataDoesNotExistException - The {@link MergeParentMetadata}
- * has not been set.
- */
- public MergeParentMetadata get() throws ParentMetadataDoesNotExistException;
-
- /**
- * @param metadata - The identifying metadata for the parent.
- * @throws ParentMetadataExistsException - The {@link MergeParentMetadata} has
- * already been set.
- */
- public void set(MergeParentMetadata metadata) throws ParentMetadataExistsException;
-}
http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/b61920ab/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/store/AddStatementException.java
----------------------------------------------------------------------
diff --git a/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/store/AddStatementException.java b/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/store/AddStatementException.java
index 48cf7d4..44380a2 100644
--- a/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/store/AddStatementException.java
+++ b/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/store/AddStatementException.java
@@ -18,7 +18,7 @@
*/
package org.apache.rya.export.api.store;
-import mvm.rya.api.domain.RyaStatement;
+import org.apache.rya.api.domain.RyaStatement;
/**
* Exception thrown when failing to add a {@link RyaStatement} to a
http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/b61920ab/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/store/ContainsStatementException.java
----------------------------------------------------------------------
diff --git a/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/store/ContainsStatementException.java b/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/store/ContainsStatementException.java
index c091e90..bd4a80b 100644
--- a/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/store/ContainsStatementException.java
+++ b/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/store/ContainsStatementException.java
@@ -18,7 +18,7 @@
*/
package org.apache.rya.export.api.store;
-import mvm.rya.api.domain.RyaStatement;
+import org.apache.rya.api.domain.RyaStatement;
/**
* Exception thrown when failing to check a {@link RyaStatementStore} for a
http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/b61920ab/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/store/FetchStatementException.java
----------------------------------------------------------------------
diff --git a/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/store/FetchStatementException.java b/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/store/FetchStatementException.java
index fe06d58..0375ecb 100644
--- a/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/store/FetchStatementException.java
+++ b/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/store/FetchStatementException.java
@@ -18,7 +18,7 @@
*/
package org.apache.rya.export.api.store;
-import mvm.rya.api.domain.RyaStatement;
+import org.apache.rya.api.domain.RyaStatement;
/**
* Exception thrown when failing to fetch a {@link RyaStatement} from a
http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/b61920ab/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/store/RemoveStatementException.java
----------------------------------------------------------------------
diff --git a/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/store/RemoveStatementException.java b/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/store/RemoveStatementException.java
index 7d45348..a0385f9 100644
--- a/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/store/RemoveStatementException.java
+++ b/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/store/RemoveStatementException.java
@@ -18,7 +18,7 @@
*/
package org.apache.rya.export.api.store;
-import mvm.rya.api.domain.RyaStatement;
+import org.apache.rya.api.domain.RyaStatement;
/**
* Exception thrown when failing to remove a {@link RyaStatement} from a
http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/b61920ab/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/store/RyaStatementStore.java
----------------------------------------------------------------------
diff --git a/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/store/RyaStatementStore.java b/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/store/RyaStatementStore.java
index 3f4e6fb..68998da 100644
--- a/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/store/RyaStatementStore.java
+++ b/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/store/RyaStatementStore.java
@@ -19,8 +19,11 @@
package org.apache.rya.export.api.store;
import java.util.Iterator;
+import java.util.Optional;
-import mvm.rya.api.domain.RyaStatement;
+import org.apache.rya.api.domain.RyaStatement;
+import org.apache.rya.export.api.metadata.MergeParentMetadata;
+import org.apache.rya.export.api.metadata.ParentMetadataExistsException;
/**
* Allows specific CRUD operations on {@link RyaStatement} storage systems.
@@ -35,6 +38,7 @@ import mvm.rya.api.domain.RyaStatement;
* some storage system that is used when merging in data or exporting data.
*/
public interface RyaStatementStore {
+
/**
* @return an {@link Iterator} containing all {@link RyaStatement}s found
* in this {@link RyaStatementStore}. The statements will be sorted by
@@ -71,4 +75,16 @@ public interface RyaStatementStore {
* @throws ContainsStatementException - Thrown when an exception occurs trying to check for the statement.
*/
public boolean containsStatement(final RyaStatement ryaStatement) throws ContainsStatementException;
+
+ /**
+ * @return - The {@link MergeParentMetadata}, if it exists, of this Statement Store.
+ */
+ public Optional<MergeParentMetadata> getParentMetadata();
+
+ /**
+ * Sets the {@link MergeParentMetadata} for this rya statement store.
+ * The metadata points to the parent rya store
+ * @throws ParentMetadataExistsException
+ */
+ public void setParentMetadata(MergeParentMetadata metadata) throws ParentMetadataExistsException;
}
http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/b61920ab/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/store/RyaStatementStoreDecorator.java
----------------------------------------------------------------------
diff --git a/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/store/RyaStatementStoreDecorator.java b/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/store/RyaStatementStoreDecorator.java
deleted file mode 100644
index 3a5794b..0000000
--- a/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/store/RyaStatementStoreDecorator.java
+++ /dev/null
@@ -1,67 +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.api.store;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import java.util.Iterator;
-
-import mvm.rya.api.domain.RyaStatement;
-
-/**
- * Decorates a {@link RyaStatementStore}. This is to be used when the default
- * actions for {@link RyaStatement}s in the {@link RyaStatementStore} need to
- * do something more specific.
- */
-public abstract class RyaStatementStoreDecorator implements RyaStatementStore {
- final RyaStatementStore store;
-
- /**
- * Creates a new {@link RyaStatementStoreDecorator} around the provided {@link RyaStatementStore}.
- * @param store - The {@link RyaStatementStore} to decorate.
- */
- public RyaStatementStoreDecorator(final RyaStatementStore store) {
- this.store = checkNotNull(store);
- }
-
- @Override
- public Iterator<RyaStatement> fetchStatements() throws FetchStatementException {
- return store.fetchStatements();
- }
-
- @Override
- public void addStatement(final RyaStatement statement) throws AddStatementException {
- store.addStatement(statement);
- }
-
- @Override
- public void removeStatement(final RyaStatement statement) throws RemoveStatementException {
- store.removeStatement(statement);
- }
-
- @Override
- public void updateStatement(final RyaStatement original, final RyaStatement update) throws UpdateStatementException {
- store.updateStatement(original, update);
- }
-
- @Override
- public boolean containsStatement(final RyaStatement statement) throws ContainsStatementException {
- return store.containsStatement(statement);
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/b61920ab/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/store/RyaStatementStorePolicy.java
----------------------------------------------------------------------
diff --git a/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/store/RyaStatementStorePolicy.java b/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/store/RyaStatementStorePolicy.java
new file mode 100644
index 0000000..d7d2a4d
--- /dev/null
+++ b/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/store/RyaStatementStorePolicy.java
@@ -0,0 +1,80 @@
+/*
+ * 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.api.store;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+
+import java.util.Iterator;
+import java.util.Optional;
+
+import org.apache.rya.api.domain.RyaStatement;
+import org.apache.rya.export.api.metadata.MergeParentMetadata;
+import org.apache.rya.export.api.metadata.ParentMetadataExistsException;
+
+/**
+ * Decorates a {@link RyaStatementStore}. This is to be used when the default
+ * actions for {@link RyaStatement}s in the {@link RyaStatementStore} need to
+ * do something more specific.
+ */
+public abstract class RyaStatementStorePolicy implements RyaStatementStore {
+ protected final RyaStatementStore store;
+
+ /**
+ * Creates a new {@link RyaStatementStorePolicy} around the provided {@link RyaStatementStore}.
+ * @param store - The {@link RyaStatementStore} to decorate.
+ */
+ public RyaStatementStorePolicy(final RyaStatementStore store) {
+ this.store = checkNotNull(store);
+ }
+
+ @Override
+ public Iterator<RyaStatement> fetchStatements() throws FetchStatementException {
+ return store.fetchStatements();
+ }
+
+ @Override
+ public void addStatement(final RyaStatement statement) throws AddStatementException {
+ store.addStatement(statement);
+ }
+
+ @Override
+ public void removeStatement(final RyaStatement statement) throws RemoveStatementException {
+ store.removeStatement(statement);
+ }
+
+ @Override
+ public void updateStatement(final RyaStatement original, final RyaStatement update) throws UpdateStatementException {
+ store.updateStatement(original, update);
+ }
+
+ @Override
+ public boolean containsStatement(final RyaStatement statement) throws ContainsStatementException {
+ return store.containsStatement(statement);
+ }
+
+ @Override
+ public Optional<MergeParentMetadata> getParentMetadata() {
+ return store.getParentMetadata();
+ }
+
+ @Override
+ public void setParentMetadata(final MergeParentMetadata metadata) throws ParentMetadataExistsException {
+ store.setParentMetadata(metadata);
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/b61920ab/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/store/UpdateStatementException.java
----------------------------------------------------------------------
diff --git a/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/store/UpdateStatementException.java b/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/store/UpdateStatementException.java
index 26f776b..08bf570 100644
--- a/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/store/UpdateStatementException.java
+++ b/extras/rya.export/export.api/src/main/java/org/apache/rya/export/api/store/UpdateStatementException.java
@@ -18,7 +18,7 @@
*/
package org.apache.rya.export.api.store;
-import mvm.rya.api.domain.RyaStatement;
+import org.apache.rya.api.domain.RyaStatement;
/**
* Exception thrown when failing to update a {@link RyaStatement} in a
@@ -43,5 +43,4 @@ public class UpdateStatementException extends StatementStoreException {
public UpdateStatementException(final String message, final Throwable cause) {
super(message, cause);
}
-
}
http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/b61920ab/extras/rya.export/export.api/src/main/xsd/MergeConfiguration.xsd
----------------------------------------------------------------------
diff --git a/extras/rya.export/export.api/src/main/xsd/MergeConfiguration.xsd b/extras/rya.export/export.api/src/main/xsd/MergeConfiguration.xsd
index 036b067..7b84baf 100644
--- a/extras/rya.export/export.api/src/main/xsd/MergeConfiguration.xsd
+++ b/extras/rya.export/export.api/src/main/xsd/MergeConfiguration.xsd
@@ -17,64 +17,73 @@ KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
-<schema xmlns="http://www.w3.org/2001/XMLSchema"
- xmlns:xs="http://www.w3.org/2001/XMLSchema"
- xmlns:mc="http://mergeconfig"
- targetNamespace="http://mergeconfig"
- elementFormDefault="qualified">
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
+ jaxb:version="2.0"
+ xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
+ jaxb:extensionBindingPrefixes="xjc"
+ xmlns:mc="http://mergeconfig"
+ targetNamespace="http://mergeconfig">
+ <xsd:annotation>
+ <xsd:appinfo>
+ <jaxb:globalBindings>
+ <xjc:simple />
+ </jaxb:globalBindings>
+ </xsd:appinfo>
+ </xsd:annotation>
+ <xsd:element name="MergeToolConfiguration" type="mc:MergeToolConfiguration"/>
- <xs:element name="configuration" type="mc:JAXBMergeConfiguration"/>
+ <xsd:complexType name="MergeToolConfiguration">
+ <xsd:sequence>
+ <xsd:element name="parentHostname" type="xsd:string"/>
+ <xsd:element name="parentUsername" type="xsd:string" minOccurs="0"/>
+ <xsd:element name="parentPassword" type="xsd:string" minOccurs="0"/>
+ <xsd:element name="parentRyaInstanceName" type="xsd:string"/>
+ <xsd:element name="parentTablePrefix" type="xsd:string"/>
+ <xsd:element name="parentTomcatUrl" type="xsd:string"/>
+ <xsd:element name="parentDBType" type="mc:DBType"/>
+ <xsd:element name="parentPort" type="mc:Port"/>
- <xs:complexType name="JAXBMergeConfiguration">
- <xs:sequence>
- <xs:element name="parentHostname" type="xs:string"/>
- <xs:element name="parentUsername" type="xs:string"/>
- <xs:element name="parentPassword" type="xs:string"/>
- <xs:element name="parentRyaInstanceName" type="xs:string"/>
- <xs:element name="parentTablePrefix" type="xs:string"/>
- <xs:element name="parentTomcatUrl" type="xs:string"/>
- <xs:element name="parentDBType" type="mc:DBType"/>
- <xs:element name="parentPort" type="mc:Port"/>
+ <xsd:element name="childHostname" type="xsd:string"/>
+ <xsd:element name="childUsername" type="xsd:string" minOccurs="0"/>
+ <xsd:element name="childPassword" type="xsd:string" minOccurs="0"/>
+ <xsd:element name="childRyaInstanceName" type="xsd:string"/>
+ <xsd:element name="childTablePrefix" type="xsd:string"/>
+ <xsd:element name="childTomcatUrl" type="xsd:string"/>
+ <xsd:element name="childDBType" type="mc:DBType"/>
+ <xsd:element name="childPort" type="mc:Port"/>
- <xs:element name="childHostname" type="xs:string"/>
- <xs:element name="childUsername" type="xs:string"/>
- <xs:element name="childPassword" type="xs:string"/>
- <xs:element name="childRyaInstanceName" type="xs:string"/>
- <xs:element name="childTablePrefix" type="xs:string"/>
- <xs:element name="childTomcatUrl" type="xs:string"/>
- <xs:element name="childDBType" type="mc:DBType"/>
- <xs:element name="childPort" type="mc:Port"/>
+ <xsd:element name="mergePolicy" type="mc:MergePolicy"/>
- <xs:element name="mergePolicy" type="mc:MergePolicy"/>
+ <xsd:element name="useNtpServer" type="xsd:boolean"/>
+ <xsd:element name="ntpServerHost" type="xsd:string" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:complexType>
- <xs:element name="useNtpServer" type="xs:boolean"/>
- <xs:element name="ntpServerHost" type="xs:string"/>
- <xs:element name="toolStartTime" type="xs:string"/>
- </xs:sequence>
- </xs:complexType>
-
- <xs:simpleType name="MergePolicy">
- <xs:restriction base="xs:string">
- <xs:enumeration value="timestamp"/>
- </xs:restriction>
- </xs:simpleType>
+ <xsd:simpleType name="MergePolicy">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="timestamp"/>
+ <xsd:enumeration value="query"/>
+ </xsd:restriction>
+ </xsd:simpleType>
- <xs:simpleType name="DBType">
- <xs:restriction base="xs:string">
- <xs:enumeration value="accumulo"/>
- <xs:enumeration value="mongo"/>
- </xs:restriction>
- </xs:simpleType>
+ <xsd:simpleType name="DBType">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="accumulo"/>
+ <xsd:enumeration value="mongo"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="Port">
+ <xsd:annotation>
+ <xsd:documentation>
+ Port number in the range [1, 65536).
+ </xsd:documentation>
+ </xsd:annotation>
- <xs:simpleType name="Port">
- <xs:annotation>
- <xs:documentation>
- Port number in the range [1, 65536].
- </xs:documentation>
- </xs:annotation>
-
- <xs:restriction base="xs:unsignedShort">
- <xs:minInclusive value="1"/>
- </xs:restriction>
- </xs:simpleType>
-</schema>
\ No newline at end of file
+ <xsd:restriction base="xsd:unsignedShort">
+ <xsd:minInclusive value="1"/>
+ <xsd:maxInclusive value="65535"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+</xsd:schema>
\ No newline at end of file