/*
* Hibernate Search, full-text search for your domain model
*
* License: GNU Lesser General Public License (LGPL), version 2.1 or later
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
*/
package org.hibernate.search.elasticsearch.settings.impl.model;
import java.util.Map;
import com.google.gson.GsonBuilder;
import com.google.gson.annotations.SerializedName;
/**
* Settings for an Elasticsearch index.
*
* @author Yoann Rodiere
*/
public class IndexSettings {
private Analysis analysis;
public Analysis getAnalysis() {
return analysis;
}
public void setAnalysis(Analysis analysis) {
this.analysis = analysis;
}
public boolean isEmpty() {
return analysis == null || analysis.isEmpty();
}
@Override
public String toString() {
return new GsonBuilder().setPrettyPrinting().create().toJson( this );
}
public static class Analysis {
@SerializedName("analyzer")
private Map<String, AnalyzerDefinition> analyzers;
@SerializedName("tokenizer")
private Map<String, TokenizerDefinition> tokenizers;
@SerializedName("filter")
private Map<String, TokenFilterDefinition> tokenFilters;
@SerializedName("char_filter")
private Map<String, CharFilterDefinition> charFilters;
public Map<String, AnalyzerDefinition> getAnalyzers() {
return analyzers;
}
public boolean isEmpty() {
return ! hasContent( analyzers, tokenizers, tokenFilters, charFilters );
}
private boolean hasContent(Map<?, ?> ... maps) {
for ( Map<?, ?> map : maps ) {
if ( map != null && !map.isEmpty() ) {
return true;
}
}
return false;
}
public void setAnalyzers(Map<String, AnalyzerDefinition> analyzers) {
this.analyzers = analyzers;
}
public Map<String, TokenizerDefinition> getTokenizers() {
return tokenizers;
}
public void setTokenizers(Map<String, TokenizerDefinition> tokenizers) {
this.tokenizers = tokenizers;
}
public Map<String, TokenFilterDefinition> getTokenFilters() {
return tokenFilters;
}
public void setTokenFilters(Map<String, TokenFilterDefinition> tokenFilters) {
this.tokenFilters = tokenFilters;
}
public Map<String, CharFilterDefinition> getCharFilters() {
return charFilters;
}
public void setCharFilters(Map<String, CharFilterDefinition> charFilters) {
this.charFilters = charFilters;
}
@Override
public String toString() {
return new GsonBuilder().setPrettyPrinting().create().toJson( this );
}
}
}