/** * personium.io * Copyright 2014 FUJITSU LIMITED * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.fujitsu.dc.common.es.response.impl; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import org.elasticsearch.search.SearchHit; import org.elasticsearch.search.SearchHitField; import com.fujitsu.dc.common.es.response.DcSearchHit; import com.fujitsu.dc.common.es.response.DcSearchHitField; /** * IndexResponseのラッパークラス. */ public class DcSearchHitImpl implements DcSearchHit { private SearchHit searchHit; /** * . */ private DcSearchHitImpl() { throw new IllegalStateException(); } /** * GetResponseを指定してインスタンスを生成する. * @param hits ESからのレスポンスオブジェクト */ private DcSearchHitImpl(SearchHit hit) { this.searchHit = hit; } /** * . * @param hit . * @return . */ public static DcSearchHit getInstance(SearchHit hit) { if (hit == null) { return null; } return new DcSearchHitImpl(hit); } @Override public float score() { return this.searchHit.score(); } @Override public float getScore() { return this.searchHit.getScore(); } @Override public String index() { return this.searchHit.index(); } @Override public String getIndex() { return this.searchHit.getIndex(); } @Override public String id() { return this.searchHit.id(); } @Override public String getId() { return this.searchHit.getId(); } @Override public String type() { return this.searchHit.type(); } @Override public String getType() { return this.searchHit.getType(); } @Override public long version() { return this.searchHit.version(); } @Override public long getVersion() { return this.searchHit.getVersion(); } @Override public byte[] source() { return this.searchHit.source(); } @Override public boolean isSourceEmpty() { return this.searchHit.isSourceEmpty(); } @Override public Map<String, Object> getSource() { return this.searchHit.getSource(); } @Override public String sourceAsString() { return this.searchHit.sourceAsString(); } @Override public String getSourceAsString() { return this.searchHit.getSourceAsString(); } @Override public Map<String, Object> sourceAsMap() { return this.searchHit.sourceAsMap(); } @Override public Object field(String fieldName) { return this.searchHit.getSource().get(fieldName); } @Override public Map<String, DcSearchHitField> fields() { Map<String, DcSearchHitField> map = new HashMap<String, DcSearchHitField>(); for (Map.Entry<String, SearchHitField> entry : this.searchHit.fields().entrySet()) { map.put(entry.getKey(), DcSearchHitFieldImpl.getInstance(entry.getValue())); } return map; } @Override public Map<String, DcSearchHitField> getFields() { return fields(); } @Override public Object[] sortValues() { return this.searchHit.sortValues(); } @Override public Object[] getSortValues() { return this.searchHit.getSortValues(); } @Override public String[] matchedFilters() { return this.searchHit.getMatchedQueries(); } @Override public String[] getMatchedFilters() { return this.searchHit.getMatchedQueries(); } @Override public Iterator<DcSearchHitField> iterator() { Map<String, DcSearchHitField> map = new HashMap<String, DcSearchHitField>(); for (Map.Entry<String, SearchHitField> entry : this.searchHit.fields().entrySet()) { map.put(entry.getKey(), DcSearchHitFieldImpl.getInstance(entry.getValue())); } return map.values().iterator(); } }