/* * 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.analyzer.definition.impl; import java.util.LinkedHashMap; import java.util.Map; import org.hibernate.search.elasticsearch.analyzer.definition.ElasticsearchAnalysisComponentDefinitionContext; import org.hibernate.search.elasticsearch.analyzer.definition.ElasticsearchTypedAnalysisComponentDefinitionContext; import org.hibernate.search.elasticsearch.logging.impl.Log; import org.hibernate.search.elasticsearch.settings.impl.model.AnalysisDefinition; import org.hibernate.search.util.logging.impl.LoggerFactory; import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonPrimitive; /** * @author Yoann Rodiere */ public abstract class ElasticsearchAnalysisComponentDefinitionContextImpl<D extends AnalysisDefinition> implements ElasticsearchTypedAnalysisComponentDefinitionContext, ElasticsearchAnalysisComponentDefinitionContext, ElasticsearchAnalysisDefinitionRegistryPopulator { protected static final Log LOG = LoggerFactory.make( Log.class ); protected final String name; protected final D definition; protected ElasticsearchAnalysisComponentDefinitionContextImpl(String name, D definition) { this.name = name; this.definition = definition; } @Override public ElasticsearchTypedAnalysisComponentDefinitionContext type(String name) { definition.setType( name ); return this; } private ElasticsearchTypedAnalysisComponentDefinitionContext param(String name, JsonElement value) { Map<String, JsonElement> parameters = definition.getParameters(); if ( parameters == null ) { parameters = new LinkedHashMap<>(); definition.setParameters( parameters ); } parameters.put( name, value ); return this; } @Override public ElasticsearchTypedAnalysisComponentDefinitionContext param(String name, String value) { return param( name, new JsonPrimitive( value ) ); } @Override public ElasticsearchTypedAnalysisComponentDefinitionContext param(String name, String... values) { JsonArray array = new JsonArray(); for ( String value : values ) { array.add( value ); } return param( name, array ); } @Override public ElasticsearchTypedAnalysisComponentDefinitionContext param(String name, boolean value) { return param( name, new JsonPrimitive( value ) ); } @Override public ElasticsearchTypedAnalysisComponentDefinitionContext param(String name, boolean... values) { JsonArray array = new JsonArray(); for ( boolean value : values ) { array.add( value ); } return param( name, array ); } @Override public ElasticsearchTypedAnalysisComponentDefinitionContext param(String name, Number value) { return param( name, new JsonPrimitive( value ) ); } @Override public ElasticsearchTypedAnalysisComponentDefinitionContext param(String name, Number... values) { JsonArray array = new JsonArray(); for ( Number value : values ) { array.add( value ); } return param( name, array ); } }