blob: 528cb15252c98d1ff8a2d6ae5b9ad5d49685aa81 [file] [log] [blame]
/*
* 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.indexing.external.fluo;
import static com.google.common.base.Preconditions.checkNotNull;
import org.apache.hadoop.conf.Configuration;
import org.apache.rya.api.RdfCloudTripleStoreConfiguration;
import org.apache.rya.indexing.accumulo.ConfigUtils;
import com.google.common.base.Optional;
/**
* Configuration values required to initialize a {@link FluoPcjUpdater}.
*/
public final class FluoPcjUpdaterConfig {
// Defines which Fluo application is running for this instance of Rya.
public static final String FLUO_APP_NAME = ConfigUtils.FLUO_APP_NAME;
// Values that define which Accumulo instance hosts the Fluo application's table.
public static final String ACCUMULO_ZOOKEEPERS = ConfigUtils.CLOUDBASE_ZOOKEEPERS;
public static final String ACCUMULO_INSTANCE = ConfigUtils.CLOUDBASE_INSTANCE;
public static final String ACCUMULO_USERNAME = ConfigUtils.CLOUDBASE_USER;
public static final String ACCUMULO_PASSWORD = ConfigUtils.CLOUDBASE_PASSWORD;
// Values that define the visibilities associated with statement that are inserted by the fluo updater.
public static final String STATEMENT_VISIBILITY = RdfCloudTripleStoreConfiguration.CONF_QUERY_AUTH;
// The configuration object that is provided to Secondary Indexing implementations.
private final Configuration config;
/**
* Constructs an instance of {@link FluoPcjUpdaterConfig}.
*
* @param config - The configuration values that will be interpreted. (not null)
*/
public FluoPcjUpdaterConfig(final Configuration config) {
this.config = checkNotNull(config);
}
/**
* @return The name of the Fluo Application this instance of RYA is
* using to incrementally update PCJs.
*/
public Optional<String> getFluoAppName() {
return Optional.fromNullable(config.get(FLUO_APP_NAME));
}
/**
* This value is the {@link #getAccumuloInstance()} value appended with the
* "/fluo" namespace.
*
* @return The zookeepers that are used to manage Fluo state. ({@code null}
* if not configured)
*/
public Optional<String> getFluoZookeepers() {
final Optional<String> accumuloZookeepers = getAccumuloZookeepers();
if(!accumuloZookeepers.isPresent()) {
return Optional.absent();
}
return Optional.of( accumuloZookeepers.get() + "/fluo" );
}
/**
* @return The zookeepers used to connect to the Accumulo instance that
* is storing the state of the Fluo Application.
*/
public Optional<String> getAccumuloZookeepers() {
return Optional.fromNullable(config.get(ACCUMULO_ZOOKEEPERS));
}
/**
* @return The instance name of the Accumulo instance that is storing
* the state of the Fluo Application.
*/
public Optional<String> getAccumuloInstance() {
return Optional.fromNullable(config.get(ACCUMULO_INSTANCE));
}
/**
* @return The username the indexer will authenticate when connecting
* to the Accumulo instance that stores the state of the Fluo Application.
*/
public Optional<String> getAccumuloUsername() {
return Optional.fromNullable(config.get(ACCUMULO_USERNAME));
}
/**
* @return The password the indexer will authenticate when connecting
* to the Accumulo instance that stores the state of the Fluo Application.
*/
public Optional<String> getAccumuloPassword() {
return Optional.fromNullable(config.get(ACCUMULO_PASSWORD));
}
/**
* @return The visibility labels that will be attached to the statements
* that are inserted into the Fluo Application.
*/
public Optional<String> getStatementVisibility() {
return Optional.fromNullable(config.get(STATEMENT_VISIBILITY));
}
}