/* See LICENSE for licensing and NOTICE for copyright. */ package org.ldaptive; import java.util.Arrays; import org.ldaptive.control.ResponseControl; /** * Simple bean representing a search entry. * * @author Middleware Services */ public class SearchEntry extends LdapEntry implements ResponseMessage { /** hash code seed. */ private static final int HASH_CODE_SEED = 347; /** serial version uid. */ private static final long serialVersionUID = 3016288847468612093L; /** response controls. */ private final ResponseControl[] responseControls; /** message ID. */ private final int messageId; /** * Creates a new search entry. * * @param id message id * @param c response controls */ public SearchEntry(final int id, final ResponseControl[] c) { messageId = id; responseControls = c; } /** * Creates a new search entry. * * @param id message id * @param c response controls * @param sb sort behavior */ public SearchEntry(final int id, final ResponseControl[] c, final SortBehavior sb) { super(sb); messageId = id; responseControls = c; } @Override public ResponseControl[] getControls() { return responseControls; } @Override public ResponseControl getControl(final String oid) { if (getControls() != null) { for (ResponseControl c : getControls()) { if (c.getOID().equals(oid)) { return c; } } } return null; } @Override public int getMessageId() { return messageId; } @Override public boolean equals(final Object o) { if (o == this) { return true; } if (super.equals(o)) { final SearchEntry v = (SearchEntry) o; return LdapUtils.areEqual(messageId, v.messageId) && LdapUtils.areEqual(responseControls, v.responseControls); } return false; } @Override public int hashCode() { return LdapUtils.computeHashCode( HASH_CODE_SEED, getDn() != null ? getDn().toLowerCase() : null, getAttributes(), messageId, responseControls); } @Override public String toString() { return String.format( "[dn=%s%s, responseControls=%s, messageId=%s]", getDn(), getAttributes(), Arrays.toString(responseControls), messageId); } }