/*
* Licensed to Crate under one or more contributor license agreements.
* See the NOTICE file distributed with this work for additional
* information regarding copyright ownership. Crate licenses this file
* to you 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.
*
* However, if you have executed another commercial license agreement
* with Crate these terms will supersede the license and you may use the
* software solely pursuant to the terms of the relevant commercial
* agreement.
*/
package org.elasticsearch.index.mapper;
import org.apache.lucene.index.Term;
import org.apache.lucene.search.Query;
import org.elasticsearch.common.Nullable;
import org.elasticsearch.common.unit.Fuzziness;
import org.elasticsearch.index.analysis.NamedAnalyzer;
import org.elasticsearch.index.query.QueryShardContext;
import org.elasticsearch.index.similarity.SimilarityProvider;
import java.util.List;
class ArrayFieldType extends MappedFieldType implements Cloneable {
private final MappedFieldType innerFieldType;
private ArrayFieldType(ArrayFieldType ref) {
super(ref);
this.innerFieldType = ref.innerFieldType;
}
ArrayFieldType(MappedFieldType innerFieldType) {
this.innerFieldType = innerFieldType;
}
@Override
public String name() {
return innerFieldType.name();
}
@SuppressWarnings("CloneDoesntCallSuperClone")
@Override
public MappedFieldType clone() {
return new ArrayFieldType(this);
}
@Override
public String typeName() {
return ArrayMapper.CONTENT_TYPE;
}
@Override
public void checkCompatibility(MappedFieldType other, List<String> conflicts, boolean strict) {
super.checkCompatibility(other, conflicts, strict);
// it's an array field type, lets check the inner type
innerFieldType.checkCompatibility(((ArrayFieldType) other).innerFieldType, conflicts, strict);
}
@Override
public boolean hasDocValues() {
return innerFieldType.hasDocValues();
}
@Override
public void setHasDocValues(boolean hasDocValues) {
innerFieldType.setHasDocValues(hasDocValues);
}
@Override
public NamedAnalyzer indexAnalyzer() {
return innerFieldType.indexAnalyzer();
}
@Override
public void setIndexAnalyzer(NamedAnalyzer analyzer) {
innerFieldType.setIndexAnalyzer(analyzer);
}
@Override
public NamedAnalyzer searchAnalyzer() {
return innerFieldType.searchAnalyzer();
}
@Override
public void setSearchAnalyzer(NamedAnalyzer analyzer) {
innerFieldType.setSearchAnalyzer(analyzer);
}
@Override
public NamedAnalyzer searchQuoteAnalyzer() {
return innerFieldType.searchQuoteAnalyzer();
}
@Override
public void setSearchQuoteAnalyzer(NamedAnalyzer analyzer) {
innerFieldType.setSearchQuoteAnalyzer(analyzer);
}
@Override
public SimilarityProvider similarity() {
return innerFieldType.similarity();
}
@Override
public void setSimilarity(SimilarityProvider similarity) {
innerFieldType.setSimilarity(similarity);
}
@Override
public Object nullValue() {
return innerFieldType.nullValue();
}
@Override
public String nullValueAsString() {
return innerFieldType.nullValueAsString();
}
@Override
public void setNullValue(Object nullValue) {
innerFieldType.setNullValue(nullValue);
}
@Override
public Object valueForSearch(Object value) {
return innerFieldType.valueForSearch(value);
}
@Override
public Query termQuery(Object value, @Nullable QueryShardContext context) {
return innerFieldType.termQuery(value, context);
}
@Override
public Query termsQuery(List<?> values, @Nullable QueryShardContext context) {
return innerFieldType.termsQuery(values, context);
}
@Override
public Query rangeQuery(Object lowerTerm, Object upperTerm, boolean includeLower, boolean includeUpper) {
return innerFieldType.rangeQuery(lowerTerm, upperTerm, includeLower, includeUpper);
}
@Override
public Query fuzzyQuery(Object value, Fuzziness fuzziness, int prefixLength, int maxExpansions, boolean transpositions) {
return innerFieldType.fuzzyQuery(value, fuzziness, prefixLength, maxExpansions, transpositions);
}
@Override
public Query nullValueQuery() {
return innerFieldType.nullValueQuery();
}
@Override
@Nullable
public Query queryStringTermQuery(Term term) {
return innerFieldType.queryStringTermQuery(term);
}
}