Repository: nifi
Updated Branches:
  refs/heads/master b603cb955 -> 8acee0239


NIFI-1613

- Truncate text data types only.
- Added conversion from a boolean to number.


Project: http://git-wip-us.apache.org/repos/asf/nifi/repo
Commit: http://git-wip-us.apache.org/repos/asf/nifi/commit/8acee023
Tree: http://git-wip-us.apache.org/repos/asf/nifi/tree/8acee023
Diff: http://git-wip-us.apache.org/repos/asf/nifi/diff/8acee023

Branch: refs/heads/master
Commit: 8acee02393f9557b9679038b933ba49705984cf8
Parents: 3844a82
Author: Koji Kawamura <[email protected]>
Authored: Mon Jul 10 16:52:13 2017 +0900
Committer: Matt Burgess <[email protected]>
Committed: Wed Jul 12 17:02:55 2017 -0400

----------------------------------------------------------------------
 .../nifi-standard-processors/pom.xml            |  1 +
 .../processors/standard/ConvertJSONToSQL.java   | 13 +++++++++-
 .../standard/TestConvertJSONToSQL.java          | 27 ++++++++++++++++++++
 .../TestConvertJSONToSQL/person-with-bool.json  |  5 ++++
 4 files changed, 45 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/nifi/blob/8acee023/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/pom.xml
----------------------------------------------------------------------
diff --git 
a/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/pom.xml 
b/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/pom.xml
index 5c525ab..0df7ced 100644
--- a/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/pom.xml
+++ b/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/pom.xml
@@ -368,6 +368,7 @@
                         
<exclude>src/test/resources/TestConvertJSONToSQL/person-without-code.json</exclude>
                         
<exclude>src/test/resources/TestConvertJSONToSQL/person-with-null-code.json</exclude>
                         
<exclude>src/test/resources/TestConvertJSONToSQL/person-without-id.json</exclude>
+                        
<exclude>src/test/resources/TestConvertJSONToSQL/person-with-bool.json</exclude>
                         
<exclude>src/test/resources/TestModifyBytes/noFooter.txt</exclude>
                         
<exclude>src/test/resources/TestModifyBytes/noFooter_noHeader.txt</exclude>
                         
<exclude>src/test/resources/TestModifyBytes/noHeader.txt</exclude>

http://git-wip-us.apache.org/repos/asf/nifi/blob/8acee023/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/ConvertJSONToSQL.java
----------------------------------------------------------------------
diff --git 
a/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/ConvertJSONToSQL.java
 
b/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/ConvertJSONToSQL.java
index 2f2123a..00db3b5 100755
--- 
a/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/ConvertJSONToSQL.java
+++ 
b/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/ConvertJSONToSQL.java
@@ -518,6 +518,7 @@ public class ConvertJSONToSQL extends AbstractProcessor {
             break;
 
         // Don't truncate numeric types.
+        case Types.BIT:
         case Types.TINYINT:
         case Types.SMALLINT:
         case Types.INTEGER:
@@ -527,6 +528,10 @@ public class ConvertJSONToSQL extends AbstractProcessor {
         case Types.DOUBLE:
         case Types.DECIMAL:
         case Types.NUMERIC:
+            if (fieldNode.isBoolean()) {
+                // Convert boolean to number representation for databases 
those don't support boolean type.
+                fieldValue = fieldNode.asBoolean() ? "0" : "1";
+            }
             break;
 
         // Don't truncate DATE, TIME and TIMESTAMP types. We assume date and 
time is already correct in long representation.
@@ -539,7 +544,13 @@ public class ConvertJSONToSQL extends AbstractProcessor {
         case Types.TIMESTAMP:
             break;
 
-        default:
+        // Truncate string data types only.
+        case Types.CHAR:
+        case Types.VARCHAR:
+        case Types.LONGVARCHAR:
+        case Types.NCHAR:
+        case Types.NVARCHAR:
+        case Types.LONGNVARCHAR:
             if (colSize != null && fieldValue.length() > colSize) {
                 fieldValue = fieldValue.substring(0, colSize);
             }

http://git-wip-us.apache.org/repos/asf/nifi/blob/8acee023/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestConvertJSONToSQL.java
----------------------------------------------------------------------
diff --git 
a/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestConvertJSONToSQL.java
 
b/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestConvertJSONToSQL.java
index 2cd66eb..2332e28 100755
--- 
a/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestConvertJSONToSQL.java
+++ 
b/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestConvertJSONToSQL.java
@@ -185,6 +185,33 @@ public class TestConvertJSONToSQL {
         out.assertContentEquals("INSERT INTO PERSONS (ID, NAME, CODE) VALUES 
(?, ?, ?)");
     }
 
+    @Test
+    public void testInsertBoolToInteger() throws InitializationException, 
ProcessException, SQLException, IOException {
+        final TestRunner runner = 
TestRunners.newTestRunner(ConvertJSONToSQL.class);
+
+        runner.addControllerService("dbcp", service);
+        runner.enableControllerService(service);
+        runner.setProperty(ConvertJSONToSQL.CONNECTION_POOL, "dbcp");
+        runner.setProperty(ConvertJSONToSQL.TABLE_NAME, "PERSONS");
+        runner.setProperty(ConvertJSONToSQL.STATEMENT_TYPE, "INSERT");
+        
runner.enqueue(Paths.get("src/test/resources/TestConvertJSONToSQL/person-with-bool.json"));
+        runner.run();
+
+        runner.assertTransferCount(ConvertJSONToSQL.REL_ORIGINAL, 1);
+        
runner.getFlowFilesForRelationship(ConvertJSONToSQL.REL_ORIGINAL).get(0).assertAttributeEquals(FRAGMENT_COUNT.key(),
 "1");
+        runner.assertTransferCount(ConvertJSONToSQL.REL_SQL, 1);
+        final MockFlowFile out = 
runner.getFlowFilesForRelationship(ConvertJSONToSQL.REL_SQL).get(0);
+        out.assertAttributeEquals("sql.args.1.type", 
String.valueOf(java.sql.Types.INTEGER));
+        out.assertAttributeEquals("sql.args.1.value", "1");
+        out.assertAttributeEquals("sql.args.2.type", 
String.valueOf(java.sql.Types.VARCHAR));
+        out.assertAttributeEquals("sql.args.2.value", "Bool");
+        // Boolean value 'true' is converted to '0'
+        out.assertAttributeEquals("sql.args.3.type", 
String.valueOf(java.sql.Types.INTEGER));
+        out.assertAttributeEquals("sql.args.3.value", "0");
+
+        out.assertContentEquals("INSERT INTO PERSONS (ID, NAME, CODE) VALUES 
(?, ?, ?)");
+    }
+
 
     @Test
     public void testUpdateWithNullValue() throws InitializationException, 
ProcessException, SQLException, IOException {

http://git-wip-us.apache.org/repos/asf/nifi/blob/8acee023/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/resources/TestConvertJSONToSQL/person-with-bool.json
----------------------------------------------------------------------
diff --git 
a/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/resources/TestConvertJSONToSQL/person-with-bool.json
 
b/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/resources/TestConvertJSONToSQL/person-with-bool.json
new file mode 100644
index 0000000..b42f6fe
--- /dev/null
+++ 
b/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/resources/TestConvertJSONToSQL/person-with-bool.json
@@ -0,0 +1,5 @@
+{
+       "id": 1,
+       "name": "Bool",
+       "code": true
+}
\ No newline at end of file

Reply via email to