Saturday, 19 October 2013

Sample JAVA program for Web Service API

package wsc;

import java.io.BufferedReader;
 
import java.io.FileNotFoundException;
import java.io.InputStreamReader;
import java.io.IOException;

//import com.sforce.soap.enterprise.DeleteResult;
 
import com.sforce.soap.enterprise.DescribeGlobalResult;
import com.sforce.soap.enterprise.DescribeGlobalSObjectResult;
import com.sforce.soap.enterprise.DescribeSObjectResult;
import com.sforce.soap.enterprise.EnterpriseConnection;
//import com.sforce.soap.enterprise.Error;
import com.sforce.soap.enterprise.Field;
//import com.sforce.soap.enterprise.FieldType;
import com.sforce.soap.enterprise.GetUserInfoResult;
//import com.sforce.soap.enterprise.LoginResult;
import com.sforce.soap.enterprise.PicklistEntry;
import com.sforce.soap.enterprise.QueryResult;
//import com.sforce.soap.enterprise.SaveResult;
//import com.sforce.soap.enterprise.sobject.Account;
import com.sforce.soap.enterprise.sobject.Contact;
import com.sforce.soap.enterprise.sobject.SObject;
import com.sforce.ws.ConnectorConfig;
import com.sforce.ws.ConnectionException;

public class QuickstartApiSample 

{
private static BufferedReader reader =
new BufferedReader(new InputStreamReader(System.in));
EnterpriseConnection con;
String authEndPoint = "";
String passwd = "";
public static void main(String[] args) 
{    
QuickstartApiSample sample = new QuickstartApiSample("https://login.salesforce.com/services/Soap/c/24.0/0DF90000000PX8r");
if ( sample.login() ) 
{
sample.describeGlobalSample();
sample.describeSample();
sample.querySample();
}
}
public QuickstartApiSample(String authEndPoint) 
{
this.authEndPoint = authEndPoint;
}
public String getUserInput(String prompt) 
{
String result = "";
try 
{
System.out.print(prompt);
result = reader.readLine();

catch (IOException ioe) 
{
ioe.printStackTrace();
}
return result;
}
public boolean login() 
{
boolean success = false;
String userId = getUserInput("UserID: ");
String passwd = getUserInput("Password: ");
try 
{
ConnectorConfig config = new ConnectorConfig();
config.setAuthEndpoint(authEndPoint);
config.setUsername(userId);
config.setPassword(passwd);
config.setCompression(true);
//config.setProxy("Your Proxy", 80);
System.out.println("AuthEndPoint: " + authEndPoint);
config.setTraceFile("traceLogs.txt");
config.setTraceMessage(true);
config.setPrettyPrintXml(true);

con = new EnterpriseConnection(config);
 
GetUserInfoResult userInfo = con.getUserInfo();
System.out.println("\nLogging in ...\n");
System.out.println("UserID: " + userInfo.getUserId());
System.out.println("User Full Name: " +
userInfo.getUserFullName());
System.out.println("User Email: " +
userInfo.getUserEmail());
System.out.println();
System.out.println("SessionID: " +
config.getSessionId());
System.out.println("Auth End Point: " +
config.getAuthEndpoint());
System.out.println("Service End Point: " +
config.getServiceEndpoint());
System.out.println();
success = true;

catch (ConnectionException ce)
{
ce.printStackTrace();

catch (FileNotFoundException fnfe) 
{
fnfe.printStackTrace();
}
return success;
}
public void logout() 
{
try 
{
con.logout();
System.out.println("Logged out");

catch (ConnectionException ce)
{
ce.printStackTrace();
}
}
/**
* To determine the objects that are available to the logged-in
* user, the sample client application executes a describeGlobal
* call, which returns all of the objects that are visible to
* the logged-in user. This call should not be made more than
* once per session, as the data returned from the call likely
* does not change frequently. The DescribeGlobalResult is
* simply echoed to the console.
*/
public void describeGlobalSample() 
{
try 
{
DescribeGlobalResult describeGlobalResult =
con.describeGlobal();
DescribeGlobalSObjectResult[] sobjectResults =
describeGlobalResult.getSobjects();
for (int i = 0; i < sobjectResults.length; i++) 
{
System.out.println(sobjectResults[i].getName());
}

catch (ConnectionException ce) 
{
ce.printStackTrace();
}
}
/**
* The following code segment illustrates the type of metadata
* information that can be obtained for each object available
* to the user. The sample client application executes a
* describeSObject call on a given object and then echoes
* the returned metadata information to the console. Object
* metadata information includes permissions, field types
* and length and available values for picklist fields
* and types for referenceTo fields.
*/
private void describeSample() 
{
String objectToDescribe = getUserInput("\nType the name of the object to " +
"describe (Example: Account): ");
try 
{
DescribeSObjectResult describeSObjectResult =
con.describeSObject(objectToDescribe);
if (describeSObjectResult != null) 
{
Field[] fields = describeSObjectResult.getFields();
System.out.println("Metadata for the " +
describeSObjectResult.getName() + " SObject"
);
System.out.println("\tActivateable: " +
describeSObjectResult.isActivateable()
);
System.out.println("\tNumber of fields: " +
fields.length
);
if (fields != null) 
{
for (Field field : fields) 
{
//String name = field.getName();
System.out.println("\tField name: " +
field.getName()
);
PicklistEntry[] picklistValues =
field.getPicklistValues();
if (picklistValues != null && picklistValues.length > 0) 
{
System.out.println("\t\tPicklist values: ");
for (int j = 0; j < picklistValues.length; j++) 
{
if (picklistValues[j].getLabel() != null) 
{
System.out.println("\t\tValue: " +
picklistValues[j].getLabel()
);
}
}
}
String[] referenceTos = field.getReferenceTo();
if (referenceTos != null && referenceTos.length > 0) 
{
System.out.println("\t\tThis field references the " +
"following objects:"
);
for (int j = 0; j < referenceTos.length; j++) 
{
System.out.println("\t\t" + referenceTos[j]);
}
}
}
}
}

catch (ConnectionException ce) 
{
ce.printStackTrace();
}
}
public void querySample() 
{
try 
{
String soqlQuery = "SELECT FirstName, LastName FROM Contact";
QueryResult result = con.query(soqlQuery);
boolean done = false;
if (result.getSize() > 0) 
{
System.out.println("\nLogged-in user can see " +
result.getRecords().length +
" contact records."
);
while (! done) 
{
SObject[] records = result.getRecords();
for ( int i = 0; i < records.length; ++i ) 
{
Contact con = (Contact) records[i];
String fName = con.getFirstName();
String lName = con.getLastName();
if (fName == null) 
{
System.out.println("Contact " + (i + 1) +
": " + lName
);

else 
{
System.out.println("Contact " + (i + 1) + ": " +
fName + " " + lName
);
}
}
if (result.isDone()) 
{
done = true;

else 
{
result =
con.queryMore(result.getQueryLocator());
}
}

else 
{
System.out.println("No records found.");
}
System.out.println("\nQuery succesfully executed.");

catch (ConnectionException ce) 
{
ce.printStackTrace();
}
}
}

1 comment: