You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@metamodel.apache.org by ka...@apache.org on 2014/09/20 12:39:28 UTC
git commit: Code beautification - made in line with rest of code
(final variables, use of curly brackets, specified generic arguments).
Repository: incubator-metamodel
Updated Branches:
refs/heads/master 55a752feb -> 5f95bf854
Code beautification - made in line with rest of code (final variables,
use of curly brackets, specified generic arguments).
Project: http://git-wip-us.apache.org/repos/asf/incubator-metamodel/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-metamodel/commit/5f95bf85
Tree: http://git-wip-us.apache.org/repos/asf/incubator-metamodel/tree/5f95bf85
Diff: http://git-wip-us.apache.org/repos/asf/incubator-metamodel/diff/5f95bf85
Branch: refs/heads/master
Commit: 5f95bf854fef2408a955e9744bae5f828e3c45a7
Parents: 55a752f
Author: Kasper Sørensen <i....@gmail.com>
Authored: Sat Sep 20 12:38:14 2014 +0200
Committer: Kasper Sørensen <i....@gmail.com>
Committed: Sat Sep 20 12:38:14 2014 +0200
----------------------------------------------------------------------
.../elasticsearch/ElasticSearchDataContext.java | 255 +++++++++----------
.../elasticsearch/ElasticSearchDataSet.java | 14 +-
.../elasticsearch/ElasticSearchMetaData.java | 5 +-
.../ElasticSearchMetaDataParser.java | 48 ++--
4 files changed, 159 insertions(+), 163 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-metamodel/blob/5f95bf85/elasticsearch/src/main/java/org/apache/metamodel/elasticsearch/ElasticSearchDataContext.java
----------------------------------------------------------------------
diff --git a/elasticsearch/src/main/java/org/apache/metamodel/elasticsearch/ElasticSearchDataContext.java b/elasticsearch/src/main/java/org/apache/metamodel/elasticsearch/ElasticSearchDataContext.java
index 06ea651..2cc11b8 100644
--- a/elasticsearch/src/main/java/org/apache/metamodel/elasticsearch/ElasticSearchDataContext.java
+++ b/elasticsearch/src/main/java/org/apache/metamodel/elasticsearch/ElasticSearchDataContext.java
@@ -45,21 +45,22 @@ import java.util.*;
/**
* DataContext implementation for ElasticSearch analytics engine.
*
- * Since ElasticSearch has indexes and types a virtual schema will be used in this
- * DataContext where the tables will be the types. We will also maintain a hashmap that
- * will contain the index/type relationship. This implementation supports either automatic
- * discovery of a schema or manual specification of a schema, through the {@link SimpleTableDef} class.
+ * Since ElasticSearch has indexes and types a virtual schema will be used in
+ * this DataContext where the tables will be the types. We will also maintain a
+ * hashmap that will contain the index/type relationship. This implementation
+ * supports either automatic discovery of a schema or manual specification of a
+ * schema, through the {@link SimpleTableDef} class.
*
* @author Alberto Rodriguez
*/
-public class ElasticSearchDataContext extends QueryPostprocessDataContext
- implements DataContext {
+public class ElasticSearchDataContext extends QueryPostprocessDataContext implements DataContext {
+
private static final Logger logger = LoggerFactory.getLogger(ElasticSearchDataContext.class);
private static final String ES_CLUSTER_NAME = "cluster.name";
private final Client elasticSearchClient;
private final SimpleTableDef[] tableDefs;
- private HashMap<String,String> typeAndIndexes = new HashMap();
+ private HashMap<String, String> typeAndIndexes = new HashMap<String, String>();
/**
* Constructs a {@link ElasticSearchDataContext}. This constructor accepts a
@@ -78,8 +79,9 @@ public class ElasticSearchDataContext extends QueryPostprocessDataContext
}
/**
- * Constructs a {@link ElasticSearchDataContext} and automatically detects the
- * schema structure/view on all indexes (see {@link #detectSchema(Client)}).
+ * Constructs a {@link ElasticSearchDataContext} and automatically detects
+ * the schema structure/view on all indexes (see
+ * {@link #detectSchema(Client)}).
*
* @param client
* the ElasticSearch client
@@ -88,11 +90,10 @@ public class ElasticSearchDataContext extends QueryPostprocessDataContext
this(client, detectSchema(client));
}
-
/**
- * Performs an analysis of the available indexes in an ElasticSearch cluster {@link Client}
- * instance and detects the elasticsearch types structure based on the metadata provided by
- * the ElasticSearch java client.
+ * Performs an analysis of the available indexes in an ElasticSearch cluster
+ * {@link Client} instance and detects the elasticsearch types structure
+ * based on the metadata provided by the ElasticSearch java client.
*
* @see #detectTable(ClusterState, String, String)
*
@@ -102,24 +103,25 @@ public class ElasticSearchDataContext extends QueryPostprocessDataContext
* user.
*/
public static SimpleTableDef[] detectSchema(Client client) {
- List<String> indexNames = new ArrayList();
+ List<String> indexNames = new ArrayList<String>();
ClusterStateResponse clusterStateResponse = client.admin().cluster().prepareState().execute().actionGet();
- ImmutableOpenMap<String,IndexMetaData> indexes = clusterStateResponse.getState().getMetaData().getIndices();
+ ImmutableOpenMap<String, IndexMetaData> indexes = clusterStateResponse.getState().getMetaData().getIndices();
for (ObjectCursor<String> typeCursor : indexes.keys())
indexNames.add(typeCursor.value);
- List<SimpleTableDef> result = new ArrayList();
+ List<SimpleTableDef> result = new ArrayList<SimpleTableDef>();
for (String indexName : indexNames) {
- ClusterState cs = client.admin().cluster().prepareState().setIndices(indexName).execute().actionGet().getState();
+ ClusterState cs = client.admin().cluster().prepareState().setIndices(indexName).execute().actionGet()
+ .getState();
IndexMetaData imd = cs.getMetaData().index(indexName);
ImmutableOpenMap<String, MappingMetaData> mappings = imd.getMappings();
- ObjectLookupContainer indexTypes = mappings.keys();
- for (Object indexType: indexTypes) {
- String typeName = ((ObjectCursor) indexType).value.toString();
+ final ObjectLookupContainer<String> indexTypes = mappings.keys();
+ for (Object indexType : indexTypes) {
+ String typeName = ((ObjectCursor<?>) indexType).value.toString();
try {
SimpleTableDef table = detectTable(cs, indexName, typeName);
result.add(table);
- } catch(Exception e) {
- logger.error("Unexpected error during detectSchema for table: "+typeName, e);
+ } catch (Exception e) {
+ logger.error("Unexpected error during detectSchema for table: " + typeName, e);
}
}
@@ -129,9 +131,9 @@ public class ElasticSearchDataContext extends QueryPostprocessDataContext
}
/**
- * Performs an analysis of an available index type in an ElasticSearch {@link Client}
- * client and tries to detect the index structure based on the metadata provided
- * by the java client.
+ * Performs an analysis of an available index type in an ElasticSearch
+ * {@link Client} client and tries to detect the index structure based on
+ * the metadata provided by the java client.
*
* @param cs
* the ElasticSearch cluster
@@ -145,34 +147,33 @@ public class ElasticSearchDataContext extends QueryPostprocessDataContext
IndexMetaData imd = cs.getMetaData().index(indexName);
MappingMetaData mappingMetaData = imd.mapping(typeName);
Map<String, Object> mp = mappingMetaData.getSourceAsMap();
- Iterator it = mp.entrySet().iterator();
- Map.Entry pair = (Map.Entry)it.next();
+ Iterator<Map.Entry<String, Object>> it = mp.entrySet().iterator();
+ Map.Entry<String, Object> pair = it.next();
ElasticSearchMetaData metaData = ElasticSearchMetaDataParser.parse(pair.getValue());
return new SimpleTableDef(typeName, metaData.getColumnNames(), metaData.getColumnTypes());
}
-
@Override
protected Schema getMainSchema() throws MetaModelException {
- MutableSchema theSchema = new MutableSchema(getMainSchemaName());
- for (SimpleTableDef tableDef: tableDefs) {
- MutableTable table = tableDef.toTable().setSchema(theSchema);
- theSchema.addTable(table);
- }
- return theSchema;
+ MutableSchema theSchema = new MutableSchema(getMainSchemaName());
+ for (SimpleTableDef tableDef : tableDefs) {
+ MutableTable table = tableDef.toTable().setSchema(theSchema);
+ theSchema.addTable(table);
+ }
+ return theSchema;
}
@Override
protected String getMainSchemaName() throws MetaModelException {
- return elasticSearchClient.settings().get(ES_CLUSTER_NAME);
+ return elasticSearchClient.settings().get(ES_CLUSTER_NAME);
}
@Override
protected DataSet materializeMainSchemaTable(Table table, Column[] columns, int maxRows) {
- SearchRequestBuilder requestBuilder = elasticSearchClient.
- prepareSearch(getIndexNameForIndexType(table.getName())).
- setTypes(table.getName());
- if (limitMaxRowsIsSet(maxRows)) requestBuilder.setSize(maxRows);
+ SearchRequestBuilder requestBuilder = elasticSearchClient.prepareSearch(
+ getIndexNameForIndexType(table.getName())).setTypes(table.getName());
+ if (limitMaxRowsIsSet(maxRows))
+ requestBuilder.setSize(maxRows);
SearchResponse response = requestBuilder.execute().actionGet();
return new ElasticSearchDataSet(response, columns, false);
}
@@ -180,9 +181,7 @@ public class ElasticSearchDataContext extends QueryPostprocessDataContext
@Override
protected Number executeCountQuery(Table table, List<FilterItem> whereItems, boolean functionApproximationAllowed) {
CountResponse response = elasticSearchClient.prepareCount(getIndexNameForIndexType(table.getName()))
- .setQuery(QueryBuilders.termQuery("_type", table.getName()))
- .execute()
- .actionGet();
+ .setQuery(QueryBuilders.termQuery("_type", table.getName())).execute().actionGet();
return response.getCount();
}
@@ -192,7 +191,7 @@ public class ElasticSearchDataContext extends QueryPostprocessDataContext
private String getIndexNameForIndexType(String indexType) {
String indexName = typeAndIndexes.get(indexType);
- if (indexName==null)
+ if (indexName == null)
indexName = fetchIndexNameFromES(indexType);
return indexName;
}
@@ -200,15 +199,16 @@ public class ElasticSearchDataContext extends QueryPostprocessDataContext
private String fetchIndexNameFromES(String indexType) {
String theIndexName = "";
boolean indexNameFound = false;
- List<String> indexNames = getIndexNamesFromES();
+ final List<String> indexNames = getIndexNamesFromES();
for (String indexName : indexNames) {
if (!indexNameFound) {
- ClusterState cs = elasticSearchClient.admin().cluster().prepareState().setIndices(indexName).execute().actionGet().getState();
- IndexMetaData imd = cs.getMetaData().index(indexName);
- ImmutableOpenMap<String, MappingMetaData> mappings = imd.getMappings();
- ObjectLookupContainer indexTypes = mappings.keys();
- for (Object type: indexTypes) {
- String typeName = ((ObjectCursor) type).value.toString();
+ final ClusterState cs = elasticSearchClient.admin().cluster().prepareState().setIndices(indexName)
+ .execute().actionGet().getState();
+ final IndexMetaData imd = cs.getMetaData().index(indexName);
+ final ImmutableOpenMap<String, MappingMetaData> mappings = imd.getMappings();
+ final ObjectLookupContainer<String> indexTypes = mappings.keys();
+ for (Object type : indexTypes) {
+ final String typeName = ((ObjectCursor<?>) type).value.toString();
if (typeName.equals(indexType)) {
theIndexName = indexName;
typeAndIndexes.put(typeName, indexName);
@@ -221,86 +221,85 @@ public class ElasticSearchDataContext extends QueryPostprocessDataContext
}
private List<String> getIndexNamesFromES() {
- List<String> indexNames = new ArrayList();
- ClusterStateResponse clusterStateResponse = elasticSearchClient.admin().cluster().prepareState().execute().actionGet();
- ImmutableOpenMap<String,IndexMetaData> indexes = clusterStateResponse.getState().getMetaData().getIndices();
- for (ObjectCursor<String> typeCursor : indexes.keys())
+ final List<String> indexNames = new ArrayList<String>();
+ final ClusterStateResponse clusterStateResponse = elasticSearchClient.admin().cluster().prepareState().execute()
+ .actionGet();
+ final ImmutableOpenMap<String, IndexMetaData> indexes = clusterStateResponse.getState().getMetaData().getIndices();
+ for (ObjectCursor<String> typeCursor : indexes.keys()) {
indexNames.add(typeCursor.value);
- return indexNames;
- }
-
-
-
-/* TODO: Implement corner cases of WHERE, GROUPBY... items that we can support natively.
- @Override
- public DataSet executeQuery(Query query) {
- // Check for queries containing only simple selects and where clauses,
- // or if it is a COUNT(*) query.
- // if from clause only contains a main schema table
- List<FromItem> fromItems = query.getFromClause().getItems();
- if (fromItems.size() == 1 && fromItems.get(0).getTable() != null && fromItems.get(0).getTable().getSchema() == schema) {
- final Table table = fromItems.get(0).getTable();
-
- // if GROUP BY, HAVING and ORDER BY clauses are not specified
- if (query.getGroupByClause().isEmpty() && query.getHavingClause().isEmpty() && query.getOrderByClause().isEmpty()) {
-
- final List<FilterItem> whereItems = query.getWhereClause().getItems();
-
- // if all of the select items are "pure" column selection
- boolean allSelectItemsAreColumns = true;
- List<SelectItem> selectItems = query.getSelectClause().getItems();
-
- // if it is a
- // "SELECT [columns] FROM [table] WHERE [conditions]"
- // query.
- for (SelectItem selectItem : selectItems) {
- if (selectItem.getFunction() != null || selectItem.getColumn() == null) {
- allSelectItemsAreColumns = false;
- break;
- }
- }
-
- if (allSelectItemsAreColumns) {
- logger.debug("Query can be expressed in full ElasticSearch, no post processing needed.");
-
- // prepare for a non-post-processed query
- Column[] columns = new Column[selectItems.size()];
- for (int i = 0; i < columns.length; i++) {
- columns[i] = selectItems.get(i).getColumn();
- }
-
- int firstRow = (query.getFirstRow() == null ? 1 : query.getFirstRow());
- int maxRows = (query.getMaxRows() == null ? -1 : query.getMaxRows());
-
- final DataSet dataSet = materializeMainSchemaTableInternal(table, columns, whereItems, firstRow, maxRows,
- false);
- return dataSet;
- }
- }
}
- logger.debug("Query will be simplified for ElasticSearch and post processed.");
- return super.executeQuery(query);
+ return indexNames;
}
- private DataSet materializeMainSchemaTableInternal(Table table, Column[] columns, List<FilterItem> whereItems, int firstRow,
- int maxRows, boolean queryPostProcessed) {
- //final SearchRequestBuilder collection = elasticSearchClient.prepareSearch(typeAndIndexes.get(table.getName())).setTypes(table.getName());
- ClusterStateResponse clusterStateResponse = elasticSearchClient.admin().cluster().prepareState().execute().actionGet();
- ImmutableOpenMap<String,IndexMetaData> indexes = clusterStateResponse.getState().getMetaData().getIndices();
- //final SearchRequestBuilder collection = elasticSearchClient.prepareSearch("twitter").setTypes("tweet1");
- SearchRequestBuilder requestBuilder = elasticSearchClient.prepareSearch();
-
- if (whereItems != null && !whereItems.isEmpty()) {
- for (FilterItem item : whereItems) {
- String operandWithIndexName = item.getSelectItem().toString();
- int operandNameIndexStart = operandWithIndexName.indexOf(".")+1;
- String operandWithoutIndexName = operandWithIndexName.substring(operandNameIndexStart);
- requestBuilder.setQuery(QueryBuilders.termQuery(operandWithoutIndexName, item.getOperand()));
- }
- }
-
- SearchResponse response = requestBuilder.execute().actionGet();
-
- return new ElasticSearchDataSet(response, columns, queryPostProcessed);
- }*/
+ /*
+ * TODO: Implement corner cases of WHERE, GROUPBY... items that we can
+ * support natively.
+ *
+ * @Override public DataSet executeQuery(Query query) { // Check for queries
+ * containing only simple selects and where clauses, // or if it is a
+ * COUNT(*) query. // if from clause only contains a main schema table
+ * List<FromItem> fromItems = query.getFromClause().getItems(); if
+ * (fromItems.size() == 1 && fromItems.get(0).getTable() != null &&
+ * fromItems.get(0).getTable().getSchema() == schema) { final Table table =
+ * fromItems.get(0).getTable();
+ *
+ * // if GROUP BY, HAVING and ORDER BY clauses are not specified if
+ * (query.getGroupByClause().isEmpty() && query.getHavingClause().isEmpty()
+ * && query.getOrderByClause().isEmpty()) {
+ *
+ * final List<FilterItem> whereItems = query.getWhereClause().getItems();
+ *
+ * // if all of the select items are "pure" column selection boolean
+ * allSelectItemsAreColumns = true; List<SelectItem> selectItems =
+ * query.getSelectClause().getItems();
+ *
+ * // if it is a // "SELECT [columns] FROM [table] WHERE [conditions]" //
+ * query. for (SelectItem selectItem : selectItems) { if
+ * (selectItem.getFunction() != null || selectItem.getColumn() == null) {
+ * allSelectItemsAreColumns = false; break; } }
+ *
+ * if (allSelectItemsAreColumns) { logger.debug(
+ * "Query can be expressed in full ElasticSearch, no post processing needed."
+ * );
+ *
+ * // prepare for a non-post-processed query Column[] columns = new
+ * Column[selectItems.size()]; for (int i = 0; i < columns.length; i++) {
+ * columns[i] = selectItems.get(i).getColumn(); }
+ *
+ * int firstRow = (query.getFirstRow() == null ? 1 : query.getFirstRow());
+ * int maxRows = (query.getMaxRows() == null ? -1 : query.getMaxRows());
+ *
+ * final DataSet dataSet = materializeMainSchemaTableInternal(table,
+ * columns, whereItems, firstRow, maxRows, false); return dataSet; } } }
+ * logger
+ * .debug("Query will be simplified for ElasticSearch and post processed.");
+ * return super.executeQuery(query); }
+ *
+ * private DataSet materializeMainSchemaTableInternal(Table table, Column[]
+ * columns, List<FilterItem> whereItems, int firstRow, int maxRows, boolean
+ * queryPostProcessed) { //final SearchRequestBuilder collection =
+ * elasticSearchClient
+ * .prepareSearch(typeAndIndexes.get(table.getName())).setTypes
+ * (table.getName()); ClusterStateResponse clusterStateResponse =
+ * elasticSearchClient
+ * .admin().cluster().prepareState().execute().actionGet();
+ * ImmutableOpenMap<String,IndexMetaData> indexes =
+ * clusterStateResponse.getState().getMetaData().getIndices(); //final
+ * SearchRequestBuilder collection =
+ * elasticSearchClient.prepareSearch("twitter").setTypes("tweet1");
+ * SearchRequestBuilder requestBuilder =
+ * elasticSearchClient.prepareSearch();
+ *
+ * if (whereItems != null && !whereItems.isEmpty()) { for (FilterItem item :
+ * whereItems) { String operandWithIndexName =
+ * item.getSelectItem().toString(); int operandNameIndexStart =
+ * operandWithIndexName.indexOf(".")+1; String operandWithoutIndexName =
+ * operandWithIndexName.substring(operandNameIndexStart);
+ * requestBuilder.setQuery(QueryBuilders.termQuery(operandWithoutIndexName,
+ * item.getOperand())); } }
+ *
+ * SearchResponse response = requestBuilder.execute().actionGet();
+ *
+ * return new ElasticSearchDataSet(response, columns, queryPostProcessed); }
+ */
}
http://git-wip-us.apache.org/repos/asf/incubator-metamodel/blob/5f95bf85/elasticsearch/src/main/java/org/apache/metamodel/elasticsearch/ElasticSearchDataSet.java
----------------------------------------------------------------------
diff --git a/elasticsearch/src/main/java/org/apache/metamodel/elasticsearch/ElasticSearchDataSet.java b/elasticsearch/src/main/java/org/apache/metamodel/elasticsearch/ElasticSearchDataSet.java
index d68b4f0..5187b3c 100644
--- a/elasticsearch/src/main/java/org/apache/metamodel/elasticsearch/ElasticSearchDataSet.java
+++ b/elasticsearch/src/main/java/org/apache/metamodel/elasticsearch/ElasticSearchDataSet.java
@@ -32,8 +32,7 @@ import java.util.Map;
final class ElasticSearchDataSet extends AbstractDataSet {
- private static final Logger logger = LoggerFactory
- .getLogger(ElasticSearchDataSet.class);
+ private static final Logger logger = LoggerFactory.getLogger(ElasticSearchDataSet.class);
private int readCount = 0;
@@ -43,8 +42,7 @@ final class ElasticSearchDataSet extends AbstractDataSet {
private boolean _closed;
private volatile SearchHit _dbObject;
- public ElasticSearchDataSet(SearchResponse cursor, Column[] columns,
- boolean queryPostProcessed) {
+ public ElasticSearchDataSet(SearchResponse cursor, Column[] columns, boolean queryPostProcessed) {
super(columns);
_cursor = cursor.getHits().hits();
_queryPostProcessed = queryPostProcessed;
@@ -58,7 +56,7 @@ final class ElasticSearchDataSet extends AbstractDataSet {
@Override
public void close() {
super.close();
- //_cursor.close();
+ // _cursor.close();
_closed = true;
}
@@ -66,16 +64,14 @@ final class ElasticSearchDataSet extends AbstractDataSet {
protected void finalize() throws Throwable {
super.finalize();
if (!_closed) {
- logger.warn(
- "finalize() invoked, but DataSet is not closed. Invoking close() on {}",
- this);
+ logger.warn("finalize() invoked, but DataSet is not closed. Invoking close() on {}", this);
close();
}
}
@Override
public boolean next() {
- if (readCount<_cursor.length) {
+ if (readCount < _cursor.length) {
_dbObject = _cursor[readCount];
readCount++;
return true;
http://git-wip-us.apache.org/repos/asf/incubator-metamodel/blob/5f95bf85/elasticsearch/src/main/java/org/apache/metamodel/elasticsearch/ElasticSearchMetaData.java
----------------------------------------------------------------------
diff --git a/elasticsearch/src/main/java/org/apache/metamodel/elasticsearch/ElasticSearchMetaData.java b/elasticsearch/src/main/java/org/apache/metamodel/elasticsearch/ElasticSearchMetaData.java
index 328430d..3181071 100644
--- a/elasticsearch/src/main/java/org/apache/metamodel/elasticsearch/ElasticSearchMetaData.java
+++ b/elasticsearch/src/main/java/org/apache/metamodel/elasticsearch/ElasticSearchMetaData.java
@@ -29,8 +29,9 @@ import org.apache.metamodel.schema.ColumnType;
* @author Alberto Rodriguez
*/
public class ElasticSearchMetaData {
- private String[] columnNames;
- private ColumnType[] columnTypes;
+
+ private final String[] columnNames;
+ private final ColumnType[] columnTypes;
/**
* Constructs a {@link ElasticSearchMetaData}.
http://git-wip-us.apache.org/repos/asf/incubator-metamodel/blob/5f95bf85/elasticsearch/src/main/java/org/apache/metamodel/elasticsearch/ElasticSearchMetaDataParser.java
----------------------------------------------------------------------
diff --git a/elasticsearch/src/main/java/org/apache/metamodel/elasticsearch/ElasticSearchMetaDataParser.java b/elasticsearch/src/main/java/org/apache/metamodel/elasticsearch/ElasticSearchMetaDataParser.java
index 8d9589d..dfbca63 100644
--- a/elasticsearch/src/main/java/org/apache/metamodel/elasticsearch/ElasticSearchMetaDataParser.java
+++ b/elasticsearch/src/main/java/org/apache/metamodel/elasticsearch/ElasticSearchMetaDataParser.java
@@ -18,7 +18,6 @@
*/
package org.apache.metamodel.elasticsearch;
-
import org.apache.metamodel.schema.ColumnType;
/**
@@ -30,23 +29,22 @@ import org.apache.metamodel.schema.ColumnType;
*/
public class ElasticSearchMetaDataParser {
/**
- * Parses the ElasticSearch meta data info into an ElasticSearchMetaData object. This
- * method makes much easier to create the ElasticSearch schema.
+ * Parses the ElasticSearch meta data info into an ElasticSearchMetaData
+ * object. This method makes much easier to create the ElasticSearch schema.
*
* @param metaDataInfo
- * ElasticSearch metadata info in a json-like format
- * @return
- * An ElasticSearchMetaData object
+ * ElasticSearch metadata info in a json-like format
+ * @return An ElasticSearchMetaData object
*/
public static ElasticSearchMetaData parse(Object metaDataInfo) {
- String plainMetaDataInfo = removeFirstAndLastCharacter(metaDataInfo.toString());
- String metaDataWithoutDateFormats = removeDateFormats(plainMetaDataInfo);
- String[] metaDataFields = metaDataWithoutDateFormats.split(",");
- String[] fieldNames = new String[metaDataFields.length];
- ColumnType[] columnTypes = new ColumnType[metaDataFields.length];
+ final String plainMetaDataInfo = removeFirstAndLastCharacter(metaDataInfo.toString());
+ final String metaDataWithoutDateFormats = removeDateFormats(plainMetaDataInfo);
+ final String[] metaDataFields = metaDataWithoutDateFormats.split(",");
+ final String[] fieldNames = new String[metaDataFields.length];
+ final ColumnType[] columnTypes = new ColumnType[metaDataFields.length];
int i = 0;
- for (String metaDataField: metaDataFields) {
- //message={type=long}
+ for (String metaDataField : metaDataFields) {
+ // message={type=long}
fieldNames[i] = getNameFromMetaDataField(metaDataField);
columnTypes[i] = getColumnTypeFromMetaDataField(metaDataField);
i++;
@@ -56,7 +54,7 @@ public class ElasticSearchMetaDataParser {
}
private static String removeFirstAndLastCharacter(String metaDataInfo) {
- return metaDataInfo.substring(1, metaDataInfo.length()-1);
+ return metaDataInfo.substring(1, metaDataInfo.length() - 1);
}
private static String removeDateFormats(String metaDataInfo) {
@@ -68,26 +66,28 @@ public class ElasticSearchMetaDataParser {
}
private static ColumnType getColumnTypeFromMetaDataField(String metaDataField) {
- ColumnType columnType = null;
- String metaDataFieldType = getMetaDataFieldTypeFromMetaDataField(metaDataField);
- if (metaDataFieldType.equals("long"))
+ final ColumnType columnType;
+ final String metaDataFieldType = getMetaDataFieldTypeFromMetaDataField(metaDataField);
+ if (metaDataFieldType.equals("long")) {
columnType = ColumnType.BIGINT;
- else if (metaDataFieldType.equals("date"))
+ } else if (metaDataFieldType.equals("date")) {
columnType = ColumnType.DATE;
- else if (metaDataFieldType.equals("string"))
+ } else if (metaDataFieldType.equals("string")) {
columnType = ColumnType.STRING;
- else if (metaDataFieldType.equals("float"))
+ } else if (metaDataFieldType.equals("float")) {
columnType = ColumnType.FLOAT;
- else if (metaDataFieldType.equals("boolean"))
+ } else if (metaDataFieldType.equals("boolean")) {
columnType = ColumnType.FLOAT;
- else
+ } else {
columnType = ColumnType.STRING;
+ }
return columnType;
}
private static String getMetaDataFieldTypeFromMetaDataField(String metaDataField) {
- String metaDataFieldWithoutName = metaDataField.substring(metaDataField.indexOf("=")+1);
- String metaDataFieldType = metaDataFieldWithoutName.substring(metaDataFieldWithoutName.indexOf("=")+1, metaDataFieldWithoutName.length()-1);
+ final String metaDataFieldWithoutName = metaDataField.substring(metaDataField.indexOf("=") + 1);
+ final String metaDataFieldType = metaDataFieldWithoutName.substring(metaDataFieldWithoutName.indexOf("=") + 1,
+ metaDataFieldWithoutName.length() - 1);
return metaDataFieldType;
}