package io.searchbox.core;
import com.google.gson.Gson;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import io.searchbox.client.JestResult;
import java.util.ArrayList;
import java.util.List;
/**
* @author cihat keser
*/
public class MultiSearchResult extends JestResult {
private static final String RESPONSES_KEY = "responses";
private static final String ERROR_KEY = "error";
public MultiSearchResult(MultiSearchResult source) {
super(source);
}
public MultiSearchResult(Gson gson) {
super(gson);
}
public List<MultiSearchResponse> getResponses() {
List<MultiSearchResponse> multiSearchResponses = new ArrayList<MultiSearchResponse>();
if(jsonObject != null && jsonObject.has(RESPONSES_KEY)) {
JsonArray responsesArray = jsonObject.getAsJsonArray(RESPONSES_KEY);
for(JsonElement responseElement : responsesArray) {
multiSearchResponses.add(new MultiSearchResponse(responseElement.getAsJsonObject()));
}
}
return multiSearchResponses;
}
public class MultiSearchResponse {
public final boolean isError;
public final String errorMessage;
public final SearchResult searchResult;
public MultiSearchResponse(JsonObject jsonObject) {
final JsonElement error = jsonObject.get(ERROR_KEY);
if(error != null) {
isError = true;
if (error.isJsonPrimitive()) {
errorMessage = error.getAsString();
}
else {
errorMessage = error.toString();
}
searchResult = null;
} else {
isError = false;
errorMessage = null;
searchResult = new SearchResult(gson);
searchResult.setSucceeded(true);
searchResult.setResponseCode(responseCode);
searchResult.setJsonObject(jsonObject);
searchResult.setJsonString(jsonObject.toString());
searchResult.setPathToResult("hits/hits/_source");
}
}
}
}