You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@metamodel.apache.org by ar...@apache.org on 2018/05/30 08:15:32 UTC
[5/7] metamodel git commit: Refactoring. Column type MAP was removed
and ARRAY was replaced by LIST.
Refactoring.
Column type MAP was removed and ARRAY was replaced by LIST.
Project: http://git-wip-us.apache.org/repos/asf/metamodel/repo
Commit: http://git-wip-us.apache.org/repos/asf/metamodel/commit/f1457a15
Tree: http://git-wip-us.apache.org/repos/asf/metamodel/tree/f1457a15
Diff: http://git-wip-us.apache.org/repos/asf/metamodel/diff/f1457a15
Branch: refs/heads/master
Commit: f1457a15c3f1c32ff9a382ba81ec3ddafd76f326
Parents: e0a821c
Author: jakub <j....@quadient.com>
Authored: Fri May 25 08:01:21 2018 +0200
Committer: jakub <j....@quadient.com>
Committed: Fri May 25 08:01:21 2018 +0200
----------------------------------------------------------------------
.../metamodel/neo4j/Neo4jDataContext.java | 5 +-
.../neo4j/utils/ColumnTypeResolver.java | 58 ++++++++++----------
.../neo4j/utils/ColumnTypeResolverTest.java | 13 ++---
3 files changed, 36 insertions(+), 40 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/metamodel/blob/f1457a15/neo4j/src/main/java/org/apache/metamodel/neo4j/Neo4jDataContext.java
----------------------------------------------------------------------
diff --git a/neo4j/src/main/java/org/apache/metamodel/neo4j/Neo4jDataContext.java b/neo4j/src/main/java/org/apache/metamodel/neo4j/Neo4jDataContext.java
index 524d29c..662807d 100644
--- a/neo4j/src/main/java/org/apache/metamodel/neo4j/Neo4jDataContext.java
+++ b/neo4j/src/main/java/org/apache/metamodel/neo4j/Neo4jDataContext.java
@@ -198,9 +198,8 @@ public class Neo4jDataContext extends QueryPostprocessDataContext implements Dat
return null; // Do not add a table if label has no nodes (empty tables are considered non-existent)
} else {
final String[] columnNames = propertiesPerLabel.toArray(new String[propertiesPerLabel.size()]);
- final ColumnTypeResolver columnTypeResolver = new ColumnTypeResolver();
- return new SimpleTableDef(label, columnNames,
- columnTypeResolver.getColumnTypes(nodesPerLabel.get(0), columnNames));
+ final ColumnTypeResolver columnTypeResolver = new ColumnTypeResolver(nodesPerLabel.get(0), columnNames);
+ return new SimpleTableDef(label, columnNames, columnTypeResolver.getColumnTypes());
}
}
http://git-wip-us.apache.org/repos/asf/metamodel/blob/f1457a15/neo4j/src/main/java/org/apache/metamodel/neo4j/utils/ColumnTypeResolver.java
----------------------------------------------------------------------
diff --git a/neo4j/src/main/java/org/apache/metamodel/neo4j/utils/ColumnTypeResolver.java b/neo4j/src/main/java/org/apache/metamodel/neo4j/utils/ColumnTypeResolver.java
index f5a817b..aac8249 100644
--- a/neo4j/src/main/java/org/apache/metamodel/neo4j/utils/ColumnTypeResolver.java
+++ b/neo4j/src/main/java/org/apache/metamodel/neo4j/utils/ColumnTypeResolver.java
@@ -32,64 +32,66 @@ import org.slf4j.LoggerFactory;
public class ColumnTypeResolver {
private static final Logger logger = LoggerFactory.getLogger(ColumnTypeResolver.class);
-
- public ColumnType[] getColumnTypes(final JSONObject jsonObject, final String[] columnNamesArray) {
- final List<String> columnNames = new ArrayList<>(Arrays.asList(columnNamesArray));
- final List<ColumnType> columnTypes = new ArrayList<>();
+ private final JSONObject _jsonObject;
+ private final List<String> _columnNames = new ArrayList<>();
+ private final List<ColumnType> _columnTypes = new ArrayList<>();
+ public ColumnTypeResolver(final JSONObject jsonObject, final String[] columnNamesArray) {
+ _jsonObject = jsonObject;
+ _columnNames.addAll(Arrays.asList(columnNamesArray));
+ }
+
+ public ColumnType[] getColumnTypes() {
try {
- fillColumnTypesFromMetadata(jsonObject, columnNames, columnTypes);
- fillColumnTypesFromData(jsonObject, columnNames, columnTypes);
+ fillColumnTypesFromMetadata();
+ fillColumnTypesFromData();
} catch (final JSONException e) {
// ignore missing data
}
- fillColumnTypesFromRemainingColumns(columnNames, columnTypes);
- return columnTypes.toArray(new ColumnType[columnTypes.size()]);
+ fillColumnTypesFromRemainingColumns();
+ return _columnTypes.toArray(new ColumnType[_columnTypes.size()]);
}
- private void fillColumnTypesFromData(final JSONObject jsonObject, final List<String> columnNames,
- final List<ColumnType> columnTypes) throws JSONException {
+ private void fillColumnTypesFromData() throws JSONException {
final String dataKey = "data";
- if (jsonObject.has(dataKey)) {
- final JSONObject data = jsonObject.getJSONObject(dataKey);
+ if (_jsonObject.has(dataKey)) {
+ final JSONObject data = _jsonObject.getJSONObject(dataKey);
final Iterator<?> keysIterator = data.keys();
while (keysIterator.hasNext()) {
final String key = (String) keysIterator.next();
final ColumnType type = getTypeFromValue(data, key);
- columnTypes.add(type);
- removeIfAvailable(columnNames, key);
+ _columnTypes.add(type);
+ removeIfAvailable(_columnNames, key);
}
}
}
- private void fillColumnTypesFromMetadata(final JSONObject jsonObject, final List<String> columnNames,
- final List<ColumnType> columnTypes) throws JSONException {
+ private void fillColumnTypesFromMetadata() throws JSONException {
final String metadataKey = "metadata";
- if (jsonObject.has(metadataKey)) {
- final JSONObject metadata = jsonObject.getJSONObject(metadataKey);
+ if (_jsonObject.has(metadataKey)) {
+ final JSONObject metadata = _jsonObject.getJSONObject(metadataKey);
if (metadata.has("id")) {
- columnTypes.add(ColumnType.BIGINT);
- removeIfAvailable(columnNames, "_id");
+ _columnTypes.add(ColumnType.BIGINT);
+ removeIfAvailable(_columnNames, "_id");
}
}
}
- private void fillColumnTypesFromRemainingColumns(final List<String> columnNames,
- final List<ColumnType> columnTypes) {
- for (final String remainingColumnName : columnNames) {
+ private void fillColumnTypesFromRemainingColumns() {
+ for (final String remainingColumnName : _columnNames) {
if (remainingColumnName.contains("rel_")) {
if (remainingColumnName.contains("#")) {
- columnTypes.add(ColumnType.ARRAY);
+ _columnTypes.add(ColumnType.LIST);
} else {
- columnTypes.add(ColumnType.BIGINT);
+ _columnTypes.add(ColumnType.BIGINT);
}
} else {
- columnTypes.add(ColumnType.STRING);
+ _columnTypes.add(ColumnType.STRING);
}
}
}
@@ -113,9 +115,7 @@ public class ColumnTypeResolver {
} else if (keyClass.equals(Double.class)) {
return ColumnType.DOUBLE;
} else if (keyClass.equals(JSONArray.class)) {
- return ColumnType.ARRAY;
- } else if (keyClass.equals(JSONObject.class)) {
- return ColumnType.MAP;
+ return ColumnType.LIST;
}
} catch (final JSONException e) {
logger.error("JSON object does not contain required key '{}'. {}", key, e.getMessage());
http://git-wip-us.apache.org/repos/asf/metamodel/blob/f1457a15/neo4j/src/test/java/org/apache/metamodel/neo4j/utils/ColumnTypeResolverTest.java
----------------------------------------------------------------------
diff --git a/neo4j/src/test/java/org/apache/metamodel/neo4j/utils/ColumnTypeResolverTest.java b/neo4j/src/test/java/org/apache/metamodel/neo4j/utils/ColumnTypeResolverTest.java
index 8e56b66..3dce4b2 100644
--- a/neo4j/src/test/java/org/apache/metamodel/neo4j/utils/ColumnTypeResolverTest.java
+++ b/neo4j/src/test/java/org/apache/metamodel/neo4j/utils/ColumnTypeResolverTest.java
@@ -36,26 +36,24 @@ public class ColumnTypeResolverTest {
private static final String COLUMN_LONG = "long";
private static final String COLUMN_DOUBLE = "double";
private static final String COLUMN_ARRAY = "array";
- private static final String COLUMN_MAP = "map";
private static final String COLUMN_STRING = "string";
@Test
public void testGetColumnTypes() throws Exception {
- final ColumnTypeResolver resolver = new ColumnTypeResolver();
final JSONObject jsonObject = createJSONObject();
final String[] columnNames =
new String[] { COLUMN_ID_NEO4J, COLUMN_BOOLEAN, COLUMN_INTEGER, COLUMN_LONG, COLUMN_DOUBLE,
- COLUMN_ARRAY, COLUMN_MAP, COLUMN_STRING };
- final ColumnType[] columnTypes = resolver.getColumnTypes(jsonObject, columnNames);
+ COLUMN_ARRAY, COLUMN_STRING };
+ final ColumnTypeResolver resolver = new ColumnTypeResolver(jsonObject, columnNames);
+ final ColumnType[] columnTypes = resolver.getColumnTypes();
assertEquals(columnTypes.length, columnNames.length);
assertEquals(columnTypes[0], ColumnType.BIGINT); // ID
assertEquals(columnTypes[1], ColumnType.BOOLEAN);
assertEquals(columnTypes[2], ColumnType.STRING);
- assertEquals(columnTypes[3], ColumnType.ARRAY);
+ assertEquals(columnTypes[3], ColumnType.LIST);
assertEquals(columnTypes[4], ColumnType.DOUBLE);
assertEquals(columnTypes[5], ColumnType.INTEGER);
- assertEquals(columnTypes[6], ColumnType.MAP);
- assertEquals(columnTypes[7], ColumnType.BIGINT);
+ assertEquals(columnTypes[6], ColumnType.BIGINT);
}
private JSONObject createJSONObject() throws JSONException {
@@ -73,7 +71,6 @@ public class ColumnTypeResolverTest {
data.put(COLUMN_INTEGER, 42);
final JSONObject map = new JSONObject();
map.put("1", "one").put("2", "two").put("3", "three");
- data.put(COLUMN_MAP, map);
data.put(COLUMN_LONG, 12345678910L);
json.put(COLUMN_DATA, data);