Skip to content

Commit 6a55716

Browse files
committed
Merge pull request #2 from tq-jappy/config-references-external-id
Enable to specify column name with relation object's external id
2 parents 277d45d + cea0d0d commit 6a55716

File tree

1 file changed

+19
-4
lines changed

1 file changed

+19
-4
lines changed

Diff for: src/main/java/org/embulk/output/SalesforceOutputPlugin.java

+19-4
Original file line numberDiff line numberDiff line change
@@ -194,7 +194,7 @@ public void add(Page page)
194194
pageReader.getSchema().visitColumns(new ColumnVisitor() {
195195
@Override
196196
public void doubleColumn(Column column) {
197-
record.addField(column.getName(), pageReader.getDouble(column));
197+
columnWithReferenceCheck(column.getName(), pageReader.getDouble(column));
198198
}
199199
@Override
200200
public void timestampColumn(Column column) {
@@ -208,17 +208,32 @@ public void timestampColumn(Column column) {
208208
}
209209
@Override
210210
public void stringColumn(Column column) {
211-
record.addField(column.getName(), pageReader.getString(column));
211+
columnWithReferenceCheck(column.getName(), pageReader.getString(column));
212212
}
213213
@Override
214214
public void longColumn(Column column) {
215-
record.addField(column.getName(), pageReader.getLong(column));
215+
columnWithReferenceCheck(column.getName(), pageReader.getLong(column));
216216
}
217217
@Override
218218
public void booleanColumn(Column column) {
219219
record.addField(column.getName(), pageReader.getBoolean(column));
220220
}
221-
221+
222+
private void columnWithReferenceCheck(String name, Object value) {
223+
if (name.indexOf('.') > 0) {
224+
String[] tokens = name.split("\\.");
225+
String referencesFieldName = tokens[0];
226+
String externalIdFieldName = tokens[1];
227+
228+
SObject sObjRef = new SObject();
229+
sObjRef.setType(referencesFieldName.replaceAll("__(r|R)", "__c"));
230+
sObjRef.addField(externalIdFieldName, value);
231+
record.addField(referencesFieldName, sObjRef);
232+
} else {
233+
record.addField(name, value);
234+
}
235+
}
236+
222237
});
223238
this.records.add(record);
224239

0 commit comments

Comments
 (0)