#984 - ENH: DocumentStore API - add RawDoc with findEach() and findEachWhile()

This commit is contained in:
Rob Bygrave committed 2017-03-02 01:12:02 +13:00
1 parent d91729f65d
commit 07ce758302
3 files changed
+132

No files matched your search

+19
View File
@@ -1,6 +1,7 @@
package io.ebean;
import io.ebeanservice.docstore.api.DocQueryRequest;
import io.ebeanservice.docstore.api.RawDoc;
import org.jetbrains.annotations.Nullable;
import java.io.IOException;
@@ -165,6 +166,24 @@ public interface DocumentStore {
*/
<T> void findEachWhile(DocQueryRequest<T> query, Predicate<T> consumer);
/**
* Find each processing raw documents.
*
* @param indexNameType The full index name and type
* @param rawQuery The query to execute
* @param consumer Consumer to process each document
*/
void findEach(String indexNameType, String rawQuery, Consumer<RawDoc> consumer);
/**
* Find each processing raw documents stopping when the predicate returns false.
*
* @param indexNameType The full index name and type
* @param rawQuery The query to execute
* @param consumer Consumer to process each document until false is returned
*/
void findEachWhile(String indexNameType, String rawQuery, Predicate<RawDoc> consumer);
/**
* Process the queue entries sending updates to the document store or queuing them for later processing.
*/
@@ -0,0 +1,102 @@
package io.ebeanservice.docstore.api;
import java.util.Map;
/**
* Raw document.
*/
public class RawDoc {
private Map<String, Object> source;
private String id;
private double score;
private String index;
private String type;
/**
* Construct the document with all the meta data.
*/
public RawDoc(Map<String, Object> source, String id, double score, String index, String type) {
this.source = source;
this.id = id;
this.score = score;
this.index = index;
this.type = type;
}
/**
* Construct empty (typically for JSON marshalling).
*/
public RawDoc() {
}
/**
* Return the source document as a Map.
*/
public Map<String, Object> getSource() {
return source;
}
/**
* Return the Id value.
*/
public String getId() {
return id;
}
/**
* Return the score.
*/
public double getScore() {
return score;
}
/**
* Return the index name.
*/
public String getIndex() {
return index;
}
/**
* Return the index type.
*/
public String getType() {
return type;
}
/**
* Set the source document.
*/
public void setSource(Map<String, Object> source) {
this.source = source;
}
/**
* Set the id value.
*/
public void setId(String id) {
this.id = id;
}
/**
* Set the score.
*/
public void setScore(double score) {
this.score = score;
}
/**
* Set the index name.
*/
public void setIndex(String index) {
this.index = index;
}
/**
* Set the index type.
*/
public void setType(String type) {
this.type = type;
}
}
@@ -5,6 +5,7 @@ import io.ebean.DocumentStore;
import io.ebean.PagedList;
import io.ebean.Query;
import io.ebeanservice.docstore.api.DocQueryRequest;
import io.ebeanservice.docstore.api.RawDoc;
import java.io.IOException;
import java.util.List;
@@ -91,6 +92,16 @@ public class NoneDocStore implements DocumentStore {
throw implementationNotInClassPath();
}
@Override
public void findEach(String indexNameType, String rawQuery, Consumer<RawDoc> consumer) {
throw implementationNotInClassPath();
}
@Override
public void findEachWhile(String indexNameType, String rawQuery, Predicate<RawDoc> consumer) {
throw implementationNotInClassPath();
}
@Override
public long process(List<DocStoreQueueEntry> queueEntries) throws IOException {
throw implementationNotInClassPath();