[
https://issues.apache.org/jira/browse/CAMEL-10193?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16239774#comment-16239774
]
vassilis edited comment on CAMEL-10193 at 11/5/17 11:56 PM:
------------------------------------------------------------
Hello all,
I just sent the above PR against 2.19.x, I hope it is of use :-)The
implementation logic is as proposed by [~dhirajsb], in brief:
* If a field (blng_ _Invoice_ _c) of an object (blng_ _Payment_ _c) is a lookup
field and points (blng_ _Invoice_ _c.blng_ _Payment_ _c --blng_ _Invoice_ _r-->
blng_ _Invoice_ _c) to another object (blng_ _Invoice_ _c) that has at least
one externaId (blng_ _Invoice_ _c.Invoice_External_Id_ _c), then a relationship
field is generated as well.
* If an object (blng_ _Invoice_ _c) is used in at least one lookup field as the
target object, then we generate also a Lookup object (blng_ _Invoice_
_c_Lookup) for that object (blng_ _Invoice__c).
E.g.
{code:java}
public class blng__Payment__c extends AbstractDescribedSObjectBase {
private static final SObjectDescription DESCRIPTION =
createSObjectDescription();
// blng__Invoice__c
private String blng__Invoice__c;
@JsonProperty("blng__Invoice__c")
public String getblng__Invoice__c() {
return this.blng__Invoice__c;
}
@JsonProperty("blng__Invoice__c")
public void setblng__Invoice__c(String blng__Invoice__c) {
this.blng__Invoice__c = blng__Invoice__c;
}
private blng__Invoice__c_Lookup blng__Invoice__r;
@JsonProperty("blng__Invoice__r")
public blng__Invoice__c_Lookup getblng__Invoice__r() {
return this.blng__Invoice__r;
}
@JsonProperty("blng__Invoice__r")
public void setblng__Invoice__r(blng__Invoice__c_Lookup blng__Invoice__r) {
this.blng__Invoice__r = blng__Invoice__r;
}
...
}
{code}
{code:java}
public class blng__Invoice__c_Lookup {
private String Invoice_External_Id__c;
@JsonProperty("Invoice_External_Id__c")
public void setInvoice_External_Id__c(String e){
this.Invoice_External_Id__c = e;
}
@JsonProperty("Invoice_External_Id__c")
public String getInvoice_External_Id__c(){
return this.Invoice_External_Id__c;
}
}
{code}
was (Author: vassilis):
Hello all,
I just sent the above PR against 2.19.x, I hope it is of use :-)The
implementation logic is as proposed by [~dhirajsb], in brief:
* If a field (blng_ _Invoice_ _c) of an object (blng__Payment__c) is a lookup
field and points (blng__Invoice__c.blng__Payment__c --blng__Invoice__r-->
blng__Invoice__c) to another object (blng__Invoice__c) that has at least one
externaId (blng__Invoice__c.Invoice_External_Id__c), then a relationship field
is generated as well.
* If an object (blng__Invoice__c) is used in at least one lookup field as the
target object, then we generate also a Lookup object (blng__Invoice__c_Lookup)
for that object (blng__Invoice__c).
E.g.
{code:java}
public class blng__Payment__c extends AbstractDescribedSObjectBase {
private static final SObjectDescription DESCRIPTION =
createSObjectDescription();
// blng__Invoice__c
private String blng__Invoice__c;
@JsonProperty("blng__Invoice__c")
public String getblng__Invoice__c() {
return this.blng__Invoice__c;
}
@JsonProperty("blng__Invoice__c")
public void setblng__Invoice__c(String blng__Invoice__c) {
this.blng__Invoice__c = blng__Invoice__c;
}
private blng__Invoice__c_Lookup blng__Invoice__r;
@JsonProperty("blng__Invoice__r")
public blng__Invoice__c_Lookup getblng__Invoice__r() {
return this.blng__Invoice__r;
}
@JsonProperty("blng__Invoice__r")
public void setblng__Invoice__r(blng__Invoice__c_Lookup blng__Invoice__r) {
this.blng__Invoice__r = blng__Invoice__r;
}
...
}
{code}
{code:java}
public class blng__Invoice__c_Lookup {
private String Invoice_External_Id__c;
@JsonProperty("Invoice_External_Id__c")
public void setInvoice_External_Id__c(String e){
this.Invoice_External_Id__c = e;
}
@JsonProperty("Invoice_External_Id__c")
public String getInvoice_External_Id__c(){
return this.Invoice_External_Id__c;
}
}
{code}
> add support for lookup field using an sObject external id
> ---------------------------------------------------------
>
> Key: CAMEL-10193
> URL: https://issues.apache.org/jira/browse/CAMEL-10193
> Project: Camel
> Issue Type: New Feature
> Components: camel-salesforce
> Affects Versions: 2.17.2
> Reporter: Satguru Srivastava
> Assignee: Dhiraj Bokde
>
> A SalesForce object can have a field of type called "lookup".
> This field is used to by a record in a SalesForce object to reference a
> record in another SalesForce object.
> The value of this field could be a string in which case it would be the
> record id of the other record or it could be an object in which case it would
> contain the other Object's external field name and its value in that other
> record.
> Doing lookup/reference by external id is very useful specially for
> insert/upsert operations as otherwise one has to maintain record id of each
> of the records in the other Object.
> Camel SalesForce component supports lookup by record id.
> There is no support for the second type that is the external field name and
> value type.
>
> See here for more information on this
> https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/dome_upsert.htm
> Section "Upserting Records and Associating with an External ID"
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)