You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@rya.apache.org by mi...@apache.org on 2016/10/15 20:06:48 UTC
[28/69] [abbrv] [partial] incubator-rya git commit: RYA-198 Renaming
Files
http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/44a2dcf0/extras/indexing/src/main/java/mvm/rya/accumulo/pcj/iterators/PCJKeyToCrossProductBindingSetIterator.java
----------------------------------------------------------------------
diff --git a/extras/indexing/src/main/java/mvm/rya/accumulo/pcj/iterators/PCJKeyToCrossProductBindingSetIterator.java b/extras/indexing/src/main/java/mvm/rya/accumulo/pcj/iterators/PCJKeyToCrossProductBindingSetIterator.java
deleted file mode 100644
index 0c7369c..0000000
--- a/extras/indexing/src/main/java/mvm/rya/accumulo/pcj/iterators/PCJKeyToCrossProductBindingSetIterator.java
+++ /dev/null
@@ -1,267 +0,0 @@
-package mvm.rya.accumulo.pcj.iterators;
-
-/*
- * 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.
- */
-
-import info.aduna.iteration.CloseableIteration;
-
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.NoSuchElementException;
-import java.util.Set;
-
-import mvm.rya.indexing.external.tupleSet.ExternalTupleSet;
-
-import org.apache.accumulo.core.client.Scanner;
-import org.apache.accumulo.core.data.Key;
-import org.apache.rya.indexing.pcj.storage.accumulo.AccumuloPcjSerializer;
-import org.apache.rya.indexing.pcj.storage.accumulo.BindingSetConverter.BindingSetConversionException;
-import org.apache.rya.indexing.pcj.storage.accumulo.VariableOrder;
-import org.openrdf.model.Value;
-import org.openrdf.query.BindingSet;
-import org.openrdf.query.QueryEvaluationException;
-import org.openrdf.query.algebra.evaluation.QueryBindingSet;
-
-import com.google.common.collect.HashBiMap;
-
-/**
- * This class takes in a {@link Scanner} and a Collection of BindingSets,
- * deserializes each {@link Map.Entry<Key,Value>} taken from the Scanner into
- * a {@link BindingSet}, and performs a cross product on the BindingSet with
- * each BindingSet in the provided Collection. The user can also specify a
- * {@link Map<String, Value>} of constant constraints that can be used to filter.
- *
- */
-public class PCJKeyToCrossProductBindingSetIterator implements
- CloseableIteration<BindingSet, QueryEvaluationException> {
-
- //BindingSets passed to PCJ used to form cross product
- private List<BindingSet> crossProductBs;
- //Scanner over PCJ table
- private Scanner scanner;
- //Iterator over PCJ scanner
- private Iterator<Map.Entry<Key, org.apache.accumulo.core.data.Value>> iterator;
- //Map of PCJ variables in table to variable in query
- private Map<String, String> pcjVarMap;
- //if PCJ contains LeftJoin, this is a set of variables that only appear in
- //LeftJoin. Used when performing the cross product.
- private Set<String> unAssuredVariables;
- private final AccumuloPcjSerializer converter = new AccumuloPcjSerializer();
- private final BindingSet EMPTY_BINDINGSET = new QueryBindingSet();
- private Iterator<BindingSet> crossProductIter = Collections.emptyIterator();
- private Map<String, Value> constantConstraints;
- private BindingSet next;
- private boolean hasNextCalled = false;
- private boolean isEmpty = false;
- private boolean crossProductBsExist = false;
- private boolean constantConstraintsExist = false;
-
- public PCJKeyToCrossProductBindingSetIterator(Scanner scanner,
- List<BindingSet> crossProductBs,
- Map<String, Value> constantConstraints, Set<String> unAssuredVariables,
- Map<String, String> pcjVarMap) {
- this.crossProductBs = crossProductBs;
- this.scanner = scanner;
- this.iterator = scanner.iterator();
- this.pcjVarMap = HashBiMap.create(pcjVarMap).inverse();
- this.constantConstraints = constantConstraints;
- this.crossProductBsExist = crossProductBs.size() > 0;
- this.constantConstraintsExist = constantConstraints.size() > 0;
- this.unAssuredVariables = unAssuredVariables;
- }
-
- @Override
- public boolean hasNext() throws QueryEvaluationException {
- if (!hasNextCalled && !isEmpty) {
- if (crossProductBsExist) {
- while (crossProductIter.hasNext() || iterator.hasNext()) {
- if (!crossProductIter.hasNext()) {
- Key key = iterator.next().getKey();
- try {
- crossProductIter = getCrossProducts(getBindingSet(key));
- } catch (BindingSetConversionException e) {
- throw new QueryEvaluationException(e);
- }
- }
- if (!crossProductIter.hasNext()) {
- continue;
- }
- next = crossProductIter.next();
- hasNextCalled = true;
- return true;
- }
- } else {
- while (iterator.hasNext()) {
- Key key = iterator.next().getKey();
- try {
- next = getBindingSet(key);
- } catch (BindingSetConversionException e) {
- throw new QueryEvaluationException(e);
- }
- //BindingSet cannot be deserialized or is filtered
- //out by constant constraints
- if (next == null || next == EMPTY_BINDINGSET) {
- continue;
- }
- hasNextCalled = true;
- return true;
- }
- }
- isEmpty = true;
- return false;
- } else if (isEmpty) {
- return false;
- } else {
- return true;
- }
- }
-
- @Override
- public BindingSet next() throws QueryEvaluationException {
- if (hasNextCalled) {
- hasNextCalled = false;
- } else if (isEmpty) {
- throw new NoSuchElementException();
- } else {
- if (this.hasNext()) {
- hasNextCalled = false;
- } else {
- throw new NoSuchElementException();
- }
- }
- return next;
- }
-
- @Override
- public void remove() throws QueryEvaluationException {
- throw new UnsupportedOperationException();
- }
-
- @Override
- public void close() throws QueryEvaluationException {
- scanner.close();
- }
-
- /**
- *
- * @param key
- * - Accumulo key obtained from scan
- * @return - BindingSet satisfying any specified constant constraints
- * @throws BindingSetConversionException
- * @throws QueryEvaluationException
- */
- private BindingSet getBindingSet(Key key)
- throws BindingSetConversionException, QueryEvaluationException {
- byte[] row = key.getRow().getBytes();
- String[] varOrder = key.getColumnFamily().toString()
- .split(ExternalTupleSet.VAR_ORDER_DELIM);
-
- BindingSet bindingSet = converter.convert(row, new VariableOrder(
- varOrder));
-
- QueryBindingSet bs = new QueryBindingSet();
- for (String var : bindingSet.getBindingNames()) {
- String mappedVar = null;
- if(pcjVarMap.containsKey(var)) {
- mappedVar = pcjVarMap.get(var);
- } else {
- throw new QueryEvaluationException("PCJ Variable has no mapping to query variable.");
- }
- if (constantConstraintsExist) {
- if (mappedVar.startsWith(ExternalTupleSet.CONST_PREFIX)
- && constantConstraints.containsKey(mappedVar)
- && !constantConstraints.get(mappedVar).equals(
- bindingSet.getValue(var))) {
- return EMPTY_BINDINGSET;
- }
- }
-
- if (!mappedVar.startsWith(ExternalTupleSet.CONST_PREFIX)) {
- bs.addBinding(mappedVar, bindingSet.getValue(var));
- }
- }
- return bs;
- }
-
- /**
- * This method forms the cross-product between an input BindingSet and the
- * BindingSets contained in crossProdcutBs.
- *
- * @param bs
- * - {@link BindingSet} used to form cross product with
- * cross-product BindingSets
- * @return - Iterator over resulting cross-product
- */
- private Iterator<BindingSet> getCrossProducts(BindingSet bs) {
- Set<BindingSet> crossProducts = new HashSet<BindingSet>();
-
- for (BindingSet bSet : crossProductBs) {
- BindingSet prod = takeCrossProduct(bSet, bs);
- if (prod != EMPTY_BINDINGSET) {
- crossProducts.add(prod);
- }
- }
-
- return crossProducts.iterator();
-
- }
-
- /**
- * This method compute the cross product of the BindingSet passed to the PCJ
- * and the PCJ BindingSet. It verifies that only common variables are unassured
- * variables, and if leftBs and rightBs have distinct values for a given variable,
- * this method uses the value from leftBs in the cross product BindingSet - this
- * is effectively performing a LeftJoin.
- *
- * @param leftBs - BindingSet passed to PCJ
- * @param rightBs - PCJ BindingSet
- * @return - cross product BindingSet
- */
- private BindingSet takeCrossProduct(BindingSet leftBs, BindingSet rightBs) {
- if (bindingSetsIntersect(leftBs, rightBs)) {
- return EMPTY_BINDINGSET;
- }
- QueryBindingSet bs = new QueryBindingSet(leftBs);
-
- //only add Bindings corresponding to variables that have no value
- //assigned. This takes into account case where leftBs and rightBs
- //share a common, unAssuredVariable. In this case, use value corresponding
- //to leftBs, which is effectively performing a LeftJoin.
- for(String s: rightBs.getBindingNames()) {
- if(bs.getValue(s) == null) {
- bs.addBinding(s, rightBs.getValue(s));
- }
- }
- return bs;
- }
-
- private boolean bindingSetsIntersect(BindingSet bs1, BindingSet bs2) {
-
- for(String s: bs1.getBindingNames()) {
- if(bs2.getValue(s) != null && !unAssuredVariables.contains(s)) {
- return true;
- }
- }
- return false;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/44a2dcf0/extras/indexing/src/main/java/mvm/rya/accumulo/pcj/iterators/PCJKeyToJoinBindingSetIterator.java
----------------------------------------------------------------------
diff --git a/extras/indexing/src/main/java/mvm/rya/accumulo/pcj/iterators/PCJKeyToJoinBindingSetIterator.java b/extras/indexing/src/main/java/mvm/rya/accumulo/pcj/iterators/PCJKeyToJoinBindingSetIterator.java
deleted file mode 100644
index 1b821d4..0000000
--- a/extras/indexing/src/main/java/mvm/rya/accumulo/pcj/iterators/PCJKeyToJoinBindingSetIterator.java
+++ /dev/null
@@ -1,199 +0,0 @@
-package mvm.rya.accumulo.pcj.iterators;
-
-/*
- * 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.
- */
-
-import info.aduna.iteration.CloseableIteration;
-
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.NoSuchElementException;
-
-import mvm.rya.api.RdfCloudTripleStoreUtils;
-import mvm.rya.indexing.external.tupleSet.ExternalTupleSet;
-
-import org.apache.accumulo.core.client.BatchScanner;
-import org.apache.accumulo.core.client.Scanner;
-import org.apache.accumulo.core.data.Key;
-import org.apache.rya.indexing.pcj.storage.accumulo.AccumuloPcjSerializer;
-import org.apache.rya.indexing.pcj.storage.accumulo.BindingSetConverter.BindingSetConversionException;
-import org.apache.rya.indexing.pcj.storage.accumulo.VariableOrder;
-import org.openrdf.model.Value;
-import org.openrdf.query.BindingSet;
-import org.openrdf.query.QueryEvaluationException;
-import org.openrdf.query.algebra.evaluation.QueryBindingSet;
-
-import com.google.common.base.Preconditions;
-import com.google.common.collect.HashBiMap;
-
-/**
- * This class takes in a {@link Scanner} and a Collection of BindingSets,
- * deserializes each {@link Map.Entry<Key,Value>} taken from the Scanner into a
- * {@link BindingSet}, and creates a {@link Map.Entry<String, BindingSet>}
- * object to perform as hash join. The user can also specify a {@link Map
- * <String, Value>} of constant constraints that can be used to filter.
- *
- */
-public class PCJKeyToJoinBindingSetIterator
- implements
- CloseableIteration<Map.Entry<String, BindingSet>, QueryEvaluationException> {
-
- //map of variables as they appear in PCJ table to query variables
- private Map<String, String> pcjVarMap;
- //constant constraints used for filtering
- private Map<String, Value> constantConstraints;
- //max number of variables an entry in the batch of BindingSets had in common with PCJ
- //this is used for constructing hash join key.
- private int maxPrefixLen;
- private static final AccumuloPcjSerializer converter = new AccumuloPcjSerializer();
- private final Map.Entry<String, BindingSet> EMPTY_ENTRY = new RdfCloudTripleStoreUtils.CustomEntry<String, BindingSet>(
- "", new QueryBindingSet());
- private Iterator<Entry<Key, org.apache.accumulo.core.data.Value>> iterator;
- private boolean hasNextCalled = false;
- private boolean isEmpty = false;
- private Map.Entry<String, BindingSet> next;
- private BatchScanner scanner;
-
- public PCJKeyToJoinBindingSetIterator(BatchScanner scanner,
- Map<String, String> pcjVarMap,
- Map<String, Value> constantConstraints, int maxPrefixLen) {
- Preconditions.checkNotNull(scanner);
- Preconditions.checkArgument(pcjVarMap.size() > 0,
- "Variable map must contain at least one variable!");
- Preconditions.checkNotNull(constantConstraints,
- "Constant constraints cannot be null.");
- Preconditions.checkArgument(maxPrefixLen > 0,
- "Max prefix length must be greater than 0.");
- Preconditions
- .checkArgument(maxPrefixLen <= pcjVarMap.size(),
- "Max prefix length must be less than total number of binding names.");
- this.scanner = scanner;
- this.pcjVarMap = HashBiMap.create(pcjVarMap).inverse();
- this.constantConstraints = constantConstraints;
- this.maxPrefixLen = maxPrefixLen;
- this.iterator = scanner.iterator();
-
- }
-
- public PCJKeyToJoinBindingSetIterator(BatchScanner scanner,
- Map<String, String> pcjVarMap, int maxPrefixLen) {
- this(scanner, pcjVarMap, new HashMap<String, Value>(), maxPrefixLen);
- }
-
- @Override
- public boolean hasNext() throws QueryEvaluationException {
-
- if (!hasNextCalled && !isEmpty) {
- while (iterator.hasNext()) {
- Key key = iterator.next().getKey();
- // get bindings from scan without values associated with
- // constant constraints
- try {
- next = getBindingSetEntryAndMatchConstants(key);
- } catch (BindingSetConversionException e) {
- throw new QueryEvaluationException(
- "Could not deserialize PCJ BindingSet.");
- }
- // skip key if constant constraint don't match
- if (next == EMPTY_ENTRY) {
- continue;
- }
- hasNextCalled = true;
- return true;
- }
- isEmpty = true;
- return false;
- } else if (isEmpty) {
- return false;
- } else {
- return true;
- }
- }
-
- @Override
- public Entry<String, BindingSet> next() throws QueryEvaluationException {
- if (hasNextCalled) {
- hasNextCalled = false;
- } else if (isEmpty) {
- throw new NoSuchElementException();
- } else {
- if (this.hasNext()) {
- hasNextCalled = false;
- } else {
- throw new NoSuchElementException();
- }
- }
- return next;
- }
-
- @Override
- public void remove() throws QueryEvaluationException {
- throw new UnsupportedOperationException();
- }
-
- @Override
- public void close() throws QueryEvaluationException {
- scanner.close();
- }
-
- /**
- *
- * @param key
- * - Accumulo key obtained from scan
- * @return - Entry<String,BindingSet> satisfying the constant constraints
- * @throws BindingSetConversionException
- */
- private Map.Entry<String, BindingSet> getBindingSetEntryAndMatchConstants(
- Key key) throws BindingSetConversionException {
- byte[] row = key.getRow().getBytes();
- String[] varOrder = key.getColumnFamily().toString()
- .split(ExternalTupleSet.VAR_ORDER_DELIM);
-
- BindingSet bindingSet = converter.convert(row, new VariableOrder(
- varOrder));
-
- QueryBindingSet bs = new QueryBindingSet();
- for (String var : bindingSet.getBindingNames()) {
- String mappedVar = pcjVarMap.get(var);
- if (mappedVar.startsWith(ExternalTupleSet.CONST_PREFIX)
- && constantConstraints.containsKey(mappedVar)
- && !constantConstraints.get(mappedVar).equals(
- bindingSet.getValue(var))) {
- return EMPTY_ENTRY;
- } else {
- bs.addBinding(mappedVar, bindingSet.getValue(var));
- }
- }
-
- String orderedValueString = bindingSet.getValue(varOrder[0]).toString();
- for (int i = 1; i < maxPrefixLen; i++) {
- Value value = bindingSet.getValue(varOrder[i]);
- if (value != null) {
- orderedValueString = orderedValueString
- + ExternalTupleSet.VALUE_DELIM + value.toString();
- }
- }
-
- return new RdfCloudTripleStoreUtils.CustomEntry<String, BindingSet>(
- orderedValueString, bs);
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/44a2dcf0/extras/indexing/src/main/java/mvm/rya/api/client/accumulo/AccumuloBatchUpdatePCJ.java
----------------------------------------------------------------------
diff --git a/extras/indexing/src/main/java/mvm/rya/api/client/accumulo/AccumuloBatchUpdatePCJ.java b/extras/indexing/src/main/java/mvm/rya/api/client/accumulo/AccumuloBatchUpdatePCJ.java
deleted file mode 100644
index 53f29f4..0000000
--- a/extras/indexing/src/main/java/mvm/rya/api/client/accumulo/AccumuloBatchUpdatePCJ.java
+++ /dev/null
@@ -1,244 +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 mvm.rya.api.client.accumulo;
-
-import static java.util.Objects.requireNonNull;
-
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-
-import org.apache.accumulo.core.client.AccumuloException;
-import org.apache.accumulo.core.client.AccumuloSecurityException;
-import org.apache.accumulo.core.client.Connector;
-import org.apache.log4j.Logger;
-import org.apache.rya.indexing.pcj.storage.PcjMetadata;
-import org.apache.rya.indexing.pcj.storage.PrecomputedJoinStorage;
-import org.apache.rya.indexing.pcj.storage.PrecomputedJoinStorage.PCJStorageException;
-import org.apache.rya.indexing.pcj.storage.accumulo.AccumuloPcjStorage;
-import org.apache.rya.indexing.pcj.storage.accumulo.VisibilityBindingSet;
-import org.openrdf.query.BindingSet;
-import org.openrdf.query.MalformedQueryException;
-import org.openrdf.query.QueryEvaluationException;
-import org.openrdf.query.parser.ParsedQuery;
-import org.openrdf.query.parser.sparql.SPARQLParser;
-import org.openrdf.sail.Sail;
-import org.openrdf.sail.SailConnection;
-import org.openrdf.sail.SailException;
-
-import com.google.common.base.Optional;
-
-import info.aduna.iteration.CloseableIteration;
-import mvm.rya.accumulo.AccumuloRdfConfiguration;
-import mvm.rya.accumulo.instance.AccumuloRyaInstanceDetailsRepository;
-import mvm.rya.api.client.BatchUpdatePCJ;
-import mvm.rya.api.client.InstanceDoesNotExistException;
-import mvm.rya.api.client.PCJDoesNotExistException;
-import mvm.rya.api.client.RyaClientException;
-import mvm.rya.api.instance.RyaDetails;
-import mvm.rya.api.instance.RyaDetails.PCJIndexDetails.PCJDetails;
-import mvm.rya.api.instance.RyaDetails.PCJIndexDetails.PCJDetails.PCJUpdateStrategy;
-import mvm.rya.api.instance.RyaDetailsRepository;
-import mvm.rya.api.instance.RyaDetailsRepository.NotInitializedException;
-import mvm.rya.api.instance.RyaDetailsRepository.RyaDetailsRepositoryException;
-import mvm.rya.api.instance.RyaDetailsUpdater;
-import mvm.rya.api.instance.RyaDetailsUpdater.RyaDetailsMutator;
-import mvm.rya.api.instance.RyaDetailsUpdater.RyaDetailsMutator.CouldNotApplyMutationException;
-import mvm.rya.api.persist.RyaDAOException;
-import mvm.rya.indexing.accumulo.ConfigUtils;
-import mvm.rya.rdftriplestore.inference.InferenceEngineException;
-import mvm.rya.sail.config.RyaSailFactory;
-
-/**
- * Uses an in memory Rya Client to batch update a PCJ index.
- */
-public class AccumuloBatchUpdatePCJ extends AccumuloCommand implements BatchUpdatePCJ {
-
- private static final Logger log = Logger.getLogger(AccumuloBatchUpdatePCJ.class);
-
- /**
- * Constructs an instance of {@link AccumuloBatchUpdatePCJ}.
- *
- * @param connectionDetails - Details about the values that were used to create the connector to the cluster. (not null)
- * @param connector - Provides programmatic access to the instance of Accumulo that hosts Rya instance. (not null)
- */
- public AccumuloBatchUpdatePCJ(final AccumuloConnectionDetails connectionDetails, final Connector connector) {
- super(connectionDetails, connector);
- }
-
- @Override
- public void batchUpdate(final String ryaInstanceName, final String pcjId) throws InstanceDoesNotExistException, PCJDoesNotExistException, RyaClientException {
- requireNonNull(ryaInstanceName);
- requireNonNull(pcjId);
- verifyPCJState(ryaInstanceName, pcjId);
- updatePCJResults(ryaInstanceName, pcjId);
- updatePCJMetadata(ryaInstanceName, pcjId);
- }
-
- private void verifyPCJState(final String ryaInstanceName, final String pcjId) throws RyaClientException {
- try {
- // Fetch the Rya instance's details.
- final RyaDetailsRepository detailsRepo = new AccumuloRyaInstanceDetailsRepository(super.getConnector(), ryaInstanceName);
- final RyaDetails ryaDetails = detailsRepo.getRyaInstanceDetails();
-
- // Ensure PCJs are enabled.
- if(!ryaDetails.getPCJIndexDetails().isEnabled()) {
- throw new RyaClientException("PCJs are not enabled for the Rya instance named '" + ryaInstanceName + "'.");
- }
-
- // Ensure the PCJ exists.
- if(!ryaDetails.getPCJIndexDetails().getPCJDetails().containsKey(pcjId)) {
- throw new PCJDoesNotExistException("The PCJ with id '" + pcjId + "' does not exist within Rya instance '" + ryaInstanceName + "'.");
- }
-
- // Ensure the PCJ is not already being incrementally updated.
- final PCJDetails pcjDetails = ryaDetails.getPCJIndexDetails().getPCJDetails().get(pcjId);
- final Optional<PCJUpdateStrategy> updateStrategy = pcjDetails.getUpdateStrategy();
- if(updateStrategy.isPresent() && updateStrategy.get() == PCJUpdateStrategy.INCREMENTAL) {
- throw new RyaClientException("The PCJ with id '" + pcjId + "' is already being updated incrementally.");
- }
- } catch(final NotInitializedException e) {
- throw new InstanceDoesNotExistException("No RyaDetails are initialized for the Rya instance named '" + ryaInstanceName + "'.", e);
- } catch (final RyaDetailsRepositoryException e) {
- throw new RyaClientException("Could not fetch the RyaDetails for the Rya instance named '" + ryaInstanceName + "'.", e);
- }
- }
-
- private void updatePCJResults(final String ryaInstanceName, final String pcjId) throws InstanceDoesNotExistException, PCJDoesNotExistException, RyaClientException {
- // Things that have to be closed before we exit.
- Sail sail = null;
- SailConnection sailConn = null;
- CloseableIteration<? extends BindingSet, QueryEvaluationException> results = null;
-
- try {
- // Create an instance of Sail backed by the Rya instance.
- sail = connectToRya(ryaInstanceName);
-
- // Purge the old results from the PCJ.
- final PrecomputedJoinStorage pcjStorage = new AccumuloPcjStorage(super.getConnector(), ryaInstanceName);
- try {
- pcjStorage.purge(pcjId);
- } catch (final PCJStorageException e) {
- throw new RyaClientException("Could not batch update PCJ with ID '" + pcjId + "' because the old " +
- "results could not be purged from it.", e);
- }
-
- try {
- // Parse the PCJ's SPARQL query.
- final PcjMetadata metadata = pcjStorage.getPcjMetadata(pcjId);
- final String sparql = metadata.getSparql();
- final SPARQLParser parser = new SPARQLParser();
- final ParsedQuery parsedQuery = parser.parseQuery(sparql, null);
-
- // Execute the query.
- sailConn = sail.getConnection();
- results = sailConn.evaluate(parsedQuery.getTupleExpr(), null, null, false);
-
- // Load the results into the PCJ table.
- final List<VisibilityBindingSet> batch = new ArrayList<>(1000);
-
- while(results.hasNext()) {
- final VisibilityBindingSet result = new VisibilityBindingSet(results.next(), "");
- batch.add(result);
-
- if(batch.size() == 1000) {
- pcjStorage.addResults(pcjId, batch);
- batch.clear();
- }
- }
-
- if(!batch.isEmpty()) {
- pcjStorage.addResults(pcjId, batch);
- batch.clear();
- }
- } catch(final MalformedQueryException | PCJStorageException | SailException | QueryEvaluationException e) {
- throw new RyaClientException("Fail to batch load new results into the PCJ with ID '" + pcjId + "'.", e);
- }
- } finally {
- if(results != null) {
- try {
- results.close();
- } catch (final QueryEvaluationException e) {
- log.warn(e.getMessage(), e);
- }
- }
-
- if(sailConn != null) {
- try {
- sailConn.close();
- } catch (final SailException e) {
- log.warn(e.getMessage(), e);
- }
- }
-
- if(sail != null) {
- try {
- sail.shutDown();
- } catch (final SailException e) {
- log.warn(e.getMessage(), e);
- }
- }
- }
- }
-
- private Sail connectToRya(final String ryaInstanceName) throws RyaClientException {
- try {
- final AccumuloConnectionDetails connectionDetails = super.getAccumuloConnectionDetails();
-
- final AccumuloRdfConfiguration ryaConf = new AccumuloRdfConfiguration();
- ryaConf.setTablePrefix(ryaInstanceName);
- ryaConf.set(ConfigUtils.CLOUDBASE_USER, connectionDetails.getUsername());
- ryaConf.set(ConfigUtils.CLOUDBASE_PASSWORD, new String(connectionDetails.getPassword()));
- ryaConf.set(ConfigUtils.CLOUDBASE_ZOOKEEPERS, connectionDetails.getZookeepers());
- ryaConf.set(ConfigUtils.CLOUDBASE_INSTANCE, connectionDetails.getInstanceName());
-
- // Turn PCJs off so that we will only scan the core Rya tables while building the PCJ results.
- ryaConf.set(ConfigUtils.USE_PCJ, "false");
-
- return RyaSailFactory.getInstance(ryaConf);
- } catch (SailException | AccumuloException | AccumuloSecurityException | RyaDAOException | InferenceEngineException e) {
- throw new RyaClientException("Could not connect to the Rya instance named '" + ryaInstanceName + "'.", e);
- }
- }
-
- private void updatePCJMetadata(final String ryaInstanceName, final String pcjId) throws RyaClientException {
- // Update the PCJ's metadata to indicate it was just batch updated.
- try {
- final RyaDetailsRepository detailsRepo = new AccumuloRyaInstanceDetailsRepository(super.getConnector(), ryaInstanceName);
-
- new RyaDetailsUpdater(detailsRepo).update(new RyaDetailsMutator() {
- @Override
- public RyaDetails mutate(final RyaDetails originalDetails) throws CouldNotApplyMutationException {
- // Update the original PCJ Details to indicate they were batch updated.
- final PCJDetails originalPCJDetails = originalDetails.getPCJIndexDetails().getPCJDetails().get(pcjId);
- final PCJDetails.Builder mutatedPCJDetails = PCJDetails.builder( originalPCJDetails )
- .setUpdateStrategy( PCJUpdateStrategy.BATCH )
- .setLastUpdateTime( new Date());
-
- // Replace the old PCJ Details with the updated ones.
- final RyaDetails.Builder builder = RyaDetails.builder(originalDetails);
- builder.getPCJIndexDetails().addPCJDetails( mutatedPCJDetails );
- return builder.build();
- }
- });
- } catch (final RyaDetailsRepositoryException | CouldNotApplyMutationException e) {
- throw new RyaClientException("Could not update the PCJ's metadata.", e);
- }
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/44a2dcf0/extras/indexing/src/main/java/mvm/rya/api/client/accumulo/AccumuloCommand.java
----------------------------------------------------------------------
diff --git a/extras/indexing/src/main/java/mvm/rya/api/client/accumulo/AccumuloCommand.java b/extras/indexing/src/main/java/mvm/rya/api/client/accumulo/AccumuloCommand.java
deleted file mode 100644
index 078e985..0000000
--- a/extras/indexing/src/main/java/mvm/rya/api/client/accumulo/AccumuloCommand.java
+++ /dev/null
@@ -1,64 +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 mvm.rya.api.client.accumulo;
-
-import static java.util.Objects.requireNonNull;
-
-import javax.annotation.ParametersAreNonnullByDefault;
-
-import org.apache.accumulo.core.client.Connector;
-
-/**
- * An abstract class that holds onto Accumulo access information. Extend this
- * when implementing a command that interacts with Accumulo.
- */
-@ParametersAreNonnullByDefault
-public abstract class AccumuloCommand {
-
- private final AccumuloConnectionDetails connectionDetails;
- private final Connector connector;
-
- /**
- * Constructs an instance of {@link AccumuloCommand}.
- *
- * Details about the values that were used to create the connector to the cluster. (not null)
- * @param connector - Provides programatic access to the instance of Accumulo
- * that hosts Rya instance. (not null)
- */
- public AccumuloCommand(
- final AccumuloConnectionDetails connectionDetails,
- final Connector connector) {
- this.connectionDetails = requireNonNull( connectionDetails );
- this.connector = requireNonNull(connector);
- }
-
- /**
- * @return Details about the values that were used to create the connector to the cluster. (not null)
- */
- public AccumuloConnectionDetails getAccumuloConnectionDetails() {
- return connectionDetails;
- }
-
- /**
- * @return Provides programatic access to the instance of Accumulo that hosts Rya instance.
- */
- public Connector getConnector() {
- return connector;
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/44a2dcf0/extras/indexing/src/main/java/mvm/rya/api/client/accumulo/AccumuloConnectionDetails.java
----------------------------------------------------------------------
diff --git a/extras/indexing/src/main/java/mvm/rya/api/client/accumulo/AccumuloConnectionDetails.java b/extras/indexing/src/main/java/mvm/rya/api/client/accumulo/AccumuloConnectionDetails.java
deleted file mode 100644
index c0a7be7..0000000
--- a/extras/indexing/src/main/java/mvm/rya/api/client/accumulo/AccumuloConnectionDetails.java
+++ /dev/null
@@ -1,83 +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 mvm.rya.api.client.accumulo;
-
-import static java.util.Objects.requireNonNull;
-
-import javax.annotation.ParametersAreNonnullByDefault;
-import javax.annotation.concurrent.Immutable;
-
-/**
- * The information that the shell used to connect to Accumulo.
- */
-@Immutable
-@ParametersAreNonnullByDefault
-public class AccumuloConnectionDetails {
- private final String username;
- private final char[] password;
- private final String instanceName;
- private final String zookeepers;
-
- /**
- * Constructs an instance of {@link AccumuloConnectionDetails}.
- *
- * @param username - The username that was used to establish the connection. (not null)
- * @param password - The password that was used to establish the connection. (not null)
- * @param instanceName - The Accumulo instance name that was used to establish the connection. (not null)
- * @param zookeepers - The list of zookeeper hostname that were used to establish the connection. (not null)
- */
- public AccumuloConnectionDetails(
- final String username,
- final char[] password,
- final String instanceName,
- final String zookeepers) {
- this.username = requireNonNull(username);
- this.password = requireNonNull(password);
- this.instanceName = requireNonNull(instanceName);
- this.zookeepers = requireNonNull(zookeepers);
- }
-
- /**
- * @return The username that was used to establish the connection.
- */
- public String getUsername() {
- return username;
- }
-
- /**
- * @return The password that was used to establish the connection.
- */
- public char[] getPassword() {
- return password;
- }
-
- /**
- * @return The Accumulo instance name that was used to establish the connection.
- */
- public String getInstanceName() {
- return instanceName;
- }
-
- /**
- * @return The list of zookeeper hostname that were used to establish the connection.
- */
- public String getZookeepers() {
- return zookeepers;
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/44a2dcf0/extras/indexing/src/main/java/mvm/rya/api/client/accumulo/AccumuloCreatePCJ.java
----------------------------------------------------------------------
diff --git a/extras/indexing/src/main/java/mvm/rya/api/client/accumulo/AccumuloCreatePCJ.java b/extras/indexing/src/main/java/mvm/rya/api/client/accumulo/AccumuloCreatePCJ.java
deleted file mode 100644
index 4cf0935..0000000
--- a/extras/indexing/src/main/java/mvm/rya/api/client/accumulo/AccumuloCreatePCJ.java
+++ /dev/null
@@ -1,181 +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 mvm.rya.api.client.accumulo;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static java.util.Objects.requireNonNull;
-
-import javax.annotation.ParametersAreNonnullByDefault;
-
-import org.apache.accumulo.core.client.Connector;
-import org.apache.rya.indexing.pcj.storage.PcjException;
-import org.apache.rya.indexing.pcj.storage.PrecomputedJoinStorage;
-import org.apache.rya.indexing.pcj.storage.PrecomputedJoinStorage.PCJStorageException;
-import org.apache.rya.indexing.pcj.storage.accumulo.AccumuloPcjStorage;
-import org.openrdf.query.MalformedQueryException;
-import org.openrdf.query.QueryEvaluationException;
-import org.openrdf.repository.RepositoryException;
-import org.openrdf.sail.SailException;
-
-import com.google.common.base.Optional;
-
-import org.apache.fluo.api.client.FluoClient;
-import mvm.rya.accumulo.AccumuloRdfConfiguration;
-import mvm.rya.accumulo.AccumuloRyaDAO;
-import mvm.rya.accumulo.instance.AccumuloRyaInstanceDetailsRepository;
-import mvm.rya.api.client.CreatePCJ;
-import mvm.rya.api.client.GetInstanceDetails;
-import mvm.rya.api.client.InstanceDoesNotExistException;
-import mvm.rya.api.client.RyaClientException;
-import mvm.rya.api.instance.RyaDetails;
-import mvm.rya.api.instance.RyaDetails.PCJIndexDetails;
-import mvm.rya.api.instance.RyaDetails.PCJIndexDetails.FluoDetails;
-import mvm.rya.api.instance.RyaDetails.PCJIndexDetails.PCJDetails;
-import mvm.rya.api.instance.RyaDetails.PCJIndexDetails.PCJDetails.PCJUpdateStrategy;
-import mvm.rya.api.instance.RyaDetailsRepository;
-import mvm.rya.api.instance.RyaDetailsRepository.RyaDetailsRepositoryException;
-import mvm.rya.api.instance.RyaDetailsUpdater;
-import mvm.rya.api.instance.RyaDetailsUpdater.RyaDetailsMutator;
-import mvm.rya.api.instance.RyaDetailsUpdater.RyaDetailsMutator.CouldNotApplyMutationException;
-import mvm.rya.rdftriplestore.RdfCloudTripleStore;
-import mvm.rya.rdftriplestore.RyaSailRepository;
-
-/**
- * An Accumulo implementation of the {@link CreatePCJ} command.
- */
-@ParametersAreNonnullByDefault
-public class AccumuloCreatePCJ extends AccumuloCommand implements CreatePCJ {
-
- private final GetInstanceDetails getInstanceDetails;
-
- /**
- * Constructs an instance of {@link AccumuloCreatePCJ}.
- *
- * @param connectionDetails - Details about the values that were used to create the connector to the cluster. (not null)
- * @param connector - Provides programatic access to the instance of Accumulo that hosts Rya instance. (not null)
- */
- public AccumuloCreatePCJ(final AccumuloConnectionDetails connectionDetails, final Connector connector) {
- super(connectionDetails, connector);
- getInstanceDetails = new AccumuloGetInstanceDetails(connectionDetails, connector);
- }
-
- @Override
- public String createPCJ(final String instanceName, final String sparql) throws InstanceDoesNotExistException, RyaClientException {
- requireNonNull(instanceName);
- requireNonNull(sparql);
-
- final Optional<RyaDetails> ryaDetailsHolder = getInstanceDetails.getDetails(instanceName);
- final boolean ryaInstanceExists = ryaDetailsHolder.isPresent();
- if(!ryaInstanceExists) {
- throw new InstanceDoesNotExistException(String.format("The '%s' instance of Rya does not exist.", instanceName));
- }
-
- final PCJIndexDetails pcjIndexDetails = ryaDetailsHolder.get().getPCJIndexDetails();
- final boolean pcjIndexingEnabeld = pcjIndexDetails.isEnabled();
- if(!pcjIndexingEnabeld) {
- throw new RyaClientException(String.format("The '%s' instance of Rya does not have PCJ Indexing enabled.", instanceName));
- }
-
- // Create the PCJ table that will receive the index results.
- final String pcjId;
- final PrecomputedJoinStorage pcjStorage = new AccumuloPcjStorage(getConnector(), instanceName);
- try {
- pcjId = pcjStorage.createPcj(sparql);
- } catch (final PCJStorageException e) {
- throw new RyaClientException("Problem while initializing the PCJ table.", e);
- }
-
- // If a Fluo application is being used, task it with updating the PCJ.
- final Optional<FluoDetails> fluoDetailsHolder = pcjIndexDetails.getFluoDetails();
- if(fluoDetailsHolder.isPresent()) {
- final String fluoAppName = fluoDetailsHolder.get().getUpdateAppName();
- try {
- updateFluoApp(instanceName, fluoAppName, pcjStorage, pcjId);
- } catch (RepositoryException | MalformedQueryException | SailException | QueryEvaluationException | PcjException e) {
- throw new RyaClientException("Problem while initializing the Fluo application with the new PCJ.", e);
- }
-
- // Update the Rya Details to indicate the PCJ is being updated incrementally.
- final RyaDetailsRepository detailsRepo = new AccumuloRyaInstanceDetailsRepository(getConnector(), instanceName);
- try {
- new RyaDetailsUpdater(detailsRepo).update(new RyaDetailsMutator() {
- @Override
- public RyaDetails mutate(final RyaDetails originalDetails) throws CouldNotApplyMutationException {
- // Update the original PCJ Details to indicate they are incrementally updated.
- final PCJDetails originalPCJDetails = originalDetails.getPCJIndexDetails().getPCJDetails().get(pcjId);
- final PCJDetails.Builder mutatedPCJDetails = PCJDetails.builder( originalPCJDetails )
- .setUpdateStrategy( PCJUpdateStrategy.INCREMENTAL );
-
- // Replace the old PCJ Details with the updated ones.
- final RyaDetails.Builder builder = RyaDetails.builder(originalDetails);
- builder.getPCJIndexDetails().addPCJDetails( mutatedPCJDetails );
- return builder.build();
- }
- });
- } catch (RyaDetailsRepositoryException | CouldNotApplyMutationException e) {
- throw new RyaClientException("Problem while updating the Rya instance's Details to indicate the PCJ is being incrementally updated.", e);
- }
- }
-
- // Return the ID that was assigned to the PCJ.
- return pcjId;
- }
-
- private void updateFluoApp(final String ryaInstance, final String fluoAppName, final PrecomputedJoinStorage pcjStorage, final String pcjId) throws RepositoryException, MalformedQueryException, SailException, QueryEvaluationException, PcjException {
- requireNonNull(pcjStorage);
- requireNonNull(pcjId);
-
- // Connect to the Fluo application that is updating this instance's PCJs.
- final AccumuloConnectionDetails cd = super.getAccumuloConnectionDetails();
- final FluoClient fluoClient = new FluoClientFactory().connect(
- cd.getUsername(),
- new String(cd.getPassword()),
- cd.getInstanceName(),
- cd.getZookeepers(),
- fluoAppName);
-
- // Setup the Rya client that is able to talk to scan Rya's statements.
- final RyaSailRepository ryaSailRepo = makeRyaRepository(getConnector(), ryaInstance);
-
- // Initialize the PCJ within the Fluo application.
- final org.apache.rya.indexing.pcj.fluo.api.CreatePcj fluoCreatePcj = new org.apache.rya.indexing.pcj.fluo.api.CreatePcj();
- fluoCreatePcj.withRyaIntegration(pcjId, pcjStorage, fluoClient, ryaSailRepo);
- }
-
- private static RyaSailRepository makeRyaRepository(final Connector connector, final String ryaInstance) throws RepositoryException {
- checkNotNull(connector);
- checkNotNull(ryaInstance);
-
- // Setup Rya configuration values.
- final AccumuloRdfConfiguration ryaConf = new AccumuloRdfConfiguration();
- ryaConf.setTablePrefix( ryaInstance );
-
- // Connect to the Rya repo using the provided Connector.
- final AccumuloRyaDAO accumuloRyaDao = new AccumuloRyaDAO();
- accumuloRyaDao.setConnector(connector);
- accumuloRyaDao.setConf(ryaConf);
-
- final RdfCloudTripleStore ryaStore = new RdfCloudTripleStore();
- ryaStore.setRyaDAO(accumuloRyaDao);
-
- final RyaSailRepository ryaRepo = new RyaSailRepository(ryaStore);
- ryaRepo.initialize();
- return ryaRepo;
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/44a2dcf0/extras/indexing/src/main/java/mvm/rya/api/client/accumulo/AccumuloDeletePCJ.java
----------------------------------------------------------------------
diff --git a/extras/indexing/src/main/java/mvm/rya/api/client/accumulo/AccumuloDeletePCJ.java b/extras/indexing/src/main/java/mvm/rya/api/client/accumulo/AccumuloDeletePCJ.java
deleted file mode 100644
index 233a265..0000000
--- a/extras/indexing/src/main/java/mvm/rya/api/client/accumulo/AccumuloDeletePCJ.java
+++ /dev/null
@@ -1,130 +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 mvm.rya.api.client.accumulo;
-
-import static java.util.Objects.requireNonNull;
-
-import javax.annotation.ParametersAreNonnullByDefault;
-
-import org.apache.accumulo.core.client.Connector;
-import org.apache.rya.indexing.pcj.fluo.api.DeletePcj;
-import org.apache.rya.indexing.pcj.storage.PrecomputedJoinStorage;
-import org.apache.rya.indexing.pcj.storage.PrecomputedJoinStorage.PCJStorageException;
-import org.apache.rya.indexing.pcj.storage.accumulo.AccumuloPcjStorage;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.Optional;
-
-import org.apache.fluo.api.client.FluoClient;
-import mvm.rya.api.client.DeletePCJ;
-import mvm.rya.api.client.GetInstanceDetails;
-import mvm.rya.api.client.InstanceDoesNotExistException;
-import mvm.rya.api.client.RyaClientException;
-import mvm.rya.api.instance.RyaDetails;
-import mvm.rya.api.instance.RyaDetails.PCJIndexDetails;
-import mvm.rya.api.instance.RyaDetails.PCJIndexDetails.FluoDetails;
-import mvm.rya.api.instance.RyaDetails.PCJIndexDetails.PCJDetails;
-import mvm.rya.api.instance.RyaDetails.PCJIndexDetails.PCJDetails.PCJUpdateStrategy;
-
-/**
- * An Accumulo implementation of the {@link DeletePCJ} command.
- */
-@ParametersAreNonnullByDefault
-public class AccumuloDeletePCJ extends AccumuloCommand implements DeletePCJ {
-
- private static final Logger log = LoggerFactory.getLogger(AccumuloDeletePCJ.class);
-
- private final GetInstanceDetails getInstanceDetails;
-
- /**
- * Constructs an instance of {@link AccumuloDeletePCJ}.
- *
- * @param connectionDetails - Details about the values that were used to create the connector to the cluster. (not null)
- * @param connector - Provides programatic access to the instance of Accumulo that hosts Rya instance. (not null)
- */
- public AccumuloDeletePCJ(final AccumuloConnectionDetails connectionDetails, final Connector connector) {
- super(connectionDetails, connector);
- getInstanceDetails = new AccumuloGetInstanceDetails(connectionDetails, connector);
- }
-
- @Override
- public void deletePCJ(final String instanceName, final String pcjId) throws InstanceDoesNotExistException, RyaClientException {
- requireNonNull(instanceName);
- requireNonNull(pcjId);
-
- final Optional<RyaDetails> originalDetails = getInstanceDetails.getDetails(instanceName);
- final boolean ryaInstanceExists = originalDetails.isPresent();
- if(!ryaInstanceExists) {
- throw new InstanceDoesNotExistException(String.format("The '%s' instance of Rya does not exist.", instanceName));
- }
-
- final boolean pcjIndexingEnabeld = originalDetails.get().getPCJIndexDetails().isEnabled();
- if(!pcjIndexingEnabeld) {
- throw new RyaClientException(String.format("The '%s' instance of Rya does not have PCJ Indexing enabled.", instanceName));
- }
-
- final boolean pcjExists = originalDetails.get().getPCJIndexDetails().getPCJDetails().containsKey( pcjId );
- if(!pcjExists) {
- throw new RyaClientException(String.format("The '%s' instance of Rya does not have PCJ with ID '%s'.", instanceName, pcjId));
- }
-
- // If the PCJ was being maintained by a Fluo application, then stop that process.
- final PCJIndexDetails pcjIndexDetails = originalDetails.get().getPCJIndexDetails();
- final PCJDetails droppedPcjDetails = pcjIndexDetails.getPCJDetails().get( pcjId );
- if(droppedPcjDetails.getUpdateStrategy().isPresent()) {
- if(droppedPcjDetails.getUpdateStrategy().get() == PCJUpdateStrategy.INCREMENTAL) {
- final Optional<FluoDetails> fluoDetailsHolder = pcjIndexDetails.getFluoDetails();
-
- if(fluoDetailsHolder.isPresent()) {
- final String fluoAppName = pcjIndexDetails.getFluoDetails().get().getUpdateAppName();
- stopUpdatingPCJ(fluoAppName, pcjId);
- } else {
- log.error(String.format("Could not stop the Fluo application from updating the PCJ because the Fluo Details are " +
- "missing for the Rya instance named '%s'.", instanceName));
- }
- }
- }
-
- // Drop the table that holds the PCJ results from Accumulo.
- final PrecomputedJoinStorage pcjs = new AccumuloPcjStorage(getConnector(), instanceName);
- try {
- pcjs.dropPcj(pcjId);
- } catch (final PCJStorageException e) {
- throw new RyaClientException("Could not drop the PCJ's table from Accumulo.", e);
- }
- }
-
- private void stopUpdatingPCJ(final String fluoAppName, final String pcjId) {
- requireNonNull(fluoAppName);
- requireNonNull(pcjId);
-
- // Connect to the Fluo application that is updating this instance's PCJs.
- final AccumuloConnectionDetails cd = super.getAccumuloConnectionDetails();
- final FluoClient fluoClient = new FluoClientFactory().connect(
- cd.getUsername(),
- new String(cd.getPassword()),
- cd.getInstanceName(),
- cd.getZookeepers(),
- fluoAppName);
-
- // Delete the PCJ from the Fluo App.
- new DeletePcj(1000).deletePcj(fluoClient, pcjId);
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/44a2dcf0/extras/indexing/src/main/java/mvm/rya/api/client/accumulo/AccumuloGetInstanceDetails.java
----------------------------------------------------------------------
diff --git a/extras/indexing/src/main/java/mvm/rya/api/client/accumulo/AccumuloGetInstanceDetails.java b/extras/indexing/src/main/java/mvm/rya/api/client/accumulo/AccumuloGetInstanceDetails.java
deleted file mode 100644
index a2fed78..0000000
--- a/extras/indexing/src/main/java/mvm/rya/api/client/accumulo/AccumuloGetInstanceDetails.java
+++ /dev/null
@@ -1,77 +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 mvm.rya.api.client.accumulo;
-
-import static java.util.Objects.requireNonNull;
-
-import javax.annotation.ParametersAreNonnullByDefault;
-
-import org.apache.accumulo.core.client.Connector;
-
-import com.google.common.base.Optional;
-
-import mvm.rya.accumulo.instance.AccumuloRyaInstanceDetailsRepository;
-import mvm.rya.api.client.GetInstanceDetails;
-import mvm.rya.api.client.InstanceDoesNotExistException;
-import mvm.rya.api.client.InstanceExists;
-import mvm.rya.api.client.RyaClientException;
-import mvm.rya.api.instance.RyaDetails;
-import mvm.rya.api.instance.RyaDetailsRepository;
-import mvm.rya.api.instance.RyaDetailsRepository.NotInitializedException;
-import mvm.rya.api.instance.RyaDetailsRepository.RyaDetailsRepositoryException;
-
-/**
- * An Accumulo implementation of the {@link GetInstanceDetails} command.
- */
-@ParametersAreNonnullByDefault
-public class AccumuloGetInstanceDetails extends AccumuloCommand implements GetInstanceDetails {
-
- private final InstanceExists instanceExists;
-
- /**
- * Constructs an instance of {@link AccumuloGetInstanceDetails}.
- *
- * @param connectionDetails - Details about the values that were used to create the connector to the cluster. (not null)
- * @param connector - Provides programatic access to the instance of Accumulo that hosts Rya instance. (not null)
- */
- public AccumuloGetInstanceDetails(final AccumuloConnectionDetails connectionDetails, final Connector connector) {
- super(connectionDetails, connector);
- instanceExists = new AccumuloInstanceExists(connectionDetails, connector);
- }
-
- @Override
- public Optional<RyaDetails> getDetails(final String instanceName) throws InstanceDoesNotExistException, RyaClientException {
- requireNonNull(instanceName);
-
- // Ensure the Rya instance exists.
- if(!instanceExists.exists(instanceName)) {
- throw new InstanceDoesNotExistException(String.format("There is no Rya instance named '%s'.", instanceName));
- }
-
- // If the instance has details, then return them.
- final RyaDetailsRepository detailsRepo = new AccumuloRyaInstanceDetailsRepository(getConnector(), instanceName);
- try {
- return Optional.of( detailsRepo.getRyaInstanceDetails() );
- } catch (final NotInitializedException e) {
- return Optional.absent();
- } catch (final RyaDetailsRepositoryException e) {
- throw new RyaClientException("Could not fetch the Rya instance's details.", e);
- }
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/44a2dcf0/extras/indexing/src/main/java/mvm/rya/api/client/accumulo/AccumuloInstall.java
----------------------------------------------------------------------
diff --git a/extras/indexing/src/main/java/mvm/rya/api/client/accumulo/AccumuloInstall.java b/extras/indexing/src/main/java/mvm/rya/api/client/accumulo/AccumuloInstall.java
deleted file mode 100644
index 08c1932..0000000
--- a/extras/indexing/src/main/java/mvm/rya/api/client/accumulo/AccumuloInstall.java
+++ /dev/null
@@ -1,218 +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 mvm.rya.api.client.accumulo;
-
-import static java.util.Objects.requireNonNull;
-
-import java.util.Date;
-
-import javax.annotation.ParametersAreNonnullByDefault;
-
-import org.apache.accumulo.core.client.AccumuloException;
-import org.apache.accumulo.core.client.AccumuloSecurityException;
-import org.apache.accumulo.core.client.Connector;
-import org.openrdf.sail.Sail;
-import org.openrdf.sail.SailException;
-
-import com.google.common.base.Optional;
-
-import mvm.rya.accumulo.AccumuloRdfConfiguration;
-import mvm.rya.accumulo.instance.AccumuloRyaInstanceDetailsRepository;
-import mvm.rya.api.client.Install;
-import mvm.rya.api.client.InstanceExists;
-import mvm.rya.api.client.RyaClientException;
-import mvm.rya.api.instance.RyaDetails;
-import mvm.rya.api.instance.RyaDetails.EntityCentricIndexDetails;
-import mvm.rya.api.instance.RyaDetails.FreeTextIndexDetails;
-import mvm.rya.api.instance.RyaDetails.GeoIndexDetails;
-import mvm.rya.api.instance.RyaDetails.JoinSelectivityDetails;
-import mvm.rya.api.instance.RyaDetails.PCJIndexDetails;
-import mvm.rya.api.instance.RyaDetails.PCJIndexDetails.FluoDetails;
-import mvm.rya.api.instance.RyaDetails.ProspectorDetails;
-import mvm.rya.api.instance.RyaDetails.TemporalIndexDetails;
-import mvm.rya.api.instance.RyaDetailsRepository;
-import mvm.rya.api.instance.RyaDetailsRepository.AlreadyInitializedException;
-import mvm.rya.api.instance.RyaDetailsRepository.RyaDetailsRepositoryException;
-import mvm.rya.api.persist.RyaDAOException;
-import mvm.rya.indexing.accumulo.ConfigUtils;
-import mvm.rya.indexing.external.PrecomputedJoinIndexerConfig.PrecomputedJoinStorageType;
-import mvm.rya.indexing.external.PrecomputedJoinIndexerConfig.PrecomputedJoinUpdaterType;
-import mvm.rya.rdftriplestore.inference.InferenceEngineException;
-import mvm.rya.sail.config.RyaSailFactory;
-
-/**
- * An Accumulo implementation of the {@link Install} command.
- */
-
-@ParametersAreNonnullByDefault
-public class AccumuloInstall extends AccumuloCommand implements Install {
-
- private final InstanceExists instanceExists;
-
- /**
- * Constructs an instance of {@link AccumuloInstall}.
- *
- * @param connectionDetails - Details about the values that were used to create the connector to the cluster. (not null)
- * @param connector - Provides programatic access to the instance of Accumulo that hosts Rya instance. (not null)
- */
- public AccumuloInstall(final AccumuloConnectionDetails connectionDetails, final Connector connector) {
- super(connectionDetails, connector);
- instanceExists = new AccumuloInstanceExists(connectionDetails, connector);
- }
-
- @Override
- public void install(final String instanceName, final InstallConfiguration installConfig) throws DuplicateInstanceNameException, RyaClientException {
- requireNonNull(instanceName);
- requireNonNull(installConfig);
-
- // Check to see if a Rya instance has already been installed with this name.
- if(instanceExists.exists(instanceName)) {
- throw new DuplicateInstanceNameException("An instance of Rya has already been installed to this Rya storage " +
- "with the name '" + instanceName + "'. Try again with a different name.");
- }
-
- // Initialize the Rya Details table.
- RyaDetails details;
- try {
- details = initializeRyaDetails(instanceName, installConfig);
- } catch (final AlreadyInitializedException e) {
- // This can only happen if somebody else installs an instance of Rya with the name between the check and now.
- throw new DuplicateInstanceNameException("An instance of Rya has already been installed to this Rya storage " +
- "with the name '" + instanceName + "'. Try again with a different name.");
- } catch (final RyaDetailsRepositoryException e) {
- throw new RyaClientException("The RyaDetails couldn't be initialized. Details: " + e.getMessage(), e);
- }
-
- // Initialize the rest of the tables used by the Rya instance.
- final AccumuloRdfConfiguration ryaConfig = makeRyaConfig(getAccumuloConnectionDetails(), details);
- try {
- final Sail ryaSail = RyaSailFactory.getInstance(ryaConfig);
- ryaSail.shutDown();
- } catch (final AccumuloException | AccumuloSecurityException | RyaDAOException | InferenceEngineException e) {
- throw new RyaClientException("Could not initialize all of the tables for the new Rya instance. " +
- "This instance may be left in a bad state.", e);
- } catch (final SailException e) {
- throw new RyaClientException("Problem shutting down the Sail object used to install Rya.", e);
- }
- }
-
- /**
- * @return The version of the application as reported by the manifest.
- */
- private String getVersion() {
- return "" + this.getClass().getPackage().getImplementationVersion();
- }
-
- /**
- * Initializes the {@link RyaDetails} and stores them for the new instance.
- *
- * @param instanceName - The name of the instance that is being created. (not null)
- * @param installConfig - The instance's install configuration. (not null)
- * @return The {@link RyaDetails} that were stored.
- * @throws AlreadyInitializedException Could not be initialized because
- * a table with this instance name has already exists and is holding the details.
- * @throws RyaDetailsRepositoryException Something caused the initialization
- * operation to fail.
- */
- private RyaDetails initializeRyaDetails(final String instanceName, final InstallConfiguration installConfig)
- throws AlreadyInitializedException, RyaDetailsRepositoryException {
- final RyaDetailsRepository detailsRepo = new AccumuloRyaInstanceDetailsRepository(getConnector(), instanceName);
-
- // Build the PCJ Index details.
- final PCJIndexDetails.Builder pcjDetailsBuilder = PCJIndexDetails.builder()
- .setEnabled(installConfig.isPcjIndexEnabled());
- if(installConfig.getFluoPcjAppName().isPresent()) {
- final String fluoPcjAppName = installConfig.getFluoPcjAppName().get();
- pcjDetailsBuilder.setFluoDetails(new FluoDetails( fluoPcjAppName ));
- }
-
- final RyaDetails details = RyaDetails.builder()
- // General Metadata
- .setRyaInstanceName(instanceName)
- .setRyaVersion( getVersion() )
-
- // Secondary Index Values
- .setGeoIndexDetails(
- new GeoIndexDetails(installConfig.isGeoIndexEnabled()))
- .setTemporalIndexDetails(
- new TemporalIndexDetails(installConfig.isTemporalIndexEnabled()))
- .setFreeTextDetails(
- new FreeTextIndexDetails(installConfig.isFreeTextIndexEnabled()))
- .setEntityCentricIndexDetails(
- new EntityCentricIndexDetails(installConfig.isEntityCentrixIndexEnabled()))
- .setPCJIndexDetails( pcjDetailsBuilder )
-
- // Statistics values.
- .setProspectorDetails(
- new ProspectorDetails(Optional.<Date>absent()) )
- .setJoinSelectivityDetails(
- new JoinSelectivityDetails(Optional.<Date>absent()) )
- .build();
-
- // Initialize the table.
- detailsRepo.initialize(details);
-
- return details;
- }
-
- /**
- * Builds a {@link AccumuloRdfConfiguration} object that will be used by the
- * Rya DAO to initialize all of the tables it will need.
- *
- * @param connectionDetails - Indicates how to connect to Accumulo. (not null)
- * @param details - Indicates what needs to be installed. (not null)
- * @return A Rya Configuration object that can be used to perform the install.
- */
- private static AccumuloRdfConfiguration makeRyaConfig(final AccumuloConnectionDetails connectionDetails, final RyaDetails details) {
- final AccumuloRdfConfiguration conf = new AccumuloRdfConfiguration();
-
- // The Rya Instance Name is used as a prefix for the index tables in Accumulo.
- conf.setTablePrefix( details.getRyaInstanceName() );
-
- // Enable the indexers that the instance is configured to use.
- // TODO fix me, not sure why the install command is here.
-// conf.set(ConfigUtils.USE_GEO, "" + details.getGeoIndexDetails().isEnabled() );
- conf.set(ConfigUtils.USE_FREETEXT, "" + details.getFreeTextIndexDetails().isEnabled() );
- conf.set(ConfigUtils.USE_TEMPORAL, "" + details.getTemporalIndexDetails().isEnabled() );
- conf.set(ConfigUtils.USE_ENTITY, "" + details.getEntityCentricIndexDetails().isEnabled());
-
- conf.set(ConfigUtils.USE_PCJ, "" + details.getPCJIndexDetails().isEnabled() );
- conf.set(ConfigUtils.PCJ_STORAGE_TYPE, PrecomputedJoinStorageType.ACCUMULO.toString());
-
- final Optional<FluoDetails> fluoHolder = details.getPCJIndexDetails().getFluoDetails();
- final PrecomputedJoinUpdaterType updaterType = fluoHolder.isPresent() ? PrecomputedJoinUpdaterType.FLUO : PrecomputedJoinUpdaterType.NO_UPDATE;
- conf.set(ConfigUtils.PCJ_UPDATER_TYPE, updaterType.toString());
-
- // XXX The Accumulo implementation of the secondary indices make need all
- // of the accumulo connector's parameters to initialize themselves, so
- // we need to include them here. It would be nice if the secondary
- // indexers used the connector that is provided to them instead of
- // building a new one.
- conf.set(ConfigUtils.CLOUDBASE_USER, connectionDetails.getUsername());
- conf.set(ConfigUtils.CLOUDBASE_PASSWORD, new String(connectionDetails.getPassword()));
- conf.set(ConfigUtils.CLOUDBASE_INSTANCE, connectionDetails.getInstanceName());
- conf.set(ConfigUtils.CLOUDBASE_ZOOKEEPERS, connectionDetails.getZookeepers());
-
- // This initializes the living indexers that will be used by the application and
- // caches them within the configuration object so that they may be used later.
- ConfigUtils.setIndexers(conf);
-
- return conf;
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/44a2dcf0/extras/indexing/src/main/java/mvm/rya/api/client/accumulo/AccumuloInstanceExists.java
----------------------------------------------------------------------
diff --git a/extras/indexing/src/main/java/mvm/rya/api/client/accumulo/AccumuloInstanceExists.java b/extras/indexing/src/main/java/mvm/rya/api/client/accumulo/AccumuloInstanceExists.java
deleted file mode 100644
index 1be7cd8..0000000
--- a/extras/indexing/src/main/java/mvm/rya/api/client/accumulo/AccumuloInstanceExists.java
+++ /dev/null
@@ -1,71 +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 mvm.rya.api.client.accumulo;
-
-import static java.util.Objects.requireNonNull;
-
-import javax.annotation.ParametersAreNonnullByDefault;
-
-import org.apache.accumulo.core.client.Connector;
-import org.apache.accumulo.core.client.admin.TableOperations;
-
-import mvm.rya.accumulo.instance.AccumuloRyaInstanceDetailsRepository;
-import mvm.rya.api.RdfCloudTripleStoreConstants;
-import mvm.rya.api.client.InstanceExists;
-import mvm.rya.api.client.RyaClientException;
-
-/**
- * An Accumulo implementation of the {@link InstanceExists} command.
- */
-@ParametersAreNonnullByDefault
-public class AccumuloInstanceExists extends AccumuloCommand implements InstanceExists {
-
- /**
- * Constructs an insatnce of {@link AccumuloInstanceExists}.
- *
- * @param connectionDetails - Details about the values that were used to create the connector to the cluster. (not null)
- * @param connector - Provides programatic access to the instance of Accumulo that hosts Rya instance. (not null)
- */
- public AccumuloInstanceExists(final AccumuloConnectionDetails connectionDetails, final Connector connector) {
- super(connectionDetails, connector);
- }
-
- @Override
- public boolean exists(final String instanceName) throws RyaClientException {
- requireNonNull( instanceName );
-
- final TableOperations tableOps = getConnector().tableOperations();
-
- // Newer versions of Rya will have a Rya Details table.
- final String ryaDetailsTableName = instanceName + AccumuloRyaInstanceDetailsRepository.INSTANCE_DETAILS_TABLE_NAME;
- if(tableOps.exists(ryaDetailsTableName)) {
- return true;
- }
-
- // However, older versions only have the data tables.
- final String spoTableName = instanceName + RdfCloudTripleStoreConstants.TBL_SPO_SUFFIX;
- final String posTableName = instanceName + RdfCloudTripleStoreConstants.TBL_PO_SUFFIX;
- final String ospTableName = instanceName + RdfCloudTripleStoreConstants.TBL_OSP_SUFFIX;
- if(tableOps.exists(spoTableName) && tableOps.exists(posTableName) && tableOps.exists(ospTableName)) {
- return true;
- }
-
- return false;
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/44a2dcf0/extras/indexing/src/main/java/mvm/rya/api/client/accumulo/AccumuloListInstances.java
----------------------------------------------------------------------
diff --git a/extras/indexing/src/main/java/mvm/rya/api/client/accumulo/AccumuloListInstances.java b/extras/indexing/src/main/java/mvm/rya/api/client/accumulo/AccumuloListInstances.java
deleted file mode 100644
index 86d96b8..0000000
--- a/extras/indexing/src/main/java/mvm/rya/api/client/accumulo/AccumuloListInstances.java
+++ /dev/null
@@ -1,141 +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 mvm.rya.api.client.accumulo;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import javax.annotation.ParametersAreNonnullByDefault;
-
-import org.apache.accumulo.core.client.Connector;
-
-import mvm.rya.api.RdfCloudTripleStoreConstants;
-import mvm.rya.api.client.ListInstances;
-import mvm.rya.api.client.RyaClientException;
-
-/**
- * An Accumulo implementation of the {@link ListInstances} command.
- */
-@ParametersAreNonnullByDefault
-public class AccumuloListInstances extends AccumuloCommand implements ListInstances {
-
- private final Pattern spoPattern = Pattern.compile("(.*)" + RdfCloudTripleStoreConstants.TBL_SPO_SUFFIX);
- private final Pattern ospPattern = Pattern.compile("(.*)" + RdfCloudTripleStoreConstants.TBL_OSP_SUFFIX);
- private final Pattern poPattern = Pattern.compile("(.*)" + RdfCloudTripleStoreConstants.TBL_PO_SUFFIX);
-
- /**
- * Constructs an instance of {@link AccumuloListInstances}.
- *
- * @param connectionDetails - Details about the values that were used to create the connector to the cluster. (not null)
- * @param connector - Provides programatic access to the instance of Accumulo that hosts Rya instance. (not null)
- */
- public AccumuloListInstances(final AccumuloConnectionDetails connectionDetails, final Connector connector) {
- super(connectionDetails, connector);
- }
-
- @Override
- public List<String> listInstances() throws RyaClientException {
- // Figure out what the instance names might be.
- final Map<String, InstanceTablesFound> proposedInstanceNames = new HashMap<>();
-
- for(final String table : getConnector().tableOperations().list()) {
- // SPO table
- final Matcher spoMatcher = spoPattern.matcher(table);
- if(spoMatcher.find()) {
- final String instanceName = spoMatcher.group(1);
- makeOrGetInstanceTables(proposedInstanceNames, instanceName).setSpoFound();
- }
-
- // OSP table
- final Matcher ospMatcher = ospPattern.matcher(table);
- if(ospMatcher.find()) {
- final String instanceName = ospMatcher.group(1);
- makeOrGetInstanceTables(proposedInstanceNames, instanceName).setOspFound();
- }
-
- // PO table
- final Matcher poMatcher = poPattern.matcher(table);
- if(poMatcher.find()) {
- final String instanceName = poMatcher.group(1);
- makeOrGetInstanceTables(proposedInstanceNames, instanceName).setPoFound();
- }
- }
-
- // Determine which of the proposed names fit the expected Rya table structures.
- final List<String> instanceNames = new ArrayList<>();
- for(final Entry<String, InstanceTablesFound> entry : proposedInstanceNames.entrySet()) {
- final InstanceTablesFound tables = entry.getValue();
- if(tables.allFlagsSet()) {
- instanceNames.add(entry.getKey());
- }
- }
-
- return instanceNames;
- }
-
- private InstanceTablesFound makeOrGetInstanceTables(final Map<String, InstanceTablesFound> lookup, final String instanceName) {
- if(!lookup.containsKey(instanceName)) {
- lookup.put(instanceName, new InstanceTablesFound());
- }
- return lookup.get(instanceName);
- }
-
- /**
- * Flags that are used to determine if a String is a Rya Instance name.
- */
- @ParametersAreNonnullByDefault
- private static class InstanceTablesFound {
- private boolean spoFound = false;
- private boolean ospFound = false;
- private boolean poFound = false;
-
- /**
- * Sets the SPO table as seen.
- */
- public void setSpoFound() {
- spoFound = true;
- }
-
- /**
- * Sets the OSP table as seen.
- */
- public void setOspFound() {
- ospFound = true;
- }
-
- /**
- * Sets the POS table as seen.
- */
- public void setPoFound() {
- poFound = true;
- }
-
- /**
- * @return {@code true} if all of the flags have been set; otherwise {@code false}.
- */
- public boolean allFlagsSet() {
- return spoFound && ospFound && poFound;
- }
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/44a2dcf0/extras/indexing/src/main/java/mvm/rya/api/client/accumulo/AccumuloRyaClientFactory.java
----------------------------------------------------------------------
diff --git a/extras/indexing/src/main/java/mvm/rya/api/client/accumulo/AccumuloRyaClientFactory.java b/extras/indexing/src/main/java/mvm/rya/api/client/accumulo/AccumuloRyaClientFactory.java
deleted file mode 100644
index 102f667..0000000
--- a/extras/indexing/src/main/java/mvm/rya/api/client/accumulo/AccumuloRyaClientFactory.java
+++ /dev/null
@@ -1,60 +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 mvm.rya.api.client.accumulo;
-
-import static java.util.Objects.requireNonNull;
-
-import javax.annotation.ParametersAreNonnullByDefault;
-
-import org.apache.accumulo.core.client.Connector;
-
-import mvm.rya.api.client.RyaClient;
-
-/**
- * Constructs instance of {@link RyaClient} that are connected to instance of
- * Rya hosted by Accumulo clusters.
- */
-@ParametersAreNonnullByDefault
-public class AccumuloRyaClientFactory {
-
- /**
- * Initialize a set of {@link RyaClient} that will interact with an instance of
- * Rya that is hosted by an Accumulo cluster.
- *
- * @param connectionDetails - Details about the values that were used to create the connector to the cluster. (not null)
- * @param connector - The Accumulo connector the commands will use. (not null)
- * @return The initialized commands.
- */
- public static RyaClient build(
- final AccumuloConnectionDetails connectionDetails,
- final Connector connector) {
- requireNonNull(connectionDetails);
- requireNonNull(connector);
-
- // Build the RyaCommands option with the initialized commands.
- return new RyaClient(
- new AccumuloInstall(connectionDetails, connector),
- new AccumuloCreatePCJ(connectionDetails, connector),
- new AccumuloDeletePCJ(connectionDetails, connector),
- new AccumuloBatchUpdatePCJ(connectionDetails, connector),
- new AccumuloGetInstanceDetails(connectionDetails, connector),
- new AccumuloInstanceExists(connectionDetails, connector),
- new AccumuloListInstances(connectionDetails, connector));
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/44a2dcf0/extras/indexing/src/main/java/mvm/rya/api/client/accumulo/FluoClientFactory.java
----------------------------------------------------------------------
diff --git a/extras/indexing/src/main/java/mvm/rya/api/client/accumulo/FluoClientFactory.java b/extras/indexing/src/main/java/mvm/rya/api/client/accumulo/FluoClientFactory.java
deleted file mode 100644
index 0c6c2f1..0000000
--- a/extras/indexing/src/main/java/mvm/rya/api/client/accumulo/FluoClientFactory.java
+++ /dev/null
@@ -1,72 +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 mvm.rya.api.client.accumulo;
-
-import static java.util.Objects.requireNonNull;
-
-import javax.annotation.ParametersAreNonnullByDefault;
-
-import org.apache.fluo.api.client.FluoClient;
-import org.apache.fluo.api.client.FluoFactory;
-import org.apache.fluo.api.config.FluoConfiguration;
-
-/**
- * Creates {@link FluoClient}s that are connected to a specific Fluo Application.
- */
-@ParametersAreNonnullByDefault
-public class FluoClientFactory {
-
- /**
- * Create a {@link FluoClient} that uses the provided connection details.
- *
- * @param username - The username the connection will use. (not null)
- * @param password - The password the connection will use. (not null)
- * @param instanceName - The name of the Accumulo instance. (not null)
- * @param zookeeperHostnames - A comma delimited list of the Zookeeper server hostnames. (not null)
- * @param fluoAppName - The Fluo Application the client will be connected to. (not null)
- * @return A {@link FluoClient} that may be used to access the Fluo Application.
- */
- public FluoClient connect(
- final String username,
- final String password,
- final String instanceName,
- final String zookeeperHostnames,
- final String fluoAppName) {
- requireNonNull(username);
- requireNonNull(password);
- requireNonNull(instanceName);
- requireNonNull(zookeeperHostnames);
- requireNonNull(fluoAppName);
-
- final FluoConfiguration fluoConfig = new FluoConfiguration();
-
- // Fluo configuration values.
- fluoConfig.setApplicationName( fluoAppName );
- fluoConfig.setInstanceZookeepers( zookeeperHostnames + "/fluo" );
-
- // Accumulo Connection Stuff.
- fluoConfig.setAccumuloZookeepers( zookeeperHostnames );
- fluoConfig.setAccumuloInstance( instanceName );
- fluoConfig.setAccumuloUser( username );
- fluoConfig.setAccumuloPassword( password );
-
- // Connect the client.
- return FluoFactory.newClient(fluoConfig);
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/44a2dcf0/extras/indexing/src/main/java/mvm/rya/indexing/DocIdIndexer.java
----------------------------------------------------------------------
diff --git a/extras/indexing/src/main/java/mvm/rya/indexing/DocIdIndexer.java b/extras/indexing/src/main/java/mvm/rya/indexing/DocIdIndexer.java
deleted file mode 100644
index 21d5de7..0000000
--- a/extras/indexing/src/main/java/mvm/rya/indexing/DocIdIndexer.java
+++ /dev/null
@@ -1,47 +0,0 @@
-package mvm.rya.indexing;
-
-/*
- * 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.
- */
-
-
-import info.aduna.iteration.CloseableIteration;
-
-import java.io.Closeable;
-import java.io.IOException;
-import java.util.Collection;
-
-import mvm.rya.indexing.accumulo.entity.StarQuery;
-
-import org.apache.accumulo.core.client.TableNotFoundException;
-import org.openrdf.query.BindingSet;
-import org.openrdf.query.QueryEvaluationException;
-
-public interface DocIdIndexer extends Closeable {
-
-
-
- public abstract CloseableIteration<BindingSet, QueryEvaluationException> queryDocIndex(StarQuery query,
- Collection<BindingSet> constraints) throws TableNotFoundException, QueryEvaluationException;
-
-
-
- @Override
- public abstract void close() throws IOException;
-
-}