Monday, January 26, 2015

How to convert Salesforce WSDL to JAR files

Salesforce provides different APIs like Enterprise,Metadata,Partner or our own  Custom Apex WSDL etc.
To convert WSDL to JAR files salesforce provides an API called WSC(Web service connector).
The below is the command to convert WSDL to JAR file.

You can download wsc.jar and its dependencies from below path and make sure java is installed and classpath is set.

http://mvnrepository.com/artifact/com.force.api/force-wsc/29.0.0


java -classpath D:\Jars\force-wsc-32.1.0.jar;D:\Jars\ST4-4.0.8.jar;D:\Jars\appengine-api-1.0-sdk-1.9.10.jar;D:\Jars\antlr-runtime-3.5.2.jar com.sforce.ws.tools.wsdlc D:\Jars\metadata.wsdl D:\Jars\metadata.jar


Regards,
Naveen
http://www.autorabit.com

Creating complex Custom Dashboard/Chart in Salesforce

Salesforce visualforce charting helps us to build custom or complex Charts.
Use Visualforce charting to assemble a variety of chart components into a complex chart that represents multiple sets of related data. The end result can be quite sophisticated and attention getting.
Below is a sample Visualforce and Apex code to build a custom Chart in salesforce.

public class ChartController {
    // Return a list of data points for a chart
    public List<Data> getData() {
        return ChartController.getChartData();
    }
    
    // Make the chart data available via JavaScript remoting
    @RemoteAction
    public static List<Data> getRemoteData() {
        return ChartController.getChartData();
    }

    // The actual chart data; needs to be static to be
    // called by a @RemoteAction method
    public static List<Data> getChartData() {
        List<Data> data = new List<Data>();
        data.add(new Data('Operation1', 80, 90, 55));
        data.add(new Data('Operation2', 65, 15, 65));
        data.add(new Data('Operation3', 50, 32, 75));
        data.add(new Data('Operation4', 72, 28, 85));
        data.add(new Data('Operation5', 65, 51, 95));
        data.add(new Data('Operation6', 48, 45, 99));
        return data;
    }
    
    // Wrapper class
    public class Data {
        public String name { get; set; }
        public Integer data1 { get; set; }
        public Integer data2 { get; set; }
        public Integer data3 { get; set; }
        public Data(String name, Integer data1, Integer data2, Integer data3) {
            this.name = name;
            this.data1 = data1;
            this.data2 = data2;
            this.data3 = data3;
        }
    }
}



<apex:page controller="ChartController">
<apex:chart data="{!data}" height="400" width="500">
    <apex:legend position="left"/>
    <apex:axis type="Numeric" position="left" title="Success Records" grid="true"
        gridFill="true" fields="data1,data2,data3" dashSize="2">
        <apex:chartLabel />
    </apex:axis>
    <apex:axis type="Category" position="bottom" fields="name" title="Operation Name">
        <apex:chartLabel rotate="315"/>
    </apex:axis>
    <apex:barSeries orientation="vertical" axis="left" stacked="true" colorSet="#AA9BFC,#0FD,#F10"
        xField="name" yField="data1,data2,data3" highlightColor="#AD9CFC"  title="Update,Delete,Insert"/>
</apex:chart>
</apex:page>

Regards,
Naveen
http://www.autorabit.com

Tuesday, January 20, 2015

How to Create a field in Salesforce Using java

Hi ,

To add custom field to a custom object use below code. You must use Partner and metadata API's to create the custm field.

//To following code creates a metadata connection
import com.sforce.soap.metadata.*;
import com.sforce.soap.partner.LoginResult;
import com.sforce.soap.partner.PartnerConnection;
import com.sforce.ws.ConnectionException;
import com.sforce.ws.ConnectorConfig;
/**
* Login utility.
*/
public class MetadataLoginUtil {
public static MetadataConnection login() throws ConnectionException {
final String USERNAME = "username@gmail.com";
// This is only a sample. Hard coding passwords in source files is a bad practice.
final String PASSWORD = "Password+SecurityToken";
final String URL = "https://login.salesforce.com/services/Soap/u/31.0";

//Quick Start Step 3: Walk through the Java Sample Code
final LoginResult loginResult = loginToSalesforce(USERNAME, PASSWORD, URL);
//System.out.println(loginResult);
return createMetadataConnection(loginResult);
}
private static MetadataConnection createMetadataConnection(
final LoginResult loginResult) throws ConnectionException {
final ConnectorConfig config = new ConnectorConfig();
config.setServiceEndpoint(loginResult.getMetadataServerUrl());
config.setSessionId(loginResult.getSessionId());
return new MetadataConnection(config);
}
private static LoginResult loginToSalesforce(
final String username,
final String password,
final String loginUrl) throws ConnectionException {
final ConnectorConfig config = new ConnectorConfig();
config.setAuthEndpoint(loginUrl);
config.setServiceEndpoint(loginUrl);
config.setManualLogin(true);
return (new PartnerConnection(config)).login(username, password);
}

}

//The following code creates a custom field using metadata conncetion and createMetadata() method.

import java.util.ArrayList;
import java.util.concurrent.ForkJoinPool.ManagedBlocker;
import com.sforce.async.Error;
import com.sforce.soap.metadata.*;
import com.sforce.soap.metadata.FieldType;
import com.sforce.soap.metadata.Package;
import com.sforce.soap.metadata.SaveResult;
import com.sforce.soap.partner.*;
import com.sforce.ws.ConnectionException;
import com.sforce.ws.ConnectorConfig;
import com.sforce.ws.wsdl.SfdcApiType;
/**
* Login utility.
*/
public class PartnerLoginUtil {

public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
try {
PartnerLoginUtil p= new PartnerLoginUtil( );
p.createCustomExtField("CustomObjectName");

} catch (ConnectionException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

private void createCustomExtField(String name) {
// TODO Auto-generated method stub
CustomField cs = new CustomField();
cs.setFullName(name+".CustExtField__c");
cs.setLabel("CustExtField");
cs.setType(FieldType.Number);
cs.setExternalId(true);
cs.setPrecision(10);
cs.setScale(8);
try {
MetadataConnection metadataConnection = MetadataLoginUtil.login();
SaveResult[] results = metadataConnection
.updateMetadata(new Metadata[] {cs});

for (SaveResult r : results) {
if (r.isSuccess()) {
System.out.println("Created component: " + r.getFullName());
} else {
System.out
.println("Errors were encountered while creating "
+ r.getFullName());
for (com.sforce.soap.metadata.Error e : r.getErrors()) {
System.out.println("Error message: " + e.getMessage());
System.out.println("Status code: " + e.getStatusCode());
}
}
}
} catch (ConnectionException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}

}


Regards,
Naveen
http://www.autorabit.com