/**
* 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.metamodel.hbase;
import java.io.Serializable;
import java.util.List;
import org.apache.metamodel.schema.ColumnType;
import org.apache.metamodel.util.BaseObject;
import org.apache.metamodel.util.SimpleTableDef;
/**
* Represents the configuration of MetaModel's HBase adaptor.
*/
public class HBaseConfiguration extends BaseObject implements Serializable {
private static final long serialVersionUID = 1L;
public static final String DEFAULT_SCHEMA_NAME = "HBase";
public static final String DEFAULT_ZOOKEEPER_HOSTNAME = "127.0.0.1";
public static final int DEFAULT_ZOOKEEPER_PORT = 2181;
public static final int DEFAULT_HBASE_CLIENT_RETRIES = 1;
public static final int DEFAULT_ZOOKEEPER_SESSION_TIMEOUT = 5000;
public static final int DEFAULT_ZOOKEEPER_RECOVERY_RETRIES = 1;
private final String _schemaName;
private final int _zookeeperPort;
private final String _zookeeperHostname;
private final SimpleTableDef[] _tableDefinitions;
private final ColumnType _defaultRowKeyType;
private final int _hbaseClientRetries;
private final int _zookeeperSessionTimeout;
private final int _zookeeperRecoveryRetries;
/**
* Creates a {@link HBaseConfiguration} using default values.
*/
public HBaseConfiguration() {
this(DEFAULT_ZOOKEEPER_HOSTNAME, DEFAULT_ZOOKEEPER_PORT);
}
public HBaseConfiguration(String zookeeperHostname, int zookeeperPort) {
this(DEFAULT_SCHEMA_NAME, zookeeperHostname, zookeeperPort, null, ColumnType.BINARY);
}
public HBaseConfiguration(String zookeeperHostname, int zookeeperPort, ColumnType defaultRowKeyType) {
this(DEFAULT_SCHEMA_NAME, zookeeperHostname, zookeeperPort, null, defaultRowKeyType);
}
/**
* Creates a {@link HBaseConfiguration} using detailed configuration
* properties.
*
* @param schemaName
* @param zookeeperHostname
* @param zookeeperPort
* @param tableDefinitions
* @param defaultRowKeyType
*/
public HBaseConfiguration(String schemaName, String zookeeperHostname, int zookeeperPort,
SimpleTableDef[] tableDefinitions, ColumnType defaultRowKeyType) {
this(schemaName, zookeeperHostname, zookeeperPort, tableDefinitions, defaultRowKeyType,
DEFAULT_HBASE_CLIENT_RETRIES, DEFAULT_ZOOKEEPER_SESSION_TIMEOUT, DEFAULT_ZOOKEEPER_RECOVERY_RETRIES);
}
/**
* Creates a {@link HBaseConfiguration} using detailed configuration
* properties.
*
* @param schemaName
* @param zookeeperHostname
* @param zookeeperPort
* @param tableDefinitions
* @param defaultRowKeyType
* @param hbaseClientRetries
* @param zookeeperSessionTimeout
* @param zookeeperRecoveryRetries
*/
public HBaseConfiguration(String schemaName, String zookeeperHostname, int zookeeperPort,
SimpleTableDef[] tableDefinitions, ColumnType defaultRowKeyType, int hbaseClientRetries,
int zookeeperSessionTimeout, int zookeeperRecoveryRetries) {
_schemaName = schemaName;
_zookeeperHostname = zookeeperHostname;
_zookeeperPort = zookeeperPort;
_tableDefinitions = tableDefinitions;
_defaultRowKeyType = defaultRowKeyType;
_hbaseClientRetries = hbaseClientRetries;
_zookeeperSessionTimeout = zookeeperSessionTimeout;
_zookeeperRecoveryRetries = zookeeperRecoveryRetries;
}
public String getSchemaName() {
return _schemaName;
}
public String getZookeeperHostname() {
return _zookeeperHostname;
}
public int getZookeeperPort() {
return _zookeeperPort;
}
public SimpleTableDef[] getTableDefinitions() {
return _tableDefinitions;
}
public ColumnType getDefaultRowKeyType() {
return _defaultRowKeyType;
}
@Override
protected void decorateIdentity(List<Object> list) {
list.add(_schemaName);
list.add(_zookeeperHostname);
list.add(_zookeeperPort);
list.add(_tableDefinitions);
list.add(_defaultRowKeyType);
}
public int getHBaseClientRetries() {
return _hbaseClientRetries;
}
public int getZookeeperSessionTimeout() {
return _zookeeperSessionTimeout;
}
public int getZookeeperRecoveryRetries() {
return _zookeeperRecoveryRetries;
}
}