package org.infinispan.query.clustered; import java.util.UUID; import org.apache.lucene.search.ScoreDoc; import org.infinispan.remoting.transport.Address; /** * ClusteredTopDocs. * * A TopDocs with UUID and address of node who has the doc. * * @author Israel Lacerra <israeldl@gmail.com> * @since 5.1 */ public class ClusteredTopDocs { private int currentIndex = 0; private final NodeTopDocs nodeTopDocs; private final UUID id; private Address nodeAddress; ClusteredTopDocs(NodeTopDocs nodeTopDocs, UUID id) { this.nodeTopDocs = nodeTopDocs; this.id = id; } public UUID getId() { return id; } public boolean hasNext() { return !(currentIndex >= nodeTopDocs.topDocs.scoreDocs.length); } public NodeTopDocs getNodeTopDocs() { return nodeTopDocs; } public ClusteredDoc getNext() { if (currentIndex >= nodeTopDocs.topDocs.scoreDocs.length) return null; ScoreDoc scoreDoc = nodeTopDocs.topDocs.scoreDocs[currentIndex]; return new ClusteredScoreDoc(scoreDoc, id, currentIndex++); } public void setNodeAddress(Address nodeAddress) { this.nodeAddress = nodeAddress; } public Address getNodeAddress() { return nodeAddress; } }