Skip to content

Commit

Permalink
Merge pull request #2 from tq-jappy/config-references-external-id
Browse files Browse the repository at this point in the history
Enable to specify column name with relation object's external id
  • Loading branch information
tzmfreedom committed Jun 28, 2015
2 parents 277d45d + cea0d0d commit 6a55716
Showing 1 changed file with 19 additions and 4 deletions.
23 changes: 19 additions & 4 deletions src/main/java/org/embulk/output/SalesforceOutputPlugin.java
Original file line number Diff line number Diff line change
Expand Up @@ -194,7 +194,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) {
Expand All @@ -208,17 +208,32 @@ 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) {
record.addField(column.getName(), pageReader.getLong(column));
columnWithReferenceCheck(column.getName(), pageReader.getLong(column));
}
@Override
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);

Expand Down

0 comments on commit 6a55716

Please sign in to comment.