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>'].