package Express.services;
import java.io.Serializable;
import DisplayProject.binding.beans.Observable;
import Framework.Constants;
import Framework.HashFuncs;
import Framework.NumericData;
import Framework.RuntimeProperties;
/**
* This class appears in the project, but is for internal use only and is not documented.
* <p>
* @author ITerative Consulting
* @since 26-Feb-2008
*/
@RuntimeProperties(isDistributed=false, isAnchored=false, isShared=false, isTransactional=false)
@SuppressWarnings("serial")
public class ConcurrencyKeyHash
extends HashFuncs
implements Serializable, Observable
{
// ----------
// Attributes
// ----------
private int businessKeyType;
private HashFuncs stringHash;
// ------------
// Constructors
// ------------
public ConcurrencyKeyHash() {
// Explicitly call the superclass constructor to prevent the implicit call
super();
}
public ConcurrencyKeyHash(int pKeyType) {
this();
this.setKeyType( pKeyType );
}
// -------
// Methods
// -------
/**
* compareKey<p>
* <p>
* @param key1 Type: Object
* @param key2 Type: Object
* @return boolean
*/
public boolean compareKey(Object key1, Object key2) {
if (((BusinessKey)key1).compare((BusinessKey)key2) == BusinessKey.CMP_EQ) {
return true;
}
return false;
}
/**
* hashKey<p>
* <p>
* @param key Type: Object
* @return int
*/
public int hashKey(Object key) {
BusinessKey bk = (BusinessKey)key;
if (bk.getValues() == null || bk.getValues().size() < 1) {
return 0;
}
if (this.businessKeyType == 0) {
if (bk.getValues().get(0) instanceof NumericData) {
this.businessKeyType = Constants.SP_KT_INTEGER;
}
else {
this.businessKeyType = Constants.SP_KT_STRING;
this.stringHash = new HashFuncs(this.businessKeyType);
}
}
if (this.businessKeyType == Constants.SP_KT_INTEGER) {
return bk.getValues().get(0).asI4();
}
else {
return this.stringHash.hashKey(bk.getValues().get(0).toString());
}
}
} // end class ConcurrencyKeyHash
// c Pass 2 Conversion Time: 125 milliseconds