From 2c43735c4c7ac7b35a345425632c666ca32d096a Mon Sep 17 00:00:00 2001 From: Takumi Endo Date: Fri, 26 Jun 2015 00:38:49 +0900 Subject: [PATCH 1/2] Enable to specify references object's external id as column names --- .../embulk/output/SalesforceOutputPlugin.java | 21 ++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/embulk/output/SalesforceOutputPlugin.java b/src/main/java/org/embulk/output/SalesforceOutputPlugin.java index e1d34f4..c9bd06b 100644 --- a/src/main/java/org/embulk/output/SalesforceOutputPlugin.java +++ b/src/main/java/org/embulk/output/SalesforceOutputPlugin.java @@ -193,7 +193,7 @@ public void add(Page page) pageReader.getSchema().visitColumns(new ColumnVisitor() { @Override public void doubleColumn(Column column) { - record.addField(column.getName(), pageReader.getDouble(column)); + columnWithReferenceCheck(column.getName(), pageReader.getDouble(column)); } @Override public void timestampColumn(Column column) { @@ -207,7 +207,7 @@ public void timestampColumn(Column column) { } @Override public void stringColumn(Column column) { - record.addField(column.getName(), pageReader.getString(column)); + columnWithReferenceCheck(column.getName(), pageReader.getString(column)); } @Override public void longColumn(Column column) { @@ -217,7 +217,22 @@ public void longColumn(Column column) { public void booleanColumn(Column column) { record.addField(column.getName(), pageReader.getBoolean(column)); } - + + private void columnWithReferenceCheck(String name, Object value) { + if (name.indexOf('.') > 0) { + String[] tokens = name.split("\\."); + String referencesFieldName = tokens[0]; + String externalIdFieldName = tokens[1]; + + SObject sObjRef = new SObject(); + sObjRef.setType(referencesFieldName.replaceAll("__(r|R)", "__c")); + sObjRef.addField(externalIdFieldName, value); + record.addField(referencesFieldName, sObjRef); + } else { + record.addField(name, value); + } + } + }); this.records.add(record); From cea0d0df13f0636f149b5194ce0ee2cb09158504 Mon Sep 17 00:00:00 2001 From: Takumi Endo Date: Fri, 26 Jun 2015 01:13:48 +0900 Subject: [PATCH 2/2] Apply reference check to long type column --- src/main/java/org/embulk/output/SalesforceOutputPlugin.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/embulk/output/SalesforceOutputPlugin.java b/src/main/java/org/embulk/output/SalesforceOutputPlugin.java index c9bd06b..df7443b 100644 --- a/src/main/java/org/embulk/output/SalesforceOutputPlugin.java +++ b/src/main/java/org/embulk/output/SalesforceOutputPlugin.java @@ -211,7 +211,7 @@ public void stringColumn(Column column) { } @Override public void longColumn(Column column) { - record.addField(column.getName(), pageReader.getLong(column)); + columnWithReferenceCheck(column.getName(), pageReader.getLong(column)); } @Override public void booleanColumn(Column column) {