package com.github.obourgain.elasticsearch.http.response.entity; import java.io.IOException; import java.util.ArrayList; import java.util.List; import org.elasticsearch.common.xcontent.XContentParser; import lombok.Getter; @Getter public class Term { private String term; private Integer docFreq; private int termFreq; private Integer totalTermFreq; private List<Token> tokens; public Term parse(XContentParser parser) { try { term = parser.text(); parser.nextToken(); assert parser.currentToken() == XContentParser.Token.START_OBJECT : "expected a START_OBJECT token but was " + parser.currentToken(); XContentParser.Token token; String currentFieldName = null; while ((token = parser.nextToken()) != XContentParser.Token.END_OBJECT) { if (token == XContentParser.Token.FIELD_NAME) { currentFieldName = parser.currentName(); } else if (token.isValue()) { if ("doc_freq".equals(currentFieldName)) { docFreq = parser.intValue(); } else if ("term_freq".equals(currentFieldName)) { termFreq = parser.intValue(); } else if ("ttf".equals(currentFieldName)) { totalTermFreq = parser.intValue(); } } else if (token == XContentParser.Token.START_ARRAY) { if ("tokens".equals(currentFieldName)) { tokens = Token.parseList(parser); } } } return this; } catch (IOException e) { throw new RuntimeException(e); } } protected static List<Term> parseTerms(XContentParser parser) { try { assert parser.currentToken() == XContentParser.Token.START_OBJECT : "expected a START_OBJECT token but was " + parser.currentToken(); List<Term> terms = new ArrayList<>(); while (parser.nextToken() != XContentParser.Token.END_OBJECT) { assert parser.currentToken() == XContentParser.Token.FIELD_NAME : "expected a FIELD_NAME token but was " + parser.currentToken(); terms.add(new Term().parse(parser)); } return terms; } catch (IOException e) { throw new RuntimeException(e); } } }