Skip to main content
Kishore Kerllopalli 님이 #Sales And Marketing에 질문했습니다
Hi I am trying to add new picklist values to a custom picklist field(existing) using MetadataAPI. Here is my code and the articles which i followed..

 

http://www.salesforce.com/us/developer/docs/api_meta/index.htm

 

http://www.salesforce.com/us/developer/docs/api_meta/Content/meta_update.htm

 

If any body has any idea how to implement this pl's help me it's very importent.  I am getting errors and unable to find any good examples to do this..

 

Code:

 

----------------------------------------------------------

 

import com.sforce.soap.metadata.*;

import com.sforce.soap.partner.PartnerConnection;

import com.sforce.ws.ConnectionException;

import com.sforce.ws.ConnectorConfig;

 

public class SfdcUpdateMetadata 

{

 

 

  static final String USERNAME = "username";

  static final String PASSWORD = "password";

  

  static PartnerConnection connection;

  

  public MetadataConnection metadataConnection;

  

  public void updateCustomObject(String MyCustomObject) {

 try {

   CustomObject co = new CustomObject();

   String name = MyCustomObject;

   co.setFullName(name + "__c");

   co.setDeploymentStatus(DeploymentStatus.Deployed);

   co.setDescription("Created by the Metadata API");

   co.setEnableActivities(true);

   co.setLabel(name + " Object");

   co.setPluralLabel(co.getLabel() + "s");

   co.setSharingModel(SharingModel.ReadWrite);

   

   Picklist expenseStatus = new Picklist();

   PicklistValue newpicklistval = new PicklistValue();

   newpicklistval.setFullName("NewPickListValue");

   

   expenseStatus.setPicklistValues(new PicklistValue[]{newpicklistval});

   CustomField expenseStatusField = new CustomField();

   expenseStatusField.setFullName("WSCCustomObject__c.ExpenseStatus__c");

   

   //expenseStatusField.setLabel("Expense Report Status");

   expenseStatusField.setType(FieldType.Picklist);

   expenseStatusField.setPicklist(expenseStatus);

   

   

   co.setNameField(expenseStatusField);

   

   

   UpdateMetadata updateMetadata = new UpdateMetadata();

   updateMetadata.setMetadata(co);

   //updateMetadata.setCurrentName("TheCurrentName");

   

   AsyncResult[] ars = metadataConnection.update(new UpdateMetadata[] { updateMetadata });

   AsyncResult asyncResult = ars[0];

   // set initial wait time to one second in milliseconds

   long waitTimeMilliSecs = 1000;

   while (!asyncResult.isDone()) {

     Thread.sleep(waitTimeMilliSecs);

     // double the wait time for the next iteration

     waitTimeMilliSecs *= 2;

     asyncResult = metadataConnection.checkStatus(

       new String[] {asyncResult.getId()})[0];

     System.out.println("Status is: " + asyncResult.getState());

   }

   

   if (asyncResult.getState() != AsyncRequestState.Completed) {

     System.out.println(asyncResult.getStatusCode() + " msg: " +

         asyncResult.getMessage());

   }

 } catch (InterruptedException ie) {

   ie.printStackTrace();

 } catch (ConnectionException ce) {

   ce.printStackTrace();

 }

}

  

  public static void main(String[] args) throws ConnectionException 

  {

  

    ConnectorConfig partnerConfig = new ConnectorConfig();

    ConnectorConfig metadataConfig = new ConnectorConfig();

    

    SfdcUpdateMetadata sum=new SfdcUpdateMetadata();

    

    partnerConfig.setUsername(USERNAME);

    partnerConfig.setPassword(PASSWORD);

    //partnerConfig.setTraceMessage(true);

    

    @SuppressWarnings("unused")

    PartnerConnection partnerConnection = com.sforce.soap.partner.Connector.newConnection(partnerConfig);

    

    // show the partner's session id into the metadata configuration then connect

    metadataConfig.setSessionId(partnerConnection.getSessionHeader().getSessionId());

    sum.metadataConnection = com.sforce.soap.metadata.Connector.newConnection(metadataConfig);

    

    sum.updateCustomObject("WSCCustomObject");

    

  

    

   //-----------------------------------------------------------------------------------------------------

    

    

   //------------------------------------------------------------------------------------------------------

  

  }

    

}

 

----------------------------------------------------------

답변 4개
0/9000