You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by ag...@apache.org on 2017/10/27 00:07:37 UTC

[geode] branch feature/GEODE-3781 updated: Extracted ColumnValue class.

This is an automated email from the ASF dual-hosted git repository.

agingade pushed a commit to branch feature/GEODE-3781
in repository https://gitbox.apache.org/repos/asf/geode.git


The following commit(s) were added to refs/heads/feature/GEODE-3781 by this push:
     new 77f119d  Extracted ColumnValue class.
77f119d is described below

commit 77f119d0271ffb5f6fb875d7fa3986dc40c083a0
Author: Anil <ag...@pivotal.io>
AuthorDate: Thu Oct 26 17:06:59 2017 -0700

    Extracted ColumnValue class.
---
 .../apache/geode/connectors/jdbc/ColumnValue.java  | 39 +++++++++
 .../apache/geode/connectors/jdbc/JDBCManager.java  | 94 +++++++++-------------
 2 files changed, 75 insertions(+), 58 deletions(-)

diff --git a/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/ColumnValue.java b/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/ColumnValue.java
new file mode 100644
index 0000000..de422d5
--- /dev/null
+++ b/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/ColumnValue.java
@@ -0,0 +1,39 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more contributor license
+ * agreements. See the NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The ASF licenses this file to You 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.apache.geode.connectors.jdbc;
+
+public class ColumnValue {
+  final private boolean isKey;
+  final private String columnName;
+  final private Object value;
+
+  public ColumnValue(boolean isKey, String columnName, Object value) {
+    this.isKey = isKey;
+    this.columnName = columnName;
+    this.value = value;
+  }
+
+  public boolean isKey() {
+    return this.isKey;
+  }
+
+  public String getColumnName() {
+    return this.columnName;
+  }
+
+  public Object getValue() {
+    return this.value;
+  }
+}
diff --git a/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/JDBCManager.java b/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/JDBCManager.java
index 1b98da6..0ec643b 100644
--- a/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/JDBCManager.java
+++ b/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/JDBCManager.java
@@ -37,35 +37,12 @@ public class JDBCManager {
 
   private Connection conn;
 
+  private final ConcurrentMap<String, String> tableToPrimaryKeyMap = new ConcurrentHashMap<>();
+
   JDBCManager(JDBCConfiguration config) {
     this.config = config;
   }
 
-  public class ColumnValue {
-
-    final private boolean isKey;
-    final private String columnName;
-    final private Object value;
-
-    public ColumnValue(boolean isKey, String columnName, Object value) {
-      this.isKey = isKey;
-      this.columnName = columnName;
-      this.value = value;
-    }
-
-    public boolean isKey() {
-      return this.isKey;
-    }
-
-    public String getColumnName() {
-      return this.columnName;
-    }
-
-    public Object getValue() {
-      return this.value;
-    }
-  }
-
   public void write(Region region, Operation operation, Object key, PdxInstance value) {
     String tableName = getTableName(region);
     List<ColumnValue> columnList = getColumnToValueList(tableName, key, value, operation);
@@ -265,44 +242,45 @@ public class JDBCManager {
     return fieldName;
   }
 
-  private final ConcurrentMap<String, String> tableToPrimaryKeyMap = new ConcurrentHashMap<>();
-
   private String getKeyColumnName(String tableName) {
     return tableToPrimaryKeyMap.computeIfAbsent(tableName, k -> {
-      // TODO: check config for key column
-      Connection con = getConnection();
-      try {
-        DatabaseMetaData metaData = con.getMetaData();
-        ResultSet tablesRS = metaData.getTables(null, null, "%", null);
-        String realTableName = null;
-        while (tablesRS.next()) {
-          String name = tablesRS.getString("TABLE_NAME");
-          if (name.equalsIgnoreCase(k)) {
-            if (realTableName != null) {
-              throw new IllegalStateException("Duplicate tables that match region name");
-            }
-            realTableName = name;
+      return computeKeyColumnName(k);
+    });
+  }
+
+  private String computeKeyColumnName(String k) {
+    // TODO: check config for key column
+    Connection con = getConnection();
+    try {
+      DatabaseMetaData metaData = con.getMetaData();
+      ResultSet tablesRS = metaData.getTables(null, null, "%", null);
+      String realTableName = null;
+      while (tablesRS.next()) {
+        String name = tablesRS.getString("TABLE_NAME");
+        if (name.equalsIgnoreCase(k)) {
+          if (realTableName != null) {
+            throw new IllegalStateException("Duplicate tables that match region name");
           }
+          realTableName = name;
         }
-        if (realTableName == null) {
-          throw new IllegalStateException("no table was found that matches " + k);
-        }
-        ResultSet primaryKeys = metaData.getPrimaryKeys(null, null, realTableName);
-        if (!primaryKeys.next()) {
-          throw new IllegalStateException(
-              "The table " + k + " does not have a primary key column.");
-        }
-        String key = primaryKeys.getString("COLUMN_NAME");
-        if (primaryKeys.next()) {
-          throw new IllegalStateException(
-              "The table " + k + " has more than one primary key column.");
-        }
-        return key;
-      } catch (SQLException e) {
-        handleSQLException(e);
-        return null; // never reached
       }
-    });
+      if (realTableName == null) {
+        throw new IllegalStateException("no table was found that matches " + k);
+      }
+      ResultSet primaryKeys = metaData.getPrimaryKeys(null, null, realTableName);
+      if (!primaryKeys.next()) {
+        throw new IllegalStateException("The table " + k + " does not have a primary key column.");
+      }
+      String key = primaryKeys.getString("COLUMN_NAME");
+      if (primaryKeys.next()) {
+        throw new IllegalStateException(
+            "The table " + k + " has more than one primary key column.");
+      }
+      return key;
+    } catch (SQLException e) {
+      handleSQLException(e);
+      return null; // never reached
+    }
   }
 
   private void handleSQLException(SQLException e) {

-- 
To stop receiving notification emails like this one, please contact
['"commits@geode.apache.org" <co...@geode.apache.org>'].