package mil.nga.giat.geowave.datastore.bigtable.operations.config; import org.apache.hadoop.hbase.HConstants; import com.beust.jcommander.Parameter; import com.beust.jcommander.ParametersDelegate; import mil.nga.giat.geowave.core.store.BaseDataStoreOptions; import mil.nga.giat.geowave.core.store.StoreFactoryFamilySpi; import mil.nga.giat.geowave.core.store.StoreFactoryOptions; import mil.nga.giat.geowave.datastore.bigtable.BigTableStoreFactoryFamily; import mil.nga.giat.geowave.datastore.hbase.HBaseStoreFactoryFamily; import mil.nga.giat.geowave.datastore.hbase.operations.config.HBaseOptions; public class BigTableOptions extends StoreFactoryOptions { public static final String DEFAULT_PROJECT_ID = "geowave-bigtable-project-id"; public static final String DEFAULT_INSTANCE_ID = "geowave-bigtable-instance-id"; @Parameter(names = "--scanCacheSize") protected int scanCacheSize = HConstants.DEFAULT_HBASE_CLIENT_SCANNER_CACHING; @Parameter(names = "--projectId") protected String projectId = DEFAULT_PROJECT_ID; @Parameter(names = "--instanceId") protected String instanceId = DEFAULT_INSTANCE_ID; private final HBaseOptions internalHBaseOptions = new InternalHBaseOptions(); @ParametersDelegate private final BaseDataStoreOptions additionalOptions = new BaseDataStoreOptions(); @Override public StoreFactoryFamilySpi getStoreFactory() { return new BigTableStoreFactoryFamily(); } public String getProjectId() { return projectId; } public void setProjectId( final String projectId ) { this.projectId = projectId; } public String getInstanceId() { return instanceId; } public void setInstanceId( final String instanceId ) { this.instanceId = instanceId; } public HBaseOptions getHBaseOptions() { return internalHBaseOptions; } private class InternalHBaseOptions extends HBaseOptions { public InternalHBaseOptions() { super(); // all the necessary methods are overridden, but just to be extra // explicit setBigTable(true); setBigTable(true); } @Override public boolean isServerSideDisabled() { return true; } @Override public boolean isBigTable() { return true; } @Override public int getScanCacheSize() { return BigTableOptions.this.scanCacheSize; } @Override public boolean isEnableCustomFilters() { return false; } @Override public boolean isEnableCoprocessors() { return false; } @Override public boolean isVerifyCoprocessors() { return false; } // delegate other methods to the BigTable's additional options @Override public boolean isPersistDataStatistics() { return additionalOptions.isPersistDataStatistics(); } @Override public void setPersistDataStatistics( final boolean persistDataStatistics ) { additionalOptions.setPersistDataStatistics(persistDataStatistics); } @Override public boolean isPersistAdapter() { return additionalOptions.isPersistAdapter(); } @Override public void setPersistAdapter( final boolean persistAdapter ) { additionalOptions.setPersistAdapter(persistAdapter); } @Override public boolean isPersistIndex() { return additionalOptions.isPersistIndex(); } @Override public void setPersistIndex( final boolean persistIndex ) { additionalOptions.setPersistIndex(persistIndex); } @Override public boolean isCreateTable() { return additionalOptions.isCreateTable(); } @Override public void setCreateTable( final boolean createTable ) { additionalOptions.setCreateTable(createTable); } @Override public boolean isUseAltIndex() { return additionalOptions.isUseAltIndex(); } @Override public void setUseAltIndex( final boolean useAltIndex ) { additionalOptions.setUseAltIndex(useAltIndex); } @Override public boolean isEnableBlockCache() { return additionalOptions.isEnableBlockCache(); } @Override public void setEnableBlockCache( final boolean enableBlockCache ) { additionalOptions.setEnableBlockCache(enableBlockCache); } } }