All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.dashbuilder.dataset.def.ElasticSearchDataSetDef Maven / Gradle / Ivy

/*
 * Copyright 2014 Red Hat, Inc. and/or its affiliates.
 *
 * 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 org.dashbuilder.dataset.def;

import org.dashbuilder.dataprovider.DataSetProviderType;
import org.dashbuilder.dataset.sort.ColumnSort;
import org.dashbuilder.dataset.validation.groups.ElasticSearchDataSetDefValidation;

import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

/**
 * 

DataSet definition class for ElasticSearch provider.

* *

This dataset provides these configuration parameters:

*
    *
  • * serverURL - The URL for the ElasticSearch server instance (MANDATORY) *
  • *
  • * clusterName - The name of the cluster in the ElasticSearch server. *
  • *
  • * index - The name of the index. It can be a concrete index name, a collection of index names, comma separated, or the keyword _all for working with all available indexes in the ElasticSearch server (OPTIONAL - Defaults to _all) *
  • *
  • * type - The type name. Only applicable if index parameter is set. It can be a concrete type name, a collection of type names, comma separated, or the keyword _all for working with all available type in the ElasticSearch server (OPTIONAL - Defaults to _all) *
  • *
  • * query - You can perform your custom ElasticSearch DSL query for this data provider. If this parameter exist, the parameters index, type and field are skipped. (OPTIONAL) *
  • *
  • * relevance - The relevance value for search results (OPTIONAL) *
  • *
  • * columns - If not specified, the column definitions for the ElasticSearch dataset are automatically given by querying the index mappings. Otherwise, you can bind a column to another datatype in dashbuilder application using this parameters (OPTIONAL) *
  • *
* * @since 0.3.0 */ public class ElasticSearchDataSetDef extends DataSetDef { // Constants. public static enum ElasticSearchKeywords { ALL; private static final String KEYWORD_ALL = "_all"; @Override public String toString() { if (this.equals(ALL)) return KEYWORD_ALL; return super.toString(); } } // Data Set user parameters. @NotNull(groups = {ElasticSearchDataSetDefValidation.class}) @Size(min = 1, groups = {ElasticSearchDataSetDefValidation.class}) protected String serverURL; protected String clusterName; /** * Index/es to query. Can handle multiple values, comma separated. */ @NotNull(groups = {ElasticSearchDataSetDefValidation.class}) @Size(min = 1, groups = {ElasticSearchDataSetDefValidation.class}) protected String index; /** * Type/es to query. Can handle multiple values, comma separated. Not mandatory. */ protected String type; protected String query; protected String relevance; protected ColumnSort columnSort; public ElasticSearchDataSetDef() { super.setProvider(DataSetProviderType.ELASTICSEARCH); } public String getServerURL() { return serverURL; } public void setServerURL(String serverURL) { this.serverURL = serverURL; } public String getClusterName() { return clusterName; } public void setClusterName(String clusterName) { this.clusterName = clusterName; } public String getIndex() { return index; } public void setIndex(String index) { this.index = index; } public String getType() { return type; } public void setType(String type) { this.type = type; } public String getQuery() { return query; } public void setQuery(String query) { this.query = query; } public String getRelevance() { return relevance; } public void setRelevance(String relevance) { this.relevance = relevance; } public boolean isCacheEnabled() { return cacheEnabled; } public void setCacheEnabled(boolean cacheEnabled) { this.cacheEnabled = cacheEnabled; } public Integer getCacheMaxRows() { return cacheMaxRows; } public void setCacheMaxRows(Integer cacheMaxRows) { this.cacheMaxRows = cacheMaxRows; } public ColumnSort getColumnSort() { return columnSort; } public void setColumnSort(ColumnSort columnSort) { this.columnSort = columnSort; } @Override public boolean equals(Object obj) { try { ElasticSearchDataSetDef other = (ElasticSearchDataSetDef) obj; if (!super.equals(other)) { return false; } if (serverURL != null && !serverURL.equals(other.serverURL)) { return false; } if (clusterName != null && !clusterName.equals(other.clusterName)) { return false; } if (index != null && !index.equals(other.index)) { return false; } return true; } catch (ClassCastException e) { return false; } } @Override public DataSetDef clone() { ElasticSearchDataSetDef def = new ElasticSearchDataSetDef(); clone(def); def.setServerURL(getServerURL()); def.setClusterName(getClusterName()); def.setIndex(getIndex()); def.setType(getType()); return def; } public String toString() { StringBuilder out = new StringBuilder(); out.append("UUID=").append(UUID).append("\n"); out.append("Provider=").append(provider).append("\n"); out.append("Public=").append(isPublic).append("\n"); out.append("Push enabled=").append(pushEnabled).append("\n"); out.append("Push max size=").append(pushMaxSize).append(" Kb\n"); out.append("Server URL=").append(serverURL).append("\n"); out.append("Index=").append(index).append("\n"); out.append("Type=").append(type).append("\n"); out.append("Query=").append(query).append("\n"); out.append("Get all columns=").append(allColumnsEnabled).append("\n"); out.append("Cache enabled=").append(cacheEnabled).append("\n"); out.append("Cache max rows=").append(cacheMaxRows).append(" Kb\n"); return out.toString(); } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy