@@ -194,7 +194,7 @@ public void add(Page page)
194
194
pageReader .getSchema ().visitColumns (new ColumnVisitor () {
195
195
@ Override
196
196
public void doubleColumn (Column column ) {
197
- record . addField (column .getName (), pageReader .getDouble (column ));
197
+ columnWithReferenceCheck (column .getName (), pageReader .getDouble (column ));
198
198
}
199
199
@ Override
200
200
public void timestampColumn (Column column ) {
@@ -208,17 +208,32 @@ public void timestampColumn(Column column) {
208
208
}
209
209
@ Override
210
210
public void stringColumn (Column column ) {
211
- record . addField (column .getName (), pageReader .getString (column ));
211
+ columnWithReferenceCheck (column .getName (), pageReader .getString (column ));
212
212
}
213
213
@ Override
214
214
public void longColumn (Column column ) {
215
- record . addField (column .getName (), pageReader .getLong (column ));
215
+ columnWithReferenceCheck (column .getName (), pageReader .getLong (column ));
216
216
}
217
217
@ Override
218
218
public void booleanColumn (Column column ) {
219
219
record .addField (column .getName (), pageReader .getBoolean (column ));
220
220
}
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
+
222
237
});
223
238
this .records .add (record );
224
239
0 commit comments