package org.ovirt.engine.core.common.utils; import java.util.Objects; import org.ovirt.engine.core.common.businessentities.IVdcQueryable; /** * A Pair that implements the {@link IVdcQueryable} interface, to enable returning it as the return value of a query. */ public class PairQueryable<T extends IVdcQueryable, K extends IVdcQueryable> extends Pair<T, K> implements IVdcQueryable { private static final long serialVersionUID = -8894728003078425184L; public PairQueryable() { } public PairQueryable(T first, K second) { super(first, second); } @Override public int hashCode() { return super.hashCode(); } @Override public boolean equals(Object obj) { if (this == obj) { return true; } if (!(obj instanceof PairQueryable)) { return false; } return super.equals(obj); } @Override public PairQueryableId getQueryableId() { return new PairQueryableId(getMemberId(getFirst()), getMemberId(getSecond())); } private Object getMemberId(IVdcQueryable member) { if (member != null) { return member.getQueryableId(); } return null; } private static class PairQueryableId extends Pair<Object, Object> { private static final long serialVersionUID = 3430689533159779008L; public PairQueryableId() { this(null, null); } public PairQueryableId(Object first, Object second) { super(first, second); } @Override public String toString() { return Objects.toString(getFirst()) + '.' + Objects.toString(getSecond()); } } }