package org.safehaus.penrose.cache; import org.safehaus.penrose.ldap.DN; import org.safehaus.penrose.ldap.SearchRequest; /** * @author Endi Sukma Dewata */ public class CacheKey { private DN bindDn; private SearchRequest request; private String entryId; public DN getBindDn() { return bindDn; } public void setBindDn(DN bindDn) { this.bindDn = bindDn; } public SearchRequest getRequest() { return request; } public void setRequest(SearchRequest request) { this.request = request; } public String getEntryId() { return entryId; } public void setEntryId(String entryId) { this.entryId = entryId; } public int hashCode() { return (bindDn == null ? 0 : bindDn.hashCode()) + (request.getDn() == null ? 0 : request.getDn().hashCode()) + (request.getFilter()== null ? 0 : request.getFilter().hashCode()) + request.getScope() + (entryId == null ? 0 : entryId.hashCode()); } private boolean equals(Object o1, Object o2) { if (o1 == null && o2 == null) return true; if (o1 != null) return o1.equals(o2); return o2.equals(o1); } public boolean equals(Object object) { if (this == object) return true; if (object == null) return false; if (object.getClass() != this.getClass()) return false; CacheKey cacheKey = (CacheKey)object; if (!equals(bindDn, cacheKey.bindDn)) return false; if (!equals(request.getControls(), cacheKey.request.getControls())) return false; if (!equals(request.getDn(), cacheKey.request.getDn())) return false; if (!equals(request.getFilter(), cacheKey.request.getFilter())) return false; if (!equals(request.getScope(), cacheKey.request.getScope())) return false; if (!equals(request.getAttributes(), cacheKey.request.getAttributes())) return false; if (!equals(request.isTypesOnly(), cacheKey.request.isTypesOnly())) return false; if (!equals(request.getDereference(), cacheKey.request.getDereference())) return false; if (!equals(request.getSizeLimit(), cacheKey.request.getSizeLimit())) return false; if (!equals(request.getTimeLimit(), cacheKey.request.getTimeLimit())) return false; if (!equals(entryId, cacheKey.entryId)) return false; return true; } }