org.alfresco.repo.cache.lookup
Interface EntityLookupCache.EntityLookupCallbackDAO

All Known Implementing Classes:
EntityLookupCache.EntityLookupCallbackDAOAdaptor, EntityLookupCacheTest
Enclosing class:
EntityLookupCache

public static interface EntityLookupCache.EntityLookupCallbackDAO

Interface to support lookups of the entities using keys and values.


Method Summary
 org.alfresco.util.Pair createValue(java.lang.Object value)
          Create an entity using the given values.
 int deleteByKey(java.io.Serializable key)
          Delete an entity for the given key.
 int deleteByValue(java.lang.Object value)
          Delete an entity for the given value.
 org.alfresco.util.Pair findByKey(java.io.Serializable key)
          Find an entity for a given key.
 org.alfresco.util.Pair findByValue(java.lang.Object value)
          Find and entity using the given value key.
 java.io.Serializable getValueKey(java.lang.Object value)
          Resolve the given value into a unique value key that can be used to find the entity's ID.
 int updateValue(java.io.Serializable key, java.lang.Object value)
          Update the entity identified by the given key.
 

Method Detail

getValueKey

java.io.Serializable getValueKey(java.lang.Object value)
Resolve the given value into a unique value key that can be used to find the entity's ID. A return value should be small and efficient; don't return a value if this is not possible.

Implementations will often return the value itself, provided that the value is both serializable and has a good equals and hashCode.

Were no adequate key can be generated for the value, then null can be returned. In this case, the findByValue method might not even do a search and just return null itself i.e. if it is difficult to look the value up in storage then it is probably difficult to generate a cache key from it, too.. In this scenario, the cache will be purely for key-based lookups

Parameters:
value - the full value being keyed (never null)
Returns:
Returns the business key representing the entity, or null if an economical key cannot be generated.

findByKey

org.alfresco.util.Pair findByKey(java.io.Serializable key)
Find an entity for a given key.

Parameters:
key - the key (ID) used to identify the entity (never null)
Returns:
Return the entity or null if no entity is exists for the ID

findByValue

org.alfresco.util.Pair findByValue(java.lang.Object value)
Find and entity using the given value key. The equals and hashCode methods of the value object should respect case-sensitivity in the same way that this lookup treats case-sensitivity i.e. if the equals method is case-sensitive then this method should look the entity up using a case-sensitive search.

Since this is a cache backed by some sort of database, null values are allowed by the cache. The implementation of this method can throw an exception if null is not appropriate for the use-case.

If the search is impossible or expensive, this method should just return null. This would usually be the case if the getValueKey method also returned null i.e. if it is difficult to look the value up in storage then it is probably difficult to generate a cache key from it, too.

Parameters:
value - the value (business object) used to identify the entity (null allowed).
Returns:
Return the entity or null if no entity matches the given value

createValue

org.alfresco.util.Pair createValue(java.lang.Object value)
Create an entity using the given values. It is valid to assume that the entity does not exist within the current transaction at least.

Since persistence mechanisms often allow null values, these can be expected here. The implementation must throw an exception if null is not allowed for the specific use-case.

Parameters:
value - the value (business object) used to identify the entity (null allowed).
Returns:
Return the newly-created entity ID-value pair

updateValue

int updateValue(java.io.Serializable key,
                java.lang.Object value)
Update the entity identified by the given key.

It is up to the client code to decide if a 0 return value indicates a concurrency violation or not.

Parameters:
key - the existing key (ID) used to identify the entity (never null)
value - the new value
Returns:
Returns the row update count.
Throws:
java.lang.UnsupportedOperationException - if entity updates are not supported

deleteByKey

int deleteByKey(java.io.Serializable key)
Delete an entity for the given key.

It is up to the client code to decide if a 0 return value indicates a concurrency violation or not.

Parameters:
key - the key (ID) used to identify the entity (never null)
Returns:
Returns the row deletion count.
Throws:
java.lang.UnsupportedOperationException - if entity deletion is not supported

deleteByValue

int deleteByValue(java.lang.Object value)
Delete an entity for the given value.

It is up to the client code to decide if a 0 return value indicates a concurrency violation or not.

Parameters:
value - the value (business object) used to identify the enitity (null allowed)
Returns:
Returns the row deletion count.
Throws:
java.lang.UnsupportedOperationException - if entity deletion is not supported


Copyright © 2005 - 2010 Alfresco Software, Inc. All Rights Reserved.