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 52d5053  made ColumnValue a class
52d5053 is described below

commit 52d5053ed059eaff9de9f261c9ec8a11c9566347
Author: Anil <aging...@pivotal.io>
AuthorDate: Wed Oct 25 13:06:24 2017 -0700

    made ColumnValue a class
---
 .../apache/geode/connectors/jdbc/JDBCManager.java  | 53 ++++++++++++++++++++--
 1 file changed, 48 insertions(+), 5 deletions(-)

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 13a94c9..69bf897 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
@@ -5,8 +5,10 @@ import java.sql.DriverManager;
 import java.sql.PreparedStatement;
 import java.sql.SQLException;
 import java.sql.Statement;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 
 import org.apache.geode.cache.Operation;
 import org.apache.geode.cache.Region;
@@ -30,15 +32,34 @@ public class JDBCManager {
     // stmt = conn.createStatement();
   }
 
-  public interface ColumnValue {
-    String getColumnName();
+  public class ColumnValue {
+    
+    final private boolean isKey;
+    final private String columnName;
+    final private Object value;
 
-    Object getValue();
+    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);
+    List<ColumnValue> columnList = getColumnToValueList(tableName, key, value, 
operation);
     String query = getQueryString(tableName, columnList, operation);
     Statement statement = getQueryStatement(columnList, query);
     try {
@@ -97,7 +118,29 @@ public class JDBCManager {
     return null;
   }
 
-  private List<ColumnValue> getColumnToValueList(String tableName, Object key, 
PdxInstance value) {
+  private List<ColumnValue> getColumnToValueList(String tableName, Object key, 
PdxInstance value, Operation operation) {
+    Set<String> keyColumnNames = getKeyColumnNames(tableName);
+    for (String fieldName: value.getFieldNames()) {
+      String columnName = mapFieldNameToColumnName(fieldName, tableName);
+      boolean isKey = keyColumnNames.contains(columnName);
+      
+      if (operation.isDestroy() && !isKey) {
+        continue;
+      }
+      // TODO: what if isKey and value needs to be the key object?
+      Object columnValue = value.getField(fieldName);
+      ColumnValue cv = new ColumnValue(isKey, fieldName, columnValue);
+    }
+    String[] valueColumnNames = getValueColumnNames(tableName, value);
+    return null;
+  }
+
+  private String mapFieldNameToColumnName(String fieldName, String tableName) {
+    // TODO check config for mapping
+    return fieldName;
+  }
+
+  private Set<String> getKeyColumnNames(String tableName) {
     // TODO Auto-generated method stub
     return null;
   }

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

Reply via email to