| /* |
| * 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.accumulo.core.client.admin; |
| |
| import java.util.EnumSet; |
| import java.util.Map; |
| import java.util.Map.Entry; |
| import java.util.SortedSet; |
| |
| import org.apache.accumulo.core.client.AccumuloException; |
| import org.apache.accumulo.core.client.AccumuloSecurityException; |
| import org.apache.accumulo.core.client.IteratorSetting; |
| import org.apache.accumulo.core.client.NamespaceExistsException; |
| import org.apache.accumulo.core.client.NamespaceNotEmptyException; |
| import org.apache.accumulo.core.client.NamespaceNotFoundException; |
| import org.apache.accumulo.core.iterators.IteratorUtil.IteratorScope; |
| |
| /** |
| * Provides an API for administering namespaces |
| * |
| * All tables exist in a namespace. The default namespace has no name, and is used if an explicit |
| * namespace is not specified. Fully qualified table names look like "namespaceName.tableName". |
| * Tables in the default namespace are fully qualified simply as "tableName". |
| * |
| * @since 1.6.0 |
| */ |
| public interface NamespaceOperations { |
| |
| /** |
| * Returns the name of the system reserved namespace |
| * |
| * @return the name of the system namespace |
| * @since 1.6.0 |
| */ |
| String systemNamespace(); |
| |
| /** |
| * Returns the name of the default namespace |
| * |
| * @return the name of the default namespace |
| * @since 1.6.0 |
| */ |
| String defaultNamespace(); |
| |
| /** |
| * Retrieve a list of namespaces in Accumulo. |
| * |
| * @return List of namespaces in accumulo |
| * @throws AccumuloException |
| * if a general error occurs |
| * @throws AccumuloSecurityException |
| * if the user does not have permission |
| * @since 1.6.0 |
| */ |
| SortedSet<String> list() throws AccumuloException, AccumuloSecurityException; |
| |
| /** |
| * A method to check if a namespace exists in Accumulo. |
| * |
| * @param namespace |
| * the name of the namespace |
| * @return true if the namespace exists |
| * @throws AccumuloException |
| * if a general error occurs |
| * @throws AccumuloSecurityException |
| * if the user does not have permission |
| * @since 1.6.0 |
| */ |
| boolean exists(String namespace) throws AccumuloException, AccumuloSecurityException; |
| |
| /** |
| * Create an empty namespace with no initial configuration. Valid names for a namespace contain |
| * letters, numbers, and the underscore character. |
| * |
| * @param namespace |
| * the name of the namespace |
| * @throws AccumuloException |
| * if a general error occurs |
| * @throws AccumuloSecurityException |
| * if the user does not have permission |
| * @throws NamespaceExistsException |
| * if the specified namespace already exists |
| * @since 1.6.0 |
| */ |
| void create(String namespace) |
| throws AccumuloException, AccumuloSecurityException, NamespaceExistsException; |
| |
| /** |
| * Delete an empty namespace |
| * |
| * @param namespace |
| * the name of the namespace |
| * @throws AccumuloException |
| * if a general error occurs |
| * @throws AccumuloSecurityException |
| * if the user does not have permission |
| * @throws NamespaceNotFoundException |
| * if the specified namespace doesn't exist |
| * @throws NamespaceNotEmptyException |
| * if the namespaces still contains tables |
| * @since 1.6.0 |
| */ |
| void delete(String namespace) throws AccumuloException, AccumuloSecurityException, |
| NamespaceNotFoundException, NamespaceNotEmptyException; |
| |
| /** |
| * Rename a namespace |
| * |
| * @param oldNamespaceName |
| * the old namespace name |
| * @param newNamespaceName |
| * the new namespace name |
| * @throws AccumuloException |
| * if a general error occurs |
| * @throws AccumuloSecurityException |
| * if the user does not have permission |
| * @throws NamespaceNotFoundException |
| * if the old namespace does not exist |
| * @throws NamespaceExistsException |
| * if the new namespace already exists |
| * @since 1.6.0 |
| */ |
| void rename(String oldNamespaceName, String newNamespaceName) throws AccumuloException, |
| AccumuloSecurityException, NamespaceNotFoundException, NamespaceExistsException; |
| |
| /** |
| * Sets a property on a namespace which applies to all tables in the namespace. Note that it may |
| * take a few seconds to propagate the change everywhere. |
| * |
| * @param namespace |
| * the name of the namespace |
| * @param property |
| * the name of a per-table property |
| * @param value |
| * the value to set a per-table property to |
| * @throws AccumuloException |
| * if a general error occurs |
| * @throws AccumuloSecurityException |
| * if the user does not have permission |
| * @throws NamespaceNotFoundException |
| * if the specified namespace doesn't exist |
| * @since 1.6.0 |
| */ |
| void setProperty(String namespace, String property, String value) |
| throws AccumuloException, AccumuloSecurityException, NamespaceNotFoundException; |
| |
| /** |
| * Removes a property from a namespace. Note that it may take a few seconds to propagate the |
| * change everywhere. |
| * |
| * @param namespace |
| * the name of the namespace |
| * @param property |
| * the name of a per-table property |
| * @throws AccumuloException |
| * if a general error occurs |
| * @throws AccumuloSecurityException |
| * if the user does not have permission |
| * @throws NamespaceNotFoundException |
| * if the specified namespace doesn't exist |
| * @since 1.6.0 |
| */ |
| void removeProperty(String namespace, String property) |
| throws AccumuloException, AccumuloSecurityException, NamespaceNotFoundException; |
| |
| /** |
| * Gets properties of a namespace, which are inherited by tables in this namespace. Note that |
| * recently changed properties may not be available immediately. |
| * |
| * @param namespace |
| * the name of the namespace |
| * @return all properties visible by this namespace (system and per-table properties). Note that |
| * recently changed properties may not be visible immediately. |
| * @throws AccumuloException |
| * if a general error occurs |
| * @throws AccumuloSecurityException |
| * if the user does not have permission |
| * @throws NamespaceNotFoundException |
| * if the specified namespace doesn't exist |
| * @since 1.6.0 |
| */ |
| Iterable<Entry<String,String>> getProperties(String namespace) |
| throws AccumuloException, AccumuloSecurityException, NamespaceNotFoundException; |
| |
| /** |
| * Get a mapping of namespace name to internal namespace id. |
| * |
| * @return the map from namespace name to internal namespace id |
| * @throws AccumuloException |
| * if a general error occurs |
| * @throws AccumuloSecurityException |
| * if the user does not have permission |
| * @since 1.6.0 |
| */ |
| Map<String,String> namespaceIdMap() throws AccumuloException, AccumuloSecurityException; |
| |
| /** |
| * Add an iterator to a namespace on all scopes. |
| * |
| * @param namespace |
| * the name of the namespace |
| * @param setting |
| * object specifying the properties of the iterator |
| * @throws AccumuloException |
| * if a general error occurs |
| * @throws AccumuloSecurityException |
| * if the user does not have permission |
| * @throws NamespaceNotFoundException |
| * if the specified namespace doesn't exist |
| * @since 1.6.0 |
| */ |
| void attachIterator(String namespace, IteratorSetting setting) |
| throws AccumuloException, AccumuloSecurityException, NamespaceNotFoundException; |
| |
| /** |
| * Add an iterator to a namespace on the given scopes. |
| * |
| * @param namespace |
| * the name of the namespace |
| * @param setting |
| * object specifying the properties of the iterator |
| * @param scopes |
| * the set of scopes the iterator should apply to |
| * @throws AccumuloException |
| * if a general error occurs |
| * @throws AccumuloSecurityException |
| * if the user does not have permission |
| * @throws NamespaceNotFoundException |
| * if the specified namespace doesn't exist |
| * @since 1.6.0 |
| */ |
| void attachIterator(String namespace, IteratorSetting setting, EnumSet<IteratorScope> scopes) |
| throws AccumuloException, AccumuloSecurityException, NamespaceNotFoundException; |
| |
| /** |
| * Remove an iterator from a namespace by name. |
| * |
| * @param namespace |
| * the name of the namespace |
| * @param name |
| * the name of the iterator |
| * @param scopes |
| * the scopes of the iterator |
| * @throws AccumuloException |
| * if a general error occurs |
| * @throws AccumuloSecurityException |
| * if the user does not have permission |
| * @throws NamespaceNotFoundException |
| * if the specified namespace doesn't exist |
| * @since 1.6.0 |
| */ |
| void removeIterator(String namespace, String name, EnumSet<IteratorScope> scopes) |
| throws AccumuloException, AccumuloSecurityException, NamespaceNotFoundException; |
| |
| /** |
| * Get the settings for an iterator. |
| * |
| * @param namespace |
| * the name of the namespace |
| * @param name |
| * the name of the iterator |
| * @param scope |
| * the scope of the iterator |
| * @return the settings for this iterator |
| * @throws AccumuloException |
| * if a general error occurs |
| * @throws AccumuloSecurityException |
| * if the user does not have permission |
| * @throws NamespaceNotFoundException |
| * if the specified namespace doesn't exist |
| * @since 1.6.0 |
| */ |
| IteratorSetting getIteratorSetting(String namespace, String name, IteratorScope scope) |
| throws AccumuloException, AccumuloSecurityException, NamespaceNotFoundException; |
| |
| /** |
| * Get a list of iterators for this namespace. |
| * |
| * @param namespace |
| * the name of the namespace |
| * @return a set of iterator names |
| * @throws AccumuloException |
| * if a general error occurs |
| * @throws AccumuloSecurityException |
| * if the user does not have permission |
| * @throws NamespaceNotFoundException |
| * if the specified namespace doesn't exist |
| * @since 1.6.0 |
| */ |
| Map<String,EnumSet<IteratorScope>> listIterators(String namespace) |
| throws AccumuloException, AccumuloSecurityException, NamespaceNotFoundException; |
| |
| /** |
| * Check whether a given iterator configuration conflicts with existing configuration; in |
| * particular, determine if the name or priority are already in use for the specified scopes. If |
| * so, an IllegalArgumentException is thrown, wrapped in an AccumuloException. |
| * |
| * @param namespace |
| * the name of the namespace |
| * @param setting |
| * object specifying the properties of the iterator |
| * @param scopes |
| * the scopes of the iterator |
| * @throws AccumuloException |
| * if a general error occurs |
| * @throws AccumuloSecurityException |
| * if the user does not have permission |
| * @throws NamespaceNotFoundException |
| * if the specified namespace doesn't exist |
| * @since 1.6.0 |
| */ |
| void checkIteratorConflicts(String namespace, IteratorSetting setting, |
| EnumSet<IteratorScope> scopes) |
| throws AccumuloException, AccumuloSecurityException, NamespaceNotFoundException; |
| |
| /** |
| * Add a new constraint to a namespace. |
| * |
| * @param namespace |
| * the name of the namespace |
| * @param constraintClassName |
| * the full name of the constraint class |
| * @return the unique id number assigned to the constraint |
| * @throws AccumuloException |
| * if a general error occurs |
| * @throws AccumuloSecurityException |
| * if the user does not have permission |
| * @throws NamespaceNotFoundException |
| * if the specified namespace doesn't exist |
| * @since 1.6.0 |
| */ |
| int addConstraint(String namespace, String constraintClassName) |
| throws AccumuloException, AccumuloSecurityException, NamespaceNotFoundException; |
| |
| /** |
| * Remove a constraint from a namespace. |
| * |
| * @param namespace |
| * the name of the namespace |
| * @param id |
| * the unique id number assigned to the constraint |
| * @throws AccumuloException |
| * if a general error occurs |
| * @throws AccumuloSecurityException |
| * if the user does not have permission |
| * @throws NamespaceNotFoundException |
| * if the specified namespace doesn't exist |
| * @since 1.6.0 |
| */ |
| void removeConstraint(String namespace, int id) |
| throws AccumuloException, AccumuloSecurityException, NamespaceNotFoundException; |
| |
| /** |
| * List constraints on a namespace with their assigned numbers. |
| * |
| * @param namespace |
| * the name of the namespace |
| * @return a map from constraint class name to assigned number |
| * @throws AccumuloException |
| * if a general error occurs |
| * @throws AccumuloSecurityException |
| * if the user does not have permission |
| * @throws NamespaceNotFoundException |
| * if the specified namespace doesn't exist |
| * @since 1.6.0 |
| */ |
| Map<String,Integer> listConstraints(String namespace) |
| throws AccumuloException, AccumuloSecurityException, NamespaceNotFoundException; |
| |
| /** |
| * Test to see if the instance can load the given class as the given type. This check uses the |
| * table classpath property if it is set. |
| * |
| * @param namespace |
| * the name of the namespace |
| * @param className |
| * the class to try to load |
| * @param asTypeName |
| * the interface or superclass the given class is attempted to load as |
| * @return true if the instance can load the given class as the given type, false otherwise |
| * @throws AccumuloException |
| * if a general error occurs |
| * @throws AccumuloSecurityException |
| * if the user does not have permission |
| * @throws NamespaceNotFoundException |
| * if the specified namespace doesn't exist |
| * @since 1.6.0 |
| */ |
| boolean testClassLoad(String namespace, String className, String asTypeName) |
| throws AccumuloException, AccumuloSecurityException, NamespaceNotFoundException; |
| } |