You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@apex.apache.org by sa...@apache.org on 2016/05/23 10:28:40 UTC

[1/2] incubator-apex-malhar git commit: APEXMALHAR-2075 enhance jdbcinputpojooperator to support date/time/timestamp fields in POJO

Repository: incubator-apex-malhar
Updated Branches:
  refs/heads/master debf3c0cc -> 2f307965c


APEXMALHAR-2075 enhance jdbcinputpojooperator to support date/time/timestamp fields in POJO


Project: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/commit/138a9f59
Tree: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/tree/138a9f59
Diff: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/diff/138a9f59

Branch: refs/heads/master
Commit: 138a9f59e441c989b6a6e5252479d248facf5bfb
Parents: 2459f6c
Author: shubham <sh...@github.com>
Authored: Tue May 3 17:03:24 2016 +0530
Committer: shubham <sh...@github.com>
Committed: Fri May 13 18:20:51 2016 +0530

----------------------------------------------------------------------
 .../lib/db/jdbc/JdbcPOJOInputOperator.java      | 18 ++---
 .../lib/db/jdbc/JdbcOperatorTest.java           | 79 ++++++++++++++++++--
 2 files changed, 83 insertions(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/138a9f59/library/src/main/java/com/datatorrent/lib/db/jdbc/JdbcPOJOInputOperator.java
----------------------------------------------------------------------
diff --git a/library/src/main/java/com/datatorrent/lib/db/jdbc/JdbcPOJOInputOperator.java b/library/src/main/java/com/datatorrent/lib/db/jdbc/JdbcPOJOInputOperator.java
index a6183c2..db2d27a 100644
--- a/library/src/main/java/com/datatorrent/lib/db/jdbc/JdbcPOJOInputOperator.java
+++ b/library/src/main/java/com/datatorrent/lib/db/jdbc/JdbcPOJOInputOperator.java
@@ -292,17 +292,17 @@ public class JdbcPOJOInputOperator extends AbstractJdbcInputOperator<Object>
 
           case Types.TIMESTAMP:
             Timestamp tsVal = result.getTimestamp(i + 1);
-            ((PojoUtils.SetterLong<Object>)afi.setterOrGetter).set(obj, tsVal.getTime());
+            ((PojoUtils.Setter<Object, Timestamp>)afi.setterOrGetter).set(obj, tsVal);
             break;
 
           case Types.TIME:
             Time timeVal = result.getTime(i + 1);
-            ((PojoUtils.SetterLong<Object>)afi.setterOrGetter).set(obj, timeVal.getTime());
+            ((PojoUtils.Setter<Object, Time>)afi.setterOrGetter).set(obj, timeVal);
             break;
 
           case Types.DATE:
             Date dateVal = result.getDate(i + 1);
-            ((PojoUtils.SetterLong<Object>)afi.setterOrGetter).set(obj, dateVal.getTime());
+            ((PojoUtils.Setter<Object, Date>)afi.setterOrGetter).set(obj, dateVal);
             break;
 
           default:
@@ -415,18 +415,18 @@ public class JdbcPOJOInputOperator extends AbstractJdbcInputOperator<Object>
           break;
 
         case Types.TIMESTAMP:
-          activeFieldInfo.setterOrGetter = PojoUtils.createSetterLong(pojoClass,
-              activeFieldInfo.fieldInfo.getPojoFieldExpression());
+          activeFieldInfo.setterOrGetter = PojoUtils.createSetter(pojoClass,
+              activeFieldInfo.fieldInfo.getPojoFieldExpression(),Timestamp.class);
           break;
 
         case Types.TIME:
-          activeFieldInfo.setterOrGetter = PojoUtils.createSetterLong(pojoClass,
-              activeFieldInfo.fieldInfo.getPojoFieldExpression());
+          activeFieldInfo.setterOrGetter = PojoUtils.createSetter(pojoClass,
+              activeFieldInfo.fieldInfo.getPojoFieldExpression(),Time.class);
           break;
 
         case Types.DATE:
-          activeFieldInfo.setterOrGetter = PojoUtils.createSetterLong(pojoClass,
-              activeFieldInfo.fieldInfo.getPojoFieldExpression());
+          activeFieldInfo.setterOrGetter = PojoUtils.createSetter(pojoClass,
+              activeFieldInfo.fieldInfo.getPojoFieldExpression(), Date.class);
           break;
 
         default:

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/138a9f59/library/src/test/java/com/datatorrent/lib/db/jdbc/JdbcOperatorTest.java
----------------------------------------------------------------------
diff --git a/library/src/test/java/com/datatorrent/lib/db/jdbc/JdbcOperatorTest.java b/library/src/test/java/com/datatorrent/lib/db/jdbc/JdbcOperatorTest.java
index 1202511..1fef903 100644
--- a/library/src/test/java/com/datatorrent/lib/db/jdbc/JdbcOperatorTest.java
+++ b/library/src/test/java/com/datatorrent/lib/db/jdbc/JdbcOperatorTest.java
@@ -19,11 +19,14 @@
 package com.datatorrent.lib.db.jdbc;
 
 import java.sql.Connection;
+import java.sql.Date;
 import java.sql.DriverManager;
 import java.sql.PreparedStatement;
 import java.sql.ResultSet;
 import java.sql.SQLException;
 import java.sql.Statement;
+import java.sql.Time;
+import java.sql.Timestamp;
 import java.util.List;
 
 import javax.annotation.Nonnull;
@@ -70,6 +73,9 @@ public class JdbcOperatorTest
   {
     private int id;
     private String name;
+    private Date startDate;
+    private Time startTime;
+    private Timestamp startTimestamp;
 
     public TestPOJOEvent()
     {
@@ -101,6 +107,36 @@ public class JdbcOperatorTest
       this.name = name;
     }
 
+    public Date getStartDate()
+    {
+      return startDate;
+    }
+
+    public void setStartDate(Date startDate)
+    {
+      this.startDate = startDate;
+    }
+
+    public Time getStartTime()
+    {
+      return startTime;
+    }
+
+    public void setStartTime(Time startTime)
+    {
+      this.startTime = startTime;
+    }
+
+    public Timestamp getStartTimestamp()
+    {
+      return startTimestamp;
+    }
+
+    public void setStartTimestamp(Timestamp startTimestamp)
+    {
+      this.startTimestamp = startTimestamp;
+    }
+
   }
 
   @BeforeClass
@@ -124,7 +160,7 @@ public class JdbcOperatorTest
       String createTable = "CREATE TABLE IF NOT EXISTS " + TABLE_NAME + " (ID INTEGER)";
       stmt.executeUpdate(createTable);
       String createPOJOTable = "CREATE TABLE IF NOT EXISTS " + TABLE_POJO_NAME
-          + "(id INTEGER not NULL,name VARCHAR(255), PRIMARY KEY ( id ))";
+          + "(id INTEGER not NULL,name VARCHAR(255),startDate DATE,startTime TIME,startTimestamp TIMESTAMP, PRIMARY KEY ( id ))";
       stmt.executeUpdate(createPOJOTable);
     } catch (Throwable e) {
       DTThrowable.rethrow(e);
@@ -374,15 +410,18 @@ public class JdbcOperatorTest
     attributeMap.put(DAG.APPLICATION_ID, APP_ID);
     OperatorContextTestHelper.TestIdOperatorContext context = new OperatorContextTestHelper.TestIdOperatorContext(
         OPERATOR_ID, attributeMap);
-
-    insertEventsInTable(10);
+    
+    cleanTableAndInsertEvents(10);
 
     JdbcPOJOInputOperator inputOperator = new JdbcPOJOInputOperator();
     inputOperator.setStore(store);
-    inputOperator.setTableName(TABLE_NAME);
+    inputOperator.setTableName(TABLE_POJO_NAME);
 
     List<FieldInfo> fieldInfos = Lists.newArrayList();
     fieldInfos.add(new FieldInfo("ID", "id", null));
+    fieldInfos.add(new FieldInfo("STARTDATE", "startDate", null));
+    fieldInfos.add(new FieldInfo("STARTTIME", "startTime", null));
+    fieldInfos.add(new FieldInfo("STARTTIMESTAMP", "startTimestamp", null));
     inputOperator.setFieldInfos(fieldInfos);
 
     inputOperator.setFetchSize(5);
@@ -408,6 +447,9 @@ public class JdbcOperatorTest
     for (Object tuple : sink.collectedTuples) {
       TestPOJOEvent pojoEvent = (TestPOJOEvent)tuple;
       Assert.assertTrue("i=" + i, pojoEvent.getId() == i);
+      Assert.assertTrue("date", pojoEvent.getStartDate() instanceof Date);
+      Assert.assertTrue("time", pojoEvent.getStartTime() instanceof Time);
+      Assert.assertTrue("timestamp", pojoEvent.getStartTimestamp() instanceof Timestamp);
       i++;
     }
     sink.collectedTuples.clear();
@@ -420,6 +462,9 @@ public class JdbcOperatorTest
     for (Object tuple : sink.collectedTuples) {
       TestPOJOEvent pojoEvent = (TestPOJOEvent)tuple;
       Assert.assertTrue("i=" + i, pojoEvent.getId() == i);
+      Assert.assertTrue("date", pojoEvent.getStartDate() instanceof Date);
+      Assert.assertTrue("time", pojoEvent.getStartTime() instanceof Time);
+      Assert.assertTrue("timestamp", pojoEvent.getStartTimestamp() instanceof Timestamp);
       i++;
     }
 
@@ -431,5 +476,29 @@ public class JdbcOperatorTest
 
     Assert.assertEquals("rows from db", 0, sink.collectedTuples.size());
   }
-}
+  
+
+  private void cleanTableAndInsertEvents(int numEvents)
+  {
+    try (Connection con = DriverManager.getConnection(URL); Statement stmt = con.createStatement()) {
+      String cleanTable = "delete from " + TABLE_POJO_NAME;
+      stmt.executeUpdate(cleanTable);
+
+      String insert = "insert into " + TABLE_POJO_NAME + " values (?,?,?,?,?)";
+      PreparedStatement pStmt = con.prepareStatement(insert);
+      con.prepareStatement(insert);
 
+      for (int i = 0; i < numEvents; i++) {
+        pStmt.setInt(1, i);
+        pStmt.setString(2, "name");
+        pStmt.setDate(3, new Date(2016, 1, 1));
+        pStmt.setTime(4, new Time(2016, 1, 1));
+        pStmt.setTimestamp(5, new Timestamp(2016, 1, 1, 0, 0, 0, 0));
+        pStmt.executeUpdate();
+      }
+    } catch (SQLException e) {
+      throw new RuntimeException(e);
+    }
+  }
+
+}


[2/2] incubator-apex-malhar git commit: Merge branch 'APEXMALHAR-2075' of https://github.com/shubham-pathak22/incubator-apex-malhar

Posted by sa...@apache.org.
Merge branch 'APEXMALHAR-2075' of https://github.com/shubham-pathak22/incubator-apex-malhar


Project: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/commit/2f307965
Tree: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/tree/2f307965
Diff: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/diff/2f307965

Branch: refs/heads/master
Commit: 2f307965cd29d017a995df1eb9be122c66c59c01
Parents: debf3c0 138a9f5
Author: Sandeep Deshmukh <sa...@datatorrent.com>
Authored: Mon May 23 15:45:45 2016 +0530
Committer: Sandeep Deshmukh <sa...@datatorrent.com>
Committed: Mon May 23 15:45:45 2016 +0530

----------------------------------------------------------------------
 .../lib/db/jdbc/JdbcPOJOInputOperator.java      | 18 ++---
 .../lib/db/jdbc/JdbcOperatorTest.java           | 79 ++++++++++++++++++--
 2 files changed, 83 insertions(+), 14 deletions(-)
----------------------------------------------------------------------