/*
* 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.work.impl.factory;
import java.util.List;
import org.hibernate.search.elasticsearch.cfg.ElasticsearchIndexStatus;
import org.hibernate.search.elasticsearch.client.impl.URLEncodedString;
import org.hibernate.search.elasticsearch.gson.impl.GsonProvider;
import org.hibernate.search.elasticsearch.schema.impl.model.TypeMapping;
import org.hibernate.search.elasticsearch.settings.impl.model.IndexSettings;
import org.hibernate.search.elasticsearch.work.impl.BulkWork;
import org.hibernate.search.elasticsearch.work.impl.BulkableElasticsearchWork;
import org.hibernate.search.elasticsearch.work.impl.ClearScrollWork;
import org.hibernate.search.elasticsearch.work.impl.CloseIndexWork;
import org.hibernate.search.elasticsearch.work.impl.CreateIndexWork;
import org.hibernate.search.elasticsearch.work.impl.ES2DeleteByQueryWork;
import org.hibernate.search.elasticsearch.work.impl.DeleteWork;
import org.hibernate.search.elasticsearch.work.impl.DropIndexWork;
import org.hibernate.search.elasticsearch.work.impl.ExplainWork;
import org.hibernate.search.elasticsearch.work.impl.ES2FlushWork;
import org.hibernate.search.elasticsearch.work.impl.GetIndexSettingsWork;
import org.hibernate.search.elasticsearch.work.impl.GetIndexTypeMappingsWork;
import org.hibernate.search.elasticsearch.work.impl.IndexExistsWork;
import org.hibernate.search.elasticsearch.work.impl.IndexWork;
import org.hibernate.search.elasticsearch.work.impl.OpenIndexWork;
import org.hibernate.search.elasticsearch.work.impl.ES2OptimizeWork;
import org.hibernate.search.elasticsearch.work.impl.PutIndexSettingsWork;
import org.hibernate.search.elasticsearch.work.impl.PutIndexTypeMappingWork;
import org.hibernate.search.elasticsearch.work.impl.RefreshWork;
import org.hibernate.search.elasticsearch.work.impl.ScrollWork;
import org.hibernate.search.elasticsearch.work.impl.SearchWork;
import org.hibernate.search.elasticsearch.work.impl.WaitForIndexStatusWork;
import org.hibernate.search.elasticsearch.work.impl.builder.BulkWorkBuilder;
import org.hibernate.search.elasticsearch.work.impl.builder.ClearScrollWorkBuilder;
import org.hibernate.search.elasticsearch.work.impl.builder.CloseIndexWorkBuilder;
import org.hibernate.search.elasticsearch.work.impl.builder.CreateIndexWorkBuilder;
import org.hibernate.search.elasticsearch.work.impl.builder.DeleteByQueryWorkBuilder;
import org.hibernate.search.elasticsearch.work.impl.builder.DeleteWorkBuilder;
import org.hibernate.search.elasticsearch.work.impl.builder.DropIndexWorkBuilder;
import org.hibernate.search.elasticsearch.work.impl.builder.ExplainWorkBuilder;
import org.hibernate.search.elasticsearch.work.impl.builder.FlushWorkBuilder;
import org.hibernate.search.elasticsearch.work.impl.builder.GetIndexSettingsWorkBuilder;
import org.hibernate.search.elasticsearch.work.impl.builder.GetIndexTypeMappingsWorkBuilder;
import org.hibernate.search.elasticsearch.work.impl.builder.IndexExistsWorkBuilder;
import org.hibernate.search.elasticsearch.work.impl.builder.IndexWorkBuilder;
import org.hibernate.search.elasticsearch.work.impl.builder.OpenIndexWorkBuilder;
import org.hibernate.search.elasticsearch.work.impl.builder.OptimizeWorkBuilder;
import org.hibernate.search.elasticsearch.work.impl.builder.PutIndexMappingWorkBuilder;
import org.hibernate.search.elasticsearch.work.impl.builder.PutIndexSettingsWorkBuilder;
import org.hibernate.search.elasticsearch.work.impl.builder.RefreshWorkBuilder;
import org.hibernate.search.elasticsearch.work.impl.builder.ScrollWorkBuilder;
import org.hibernate.search.elasticsearch.work.impl.builder.SearchWorkBuilder;
import org.hibernate.search.elasticsearch.work.impl.builder.WaitForIndexStatusWorkBuilder;
import com.google.gson.JsonObject;
/**
* @author Yoann Rodiere
*/
public class Elasticsearch2WorkFactory implements ElasticsearchWorkFactory {
private final GsonProvider gsonProvider;
public Elasticsearch2WorkFactory(GsonProvider gsonProvider) {
super();
this.gsonProvider = gsonProvider;
}
@Override
public IndexWorkBuilder index(URLEncodedString indexName, URLEncodedString typeName, URLEncodedString id, JsonObject document) {
return new IndexWork.Builder( indexName, typeName, id, document );
}
@Override
public DeleteWorkBuilder delete(URLEncodedString indexName, URLEncodedString typeName, URLEncodedString id) {
return new DeleteWork.Builder( indexName, typeName, id );
}
@Override
public DeleteByQueryWorkBuilder deleteByQuery(URLEncodedString indexName, JsonObject payload) {
return new ES2DeleteByQueryWork.Builder( indexName, payload );
}
@Override
public FlushWorkBuilder flush() {
return new ES2FlushWork.Builder();
}
@Override
public RefreshWorkBuilder refresh() {
return new RefreshWork.Builder();
}
@Override
public OptimizeWorkBuilder optimize() {
return new ES2OptimizeWork.Builder();
}
@Override
public BulkWorkBuilder bulk(List<BulkableElasticsearchWork<?>> bulkableWorks) {
return new BulkWork.Builder( bulkableWorks );
}
@Override
public SearchWorkBuilder search(JsonObject payload) {
return new SearchWork.Builder( payload );
}
@Override
public ExplainWorkBuilder explain(URLEncodedString indexName, URLEncodedString typeName, URLEncodedString id, JsonObject payload) {
return new ExplainWork.Builder( indexName, typeName, id, payload );
}
@Override
public ScrollWorkBuilder scroll(String scrollId, String scrollTimeout) {
return new ScrollWork.Builder( scrollId, scrollTimeout );
}
@Override
public ClearScrollWorkBuilder clearScroll(String scrollId) {
return new ClearScrollWork.Builder( scrollId );
}
@Override
public CreateIndexWorkBuilder createIndex(URLEncodedString indexName) {
return new CreateIndexWork.Builder( gsonProvider, indexName );
}
@Override
public DropIndexWorkBuilder dropIndex(URLEncodedString indexName) {
return new DropIndexWork.Builder( indexName );
}
@Override
public OpenIndexWorkBuilder openIndex(URLEncodedString indexName) {
return new OpenIndexWork.Builder( indexName );
}
@Override
public CloseIndexWorkBuilder closeIndex(URLEncodedString indexName) {
return new CloseIndexWork.Builder( indexName );
}
@Override
public IndexExistsWorkBuilder indexExists(URLEncodedString indexName) {
return new IndexExistsWork.Builder( indexName );
}
@Override
public GetIndexSettingsWorkBuilder getIndexSettings(URLEncodedString indexName) {
return new GetIndexSettingsWork.Builder( indexName );
}
@Override
public PutIndexSettingsWorkBuilder putIndexSettings(URLEncodedString indexName, IndexSettings settings) {
return new PutIndexSettingsWork.Builder( gsonProvider, indexName, settings );
}
@Override
public GetIndexTypeMappingsWorkBuilder getIndexTypeMappings(URLEncodedString indexName) {
return new GetIndexTypeMappingsWork.Builder( indexName );
}
@Override
public PutIndexMappingWorkBuilder putIndexTypeMapping(URLEncodedString indexName, URLEncodedString typeName, TypeMapping mapping) {
return new PutIndexTypeMappingWork.Builder( gsonProvider, indexName, typeName, mapping );
}
@Override
public WaitForIndexStatusWorkBuilder waitForIndexStatusWork(URLEncodedString indexName, ElasticsearchIndexStatus requiredStatus, String timeout) {
return new WaitForIndexStatusWork.Builder( indexName, requiredStatus, timeout );
}
}