// Path: elasticservice/src/main/java/elasticsearch/esapi/resp/ESQueryResponse.java
// public class ESQueryResponse {
//     @SerializedName("_scroll_id")
//     protected String scrollId;
// 
//     protected Long took;
// 
//     @SerializedName("timed_out")
//     protected Boolean timeOut;
// 
//     @SerializedName("_shards")
//     protected JsonObject shards;
// 
//     @SerializedName("hits")
//     protected Hit hit;
// 
//     public Long getTook() {
//         return took;
//     }
// 
//     public void setTook(Long took) {
//         this.took = took;
//     }
// 
//     public Boolean getTimeOut() {
//         return timeOut;
//     }
// 
//     public void setTimeOut(Boolean timeOut) {
//         this.timeOut = timeOut;
//     }
// 
//     public JsonObject getShards() {
//         return shards;
//     }
// 
//     public void setShards(JsonObject shards) {
//         this.shards = shards;
//     }
// 
//     public Hit getHit() {
//         return hit;
//     }
// 
//     public void setHit(Hit hit) {
//         this.hit = hit;
//     }
// 
//     public String getScrollId() {
//         return scrollId;
//     }
// 
//     public void setScrollId(String scrollId) {
//         this.scrollId = scrollId;
//     }
// 
//     @Override
//     public String toString() {
//         return "ESQueryResponse{" +
//                 "scrollId='" + scrollId + '\'' +
//                 ", took=" + took +
//                 ", timeOut=" + timeOut +
//                 ", shards=" + shards +
//                 ", hit=" + hit +
//                 '}';
//     }
// }
// 
// Path: elasticservice/src/main/java/elasticsearch/esapi/resp/Hits.java
// public class Hits extends ESBaseResponse {
//     @SerializedName("_score")
//     private String score;
//     @SerializedName("_source")
//     private JsonObject source;
// 
//     public String getScore() {
//         return score;
//     }
// 
//     public void setScore(String score) {
//         this.score = score;
//     }
// 
//     public JsonObject getSource() {
//         return source;
//     }
// 
//     public void setSource(JsonObject source) {
//         this.source = source;
//     }
// 
//     @Override
//     public String toString() {
//         return "Hits{" +
//                 "index='" + index + '\'' +
//                 ", type='" + type + '\'' +
//                 ", id='" + id + '\'' +
//                 ", score='" + score + '\'' +
//                 ", routing='" + routing + '\'' +
//                 ", source=" + source +
//                 '}';
//     }
// }
// 
// Path: elasticservice/src/main/java/elasticsearch/searchservice/models/ESResp/ESSearchResp.java
// public class ESSearchResp {
//     Hit hits;
// 
// 
//     public Hit getHits() {
//         return hits;
//     }
// 
//     public void setHits(Hit hits) {
//         this.hits = hits;
//     }
// }
// 
// Path: elasticservice/src/main/java/elasticsearch/searchservice/models/ESResp/HitResult.java
// public class HitResult {
//     HitSource _source;
// 
//     public HitSource get_source() {
//         return _source;
//     }
// 
//     public void set_source(HitSource _source) {
//         this._source = _source;
//     }
// }


import com.google.gson.JsonObject;
import elasticsearch.esapi.resp.ESQueryResponse;
import elasticsearch.esapi.resp.Hits;
import elasticsearch.searchservice.models.ESResp.ESSearchResp;
import elasticsearch.searchservice.models.ESResp.HitResult;
import java.util.ArrayList;
import java.util.List;

package elasticsearch.searchservice.models;




/**
 * Created by i311352 on 5/4/2017.
 */
public class QueryResp {
    Long total;
    List<Long> productIds;

    public QueryResp() {
    }

    public QueryResp(Long total) {
        this.total = total;
    }

    public QueryResp(ESQueryResponse response) {
        total = response.getHit().getTotal();
        productIds = new ArrayList<>();
        for (Hits hitResult : response.getHit().getHits()) {
            JsonObject object = hitResult.getSource();
            Long id = object.get("id").getAsLong();
            productIds.add(id);
        }
    }

    public QueryResp(ESSearchResp resp) {
        total = resp.getHits().getTotal();
        productIds = new ArrayList<>();

// Path: elasticservice/src/main/java/elasticsearch/esapi/resp/ESQueryResponse.java
// public class ESQueryResponse {
//     @SerializedName("_scroll_id")
//     protected String scrollId;
// 
//     protected Long took;
// 
//     @SerializedName("timed_out")
//     protected Boolean timeOut;
// 
//     @SerializedName("_shards")
//     protected JsonObject shards;
// 
//     @SerializedName("hits")
//     protected Hit hit;
// 
//     public Long getTook() {
//         return took;
//     }
// 
//     public void setTook(Long took) {
//         this.took = took;
//     }
// 
//     public Boolean getTimeOut() {
//         return timeOut;
//     }
// 
//     public void setTimeOut(Boolean timeOut) {
//         this.timeOut = timeOut;
//     }
// 
//     public JsonObject getShards() {
//         return shards;
//     }
// 
//     public void setShards(JsonObject shards) {
//         this.shards = shards;
//     }
// 
//     public Hit getHit() {
//         return hit;
//     }
// 
//     public void setHit(Hit hit) {
//         this.hit = hit;
//     }
// 
//     public String getScrollId() {
//         return scrollId;
//     }
// 
//     public void setScrollId(String scrollId) {
//         this.scrollId = scrollId;
//     }
// 
//     @Override
//     public String toString() {
//         return "ESQueryResponse{" +
//                 "scrollId='" + scrollId + '\'' +
//                 ", took=" + took +
//                 ", timeOut=" + timeOut +
//                 ", shards=" + shards +
//                 ", hit=" + hit +
//                 '}';
//     }
// }
// 
// Path: elasticservice/src/main/java/elasticsearch/esapi/resp/Hits.java
// public class Hits extends ESBaseResponse {
//     @SerializedName("_score")
//     private String score;
//     @SerializedName("_source")
//     private JsonObject source;
// 
//     public String getScore() {
//         return score;
//     }
// 
//     public void setScore(String score) {
//         this.score = score;
//     }
// 
//     public JsonObject getSource() {
//         return source;
//     }
// 
//     public void setSource(JsonObject source) {
//         this.source = source;
//     }
// 
//     @Override
//     public String toString() {
//         return "Hits{" +
//                 "index='" + index + '\'' +
//                 ", type='" + type + '\'' +
//                 ", id='" + id + '\'' +
//                 ", score='" + score + '\'' +
//                 ", routing='" + routing + '\'' +
//                 ", source=" + source +
//                 '}';
//     }
// }
// 
// Path: elasticservice/src/main/java/elasticsearch/searchservice/models/ESResp/ESSearchResp.java
// public class ESSearchResp {
//     Hit hits;
// 
// 
//     public Hit getHits() {
//         return hits;
//     }
// 
//     public void setHits(Hit hits) {
//         this.hits = hits;
//     }
// }
// 
// Path: elasticservice/src/main/java/elasticsearch/searchservice/models/ESResp/HitResult.java
// public class HitResult {
//     HitSource _source;
// 
//     public HitSource get_source() {
//         return _source;
//     }
// 
//     public void set_source(HitSource _source) {
//         this._source = _source;
//     }
// }


// Path: elasticservice/src/main/java/elasticsearch/searchservice/models/QueryResp.java
import com.google.gson.JsonObject;
import elasticsearch.esapi.resp.ESQueryResponse;
import elasticsearch.esapi.resp.Hits;
import elasticsearch.searchservice.models.ESResp.ESSearchResp;
import elasticsearch.searchservice.models.ESResp.HitResult;
import java.util.ArrayList;
import java.util.List;

package elasticsearch.searchservice.models;




/**
 * Created by i311352 on 5/4/2017.
 */
public class QueryResp {
    Long total;
    List<Long> productIds;

    public QueryResp() {
    }

    public QueryResp(Long total) {
        this.total = total;
    }

    public QueryResp(ESQueryResponse response) {
        total = response.getHit().getTotal();
        productIds = new ArrayList<>();
        for (Hits hitResult : response.getHit().getHits()) {
            JsonObject object = hitResult.getSource();
            Long id = object.get("id").getAsLong();
            productIds.add(id);
        }
    }

    public QueryResp(ESSearchResp resp) {
        total = resp.getHits().getTotal();
        productIds = new ArrayList<>();

        for (HitResult hitResult : resp.getHits().getHits()) {
