| /* |
| * Copyright 2016-present Open Networking Laboratory |
| * |
| * Licensed 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.onosproject.store.service; |
| |
| import java.util.Map; |
| import java.util.NavigableMap; |
| import java.util.NavigableSet; |
| |
| /** |
| * Tree map interface counterpart to {@link AsyncConsistentTreeMap}. |
| */ |
| public interface ConsistentTreeMap<V> extends ConsistentMap<String, V> { |
| |
| /** |
| * Returns the lowest key in the map. |
| * |
| * @return the key or null if none exist |
| */ |
| String firstKey(); |
| |
| /** |
| * Returns the highest key in the map. |
| * |
| * @return the key or null if none exist |
| */ |
| String lastKey(); |
| |
| /** |
| * Returns the entry associated with the least key greater than or equal to the key. |
| * |
| * @param key the key |
| * @return the entry or null |
| */ |
| Map.Entry<String, Versioned<V>> ceilingEntry(String key); |
| |
| /** |
| * Returns the entry associated with the greatest key less than or equal to key. |
| * |
| * @param key the key |
| * @return the entry or null |
| */ |
| Map.Entry<String, Versioned<V>> floorEntry(String key); |
| |
| /** |
| * Returns the entry associated with the lest key greater than key. |
| * |
| * @param key the key |
| * @return the entry or null |
| */ |
| Map.Entry<String, Versioned<V>> higherEntry(String key); |
| |
| /** |
| * Returns the entry associated with the largest key less than key. |
| * |
| * @param key the key |
| * @return the entry or null |
| */ |
| Map.Entry<String, Versioned<V>> lowerEntry(String key); |
| |
| /** |
| * Returns the entry associated with the lowest key in the map. |
| * |
| * @return the entry or null |
| */ |
| Map.Entry<String, Versioned<V>> firstEntry(); |
| |
| /** |
| * Returns the entry associated with the highest key in the map. |
| * |
| * @return the entry or null |
| */ |
| Map.Entry<String, Versioned<V>> lastEntry(); |
| |
| /** |
| * Returns and removes the entry associated with the lowest key. |
| * |
| * @return the entry or null |
| */ |
| Map.Entry<String, Versioned<V>> pollFirstEntry(); |
| |
| /** |
| * Returns and removes the entry associated with the highest key. |
| * |
| * @return the entry or null |
| */ |
| Map.Entry<String, Versioned<V>> pollLastEntry(); |
| |
| /** |
| * Returns the entry associated with the greatest key less than key. |
| * |
| * @param key the key |
| * @return the entry or null |
| */ |
| String lowerKey(String key); |
| |
| /** |
| * Returns the entry associated with the highest key less than or equal to key. |
| * |
| * @param key the key |
| * @return the entry or null |
| */ |
| String floorKey(String key); |
| |
| /** |
| * Returns the lowest key greater than or equal to key. |
| * |
| * @param key the key |
| * @return the key or null |
| */ |
| String ceilingKey(String key); |
| |
| /** |
| * Returns the lowest key greater than key. |
| * |
| * @param key the key |
| * @return the key or null |
| */ |
| String higherKey(String key); |
| |
| /** |
| * Returns a navigable set of the keys in this map. |
| * |
| * @return a navigable key set |
| */ |
| NavigableSet<String> navigableKeySet(); |
| |
| /** |
| * Returns a navigable map containing the entries from the original map |
| * which are larger than (or if specified equal to) {@code lowerKey} AND |
| * less than (or if specified equal to) {@code upperKey}. |
| * |
| * @param upperKey the upper bound for the keys in this map |
| * @param lowerKey the lower bound for the keys in this map |
| * @param inclusiveUpper whether keys equal to the upperKey should be |
| * included |
| * @param inclusiveLower whether keys equal to the lowerKey should be |
| * included |
| * @return a navigable map containing entries in the specified range (this |
| * may be empty) |
| */ |
| NavigableMap<String, V> subMap(String upperKey, |
| String lowerKey, |
| boolean inclusiveUpper, |
| boolean inclusiveLower); |
| |
| } |