org.ozoneDB.collections
Class AbstractOzoneMap

java.lang.Object
  extended byorg.ozoneDB.OzoneObject
      extended byorg.ozoneDB.collections.AbstractOzoneMap
All Implemented Interfaces:
java.util.Map, org.ozoneDB.OzoneCompatible, org.ozoneDB.OzoneCompatibleOrProxy, OzoneMap, org.ozoneDB.OzoneRemote, java.io.Serializable
Direct Known Subclasses:
_BaseTreeMap_SubMapImpl, BaseTreeMapImpl

public abstract class AbstractOzoneMap
extends org.ozoneDB.OzoneObject
implements OzoneMap

An abstract implementation of Map to make it easier to create your own implementations. In order to create an unmodifiable Map, subclass AbstractMap and implement the entrySet (usually via an AbstractSet). To make it modifiable, also implement put, and have entrySet().iterator() support remove.

It is recommended that classes which extend this support at least the no-argument constructor, and a constructor which accepts another Map. Further methods in this class may be overridden if you have a more efficient implementation.

Author:
Original author unknown, Bryce McKinlay, Eric Blake , Leo Mekenkamp (mind the anti-sp@m) (adaptation for ozone)
See Also:
AbstractMap, Serialized Form

Nested Class Summary
 
Nested classes inherited from class java.util.Map
java.util.Map.Entry
 
Field Summary
protected  java.util.Set keys
          property for keySet().
protected  java.util.Collection values
          property for values().
 
Constructor Summary
protected AbstractOzoneMap()
          The main constructor, for use by subclasses.
 
Method Summary
 void clear()
          Remove all entries from this Map (optional operation).
protected  java.lang.Object clone()
          Create a shallow copy of this Map, no keys or values are copied.
 boolean containsKey(java.lang.Object key)
          Returns true if this contains a mapping for the given key.
 boolean containsValue(java.lang.Object value)
          Returns true if this contains at least one mapping with the given value.
abstract  java.util.Set entrySet()
          Returns a set view of the mappings in this Map.
 boolean equals(java.lang.Object o)
          Compares the specified object with this map for equality.
 java.lang.Object get(java.lang.Object key)
          Returns the value mapped by the given key.
 int hashCode()
          Returns the hash code for this map.
 boolean isEmpty()
          Returns true if the map contains no mappings.
 java.util.Set keySet()
          Returns a set view of this map's keys.
 OzoneSet ozoneEntrySet()
          Basically nothing more than a typecasted call to entrySet(), as an entry set is an ozone objects ifself.
 OzoneSet ozoneKeySet()
          Basically nothing more than a typecasted call to keySet(), as key sets are ozone objects themselves.
 OzoneCollection ozoneValues()
          Basically nothing more than a typecasted call to values(), as the values collection is am ozone object itself.
 java.lang.Object put(java.lang.Object key, java.lang.Object value)
          Associates the given key to the given value (optional operation).
 void putAll(java.util.Map m)
          Copies all entries of the given map to this one (optional operation).
 java.lang.Object remove(java.lang.Object key)
          Removes the mapping for this key if present (optional operation).
 int size()
          Returns the number of key-value mappings in the map.
 java.lang.String toString()
          Returns a String representation of this map.
 java.util.Collection values()
          Returns a collection or bag view of this map's values.
 
Methods inherited from class org.ozoneDB.OzoneObject
container, database, deleteRecursive, getHandle, getObjectID, handle, onActivate, onCreate, onDelete, onPassivate, requireWriteLocking, self, setContainer, toXML
 
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface org.ozoneDB.collections.OzoneMap
getClientMap
 
Methods inherited from interface org.ozoneDB.OzoneCompatibleOrProxy
getObjectID
 

Field Detail

keys

protected java.util.Set keys
property for keySet().


values

protected java.util.Collection values
property for values().

Constructor Detail

AbstractOzoneMap

protected AbstractOzoneMap()
The main constructor, for use by subclasses.

Method Detail

clear

public void clear()
Remove all entries from this Map (optional operation). This default implementation calls entrySet().clear(). NOTE: If the entry set does not permit clearing, then this will fail, too. Subclasses often override this for efficiency. Your implementation of entrySet() should not call AbstractMap.clear unless you want an infinite loop.

Specified by:
clear in interface OzoneMap
Throws:
java.lang.UnsupportedOperationException - if entrySet().clear() does not support clearing.
See Also:
Set.clear()

clone

protected java.lang.Object clone()
                          throws java.lang.CloneNotSupportedException
Create a shallow copy of this Map, no keys or values are copied. The default implementation simply calls super.clone().

Returns:
the shallow clone
Throws:
java.lang.CloneNotSupportedException - if a subclass is not Cloneable
See Also:
Cloneable, Object.clone()

containsKey

public boolean containsKey(java.lang.Object key)
Returns true if this contains a mapping for the given key. This implementation does a linear search, O(n), over the entrySet(), returning true if a match is found, false if the iteration ends. Many subclasses can implement this more efficiently.

Specified by:
containsKey in interface java.util.Map
Parameters:
key - the key to search for
Returns:
true if the map contains the key
Throws:
java.lang.NullPointerException - if key is null but the map does not permit null keys
See Also:
containsValue(Object)

containsValue

public boolean containsValue(java.lang.Object value)
Returns true if this contains at least one mapping with the given value. This implementation does a linear search, O(n), over the entrySet(), returning true if a match is found, false if the iteration ends. A match is defined as (value == null ? v == null : value.equals(v)) Subclasses are unlikely to implement this more efficiently.

Specified by:
containsValue in interface java.util.Map
Parameters:
value - the value to search for
Returns:
true if the map contains the value
See Also:
containsKey(Object)

entrySet

public abstract java.util.Set entrySet()
Returns a set view of the mappings in this Map. Each element in the set must be an implementation of Map.Entry. The set is backed by the map, so that changes in one show up in the other. Modifications made while an iterator is in progress cause undefined behavior. If the set supports removal, these methods must be valid: Iterator.remove, Set.remove, removeAll, retainAll, and clear. Element addition is not supported via this set.

Specified by:
entrySet in interface java.util.Map
Returns:
the entry set
See Also:
Map.Entry

equals

public boolean equals(java.lang.Object o)
Compares the specified object with this map for equality. Returns true if the other object is a Map with the same mappings, that is,
o instanceof Map && entrySet().equals(((Map) o).entrySet();

Specified by:
equals in interface java.util.Map
Parameters:
o - the object to be compared
Returns:
true if the object equals this map
See Also:
Set.equals(Object)

get

public java.lang.Object get(java.lang.Object key)
Returns the value mapped by the given key. Returns null if there is no mapping. However, in Maps that accept null values, you must rely on containsKey to determine if a mapping exists. This iteration takes linear time, searching entrySet().iterator() of the key. Many implementations override this method.

Specified by:
get in interface java.util.Map
Parameters:
key - the key to look up
Returns:
the value associated with the key, or null if key not in map
Throws:
java.lang.NullPointerException - if this map does not accept null keys
See Also:
containsKey(Object)

hashCode

public int hashCode()
Returns the hash code for this map. As defined in Map, this is the sum of all hashcodes for each Map.Entry object in entrySet, or basically entrySet().hashCode().

Specified by:
hashCode in interface java.util.Map
Returns:
the hash code
See Also:
Map.Entry.hashCode(), Set.hashCode()

isEmpty

public boolean isEmpty()
Returns true if the map contains no mappings. This is implemented by size() == 0.

Specified by:
isEmpty in interface java.util.Map
Returns:
true if the map is empty
See Also:
size()

keySet

public java.util.Set keySet()
Returns a set view of this map's keys. The set is backed by the map, so changes in one show up in the other. Modifications while an iteration is in progress produce undefined behavior. The set supports removal if entrySet() does, but does not support element addition.

This implementation creates an AbstractSet, where the iterator wraps the entrySet iterator, size defers to the Map's size, and contains defers to the Map's containsKey. The set is created on first use, and returned on subsequent uses, although since no synchronization occurs, there is a slight possibility of creating two sets.

Specified by:
keySet in interface java.util.Map
Returns:
a Set view of the keys
See Also:
Set.iterator(), size(), containsKey(Object), values()

put

public java.lang.Object put(java.lang.Object key,
                            java.lang.Object value)
Associates the given key to the given value (optional operation). If the map already contains the key, its value is replaced. This implementation simply throws an UnsupportedOperationException. Be aware that in a map that permits null values, a null return does not always imply that the mapping was created.

Specified by:
put in interface OzoneMap
Parameters:
key - the key to map
value - the value to be mapped
Returns:
the previous value of the key, or null if there was no mapping
Throws:
java.lang.UnsupportedOperationException - if the operation is not supported
java.lang.ClassCastException - if the key or value is of the wrong type
java.lang.IllegalArgumentException - if something about this key or value prevents it from existing in this map
java.lang.NullPointerException - if the map forbids null keys or values
See Also:
containsKey(Object)

putAll

public void putAll(java.util.Map m)
Copies all entries of the given map to this one (optional operation). If the map already contains a key, its value is replaced. This implementation simply iterates over the map's entrySet(), calling put, so it is not supported if puts are not.

Specified by:
putAll in interface OzoneMap
Parameters:
m - the mapping to load into this map
Throws:
java.lang.UnsupportedOperationException - if the operation is not supported
java.lang.ClassCastException - if a key or value is of the wrong type
java.lang.IllegalArgumentException - if something about a key or value prevents it from existing in this map
java.lang.NullPointerException - if the map forbids null keys or values, or if m is null.
See Also:
put(Object, Object)

remove

public java.lang.Object remove(java.lang.Object key)
Removes the mapping for this key if present (optional operation). This implementation iterates over the entrySet searching for a matching key, at which point it calls the iterator's remove method. It returns the result of getValue() on the entry, if found, or null if no entry is found. Note that maps which permit null values may also return null if the key was removed. If the entrySet does not support removal, this will also fail. This is O(n), so many implementations override it for efficiency.

Specified by:
remove in interface OzoneMap
Parameters:
key - the key to remove
Returns:
the value the key mapped to, or null if not present
Throws:
java.lang.UnsupportedOperationException - if deletion is unsupported
See Also:
Iterator.remove()

size

public int size()
Returns the number of key-value mappings in the map. If there are more than Integer.MAX_VALUE mappings, return Integer.MAX_VALUE. This is implemented as entrySet().size().

Specified by:
size in interface java.util.Map
Returns:
the number of mappings
See Also:
Set.size()

toString

public java.lang.String toString()
Returns a String representation of this map. This is a listing of the map entries (which are specified in Map.Entry as being getKey() + "=" + getValue()), separated by a comma and space (", "), and surrounded by braces ('{' and '}'). This implementation uses a StringBuffer and iterates over the entrySet to build the String. Note that this can fail with an exception if underlying keys or values complete abruptly in toString().

Returns:
a String representation
See Also:
Map.Entry, Object.toString()

values

public java.util.Collection values()
Returns a collection or bag view of this map's values. The collection is backed by the map, so changes in one show up in the other. Modifications while an iteration is in progress produce undefined behavior. The collection supports removal if entrySet() does, but does not support element addition.

This implementation creates an AbstractCollection, where the iterator wraps the entrySet iterator, size defers to the Map's size, and contains defers to the Map's containsValue. The collection is created on first use, and returned on subsequent uses, although since no synchronization occurs, there is a slight possibility of creating two collections.

Specified by:
values in interface java.util.Map
Returns:
a Collection view of the values
See Also:
Collection.iterator(), size(), containsValue(Object), keySet()

ozoneValues

public OzoneCollection ozoneValues()
Description copied from interface: OzoneMap
Basically nothing more than a typecasted call to values(), as the values collection is am ozone object itself.

Specified by:
ozoneValues in interface OzoneMap
Returns:
OzoneSet containing all keys in this map

ozoneKeySet

public OzoneSet ozoneKeySet()
Description copied from interface: OzoneMap
Basically nothing more than a typecasted call to keySet(), as key sets are ozone objects themselves.

Specified by:
ozoneKeySet in interface OzoneMap
Returns:
OzoneSet containing all keys in this map

ozoneEntrySet

public OzoneSet ozoneEntrySet()
Description copied from interface: OzoneMap
Basically nothing more than a typecasted call to entrySet(), as an entry set is an ozone objects ifself.

Specified by:
ozoneEntrySet in interface OzoneMap
Returns:
OzoneSet containing all keys in this map


Copyright © 2004 The Ozone Database Project - www.ozone-db.org. All Rights Reserved.