/* * PrimaryKey.java, 9.10.2003 11:22:58 - laddi * * Copyright (C) 2002 Idega hf. All Rights Reserved. * * This software is the proprietary information of Idega hf. * Use is subject to license terms. * */ package com.idega.data; import java.util.HashMap; import java.util.Iterator; import java.util.Map; /** * @author laddi */ public class PrimaryKey implements IDOPrimaryKey { Map _primaryKeyMap; public PrimaryKey() { this._primaryKeyMap = new HashMap(); } /* (non-Javadoc) * @see com.idega.data.IDOPrimaryKey#getInstance() */ public IDOPrimaryKey getInstance() { return new PrimaryKey(); } private boolean isComposite() { if (this._primaryKeyMap.size() > 1) { return true; } return false; } /* (non-Javadoc) * @see com.idega.data.IDOPrimaryKey#getPrimaryKeyValue(java.lang.String) */ public Object getPrimaryKeyValue(String columnName) { return this._primaryKeyMap.get(columnName.toUpperCase()); } /* (non-Javadoc) * @see com.idega.data.IDOPrimaryKey#setPrimaryKeyValue(java.lang.String, java.lang.Object) */ public void setPrimaryKeyValue(String columnName, Object PKValue) { this._primaryKeyMap.put(columnName.toUpperCase(), PKValue); } public boolean equals(Object obj) { if (obj instanceof IDOPrimaryKey) { IDOPrimaryKey comparePK = (IDOPrimaryKey) obj; Iterator iter = this._primaryKeyMap.keySet().iterator(); while (iter.hasNext()) { String columnName = (String) iter.next(); if (!this._primaryKeyMap.get(columnName).equals(comparePK.getPrimaryKeyValue(columnName))) { return false; } } return true; } return false; } public int hashCode() { StringBuffer buffer = new StringBuffer(); Iterator iter = this._primaryKeyMap.entrySet().iterator(); while (iter.hasNext()) { buffer.append(iter.next()); } String keys = buffer.toString(); return keys.hashCode(); } public String toString() { StringBuffer buffer = new StringBuffer(); boolean isComposite = isComposite(); Iterator iter = this._primaryKeyMap.keySet().iterator(); while (iter.hasNext()) { String columnName = (String) iter.next(); if (isComposite) { buffer.append(columnName).append("="); } buffer.append(this._primaryKeyMap.get(columnName)); if (isComposite && iter.hasNext()) { buffer.append("&"); } } return buffer.toString(); } }