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);