Skip to content

Instantly share code, notes, and snippets.

@kiran-machhewar
Created February 3, 2014 18:31
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kiran-machhewar/8789531 to your computer and use it in GitHub Desktop.
Save kiran-machhewar/8789531 to your computer and use it in GitHub Desktop.
package metadata;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.Calendar;
import java.util.List;
import com.sforce.soap.metadata.*;
import com.sforce.soap.partner.PartnerConnection;
import com.sforce.soap.partner.sobject.SObject;
import com.sforce.ws.ConnectionException;
import com.sforce.ws.ConnectorConfig;
public class TodaysChanges {
static final String USERNAME = "<USERNAME>";
static final String PASSWORD = "<PASSWORD>";
static PartnerConnection connection;
public static void main(String[] args) throws ConnectionException {
ConnectorConfig partnerConfig = new ConnectorConfig();
ConnectorConfig metadataConfig = new ConnectorConfig();
partnerConfig.setUsername(USERNAME);
partnerConfig.setPassword(PASSWORD);
@SuppressWarnings("unused")
PartnerConnection partnerConnection = com.sforce.soap.partner.Connector.newConnection(partnerConfig);
String metaurl = partnerConfig.getServiceEndpoint();
//The metadata service endpoint is baked in the wsdl file, but same metadata wsdl file can be used for differnent orgs,
//only metadata service endpoint has to be set according to the org
metaurl = metaurl.replace("Soap/u", "Soap/m");
System.out.println(metaurl);
metadataConfig.setServiceEndpoint(metaurl);
// shove the partner's session id into the metadata configuration then connect
metadataConfig.setSessionId(partnerConnection.getSessionHeader().getSessionId());
MetadataConnection metadataConnection = com.sforce.soap.metadata.Connector.newConnection(metadataConfig);
try {
try {
List<String> metadataComponents = new ArrayList<String>();
metadataComponents.add("CustomObject");
metadataComponents.add("ApexClass");
metadataComponents.add("ApexPage");
List<ListMetadataQuery> lmqList = new ArrayList<ListMetadataQuery>();
for (String string : metadataComponents) {
ListMetadataQuery query = new ListMetadataQuery();
query.setType(string);
lmqList.add(query);
}
double asOfVersion = 27.0;
// Assuming that the SOAP binding has already been established.
FileProperties[] lmr = metadataConnection.listMetadata(
Arrays.copyOf(lmqList.toArray(), lmqList.toArray().length,ListMetadataQuery[].class), asOfVersion);
showMetaDataComponents(lmr);
metadataComponents.clear();
metadataComponents.add("ApexComponent");
metadataComponents.add("FieldSet");
metadataComponents.add("ApexTrigger");
lmqList.clear();
for (String string : metadataComponents) {
ListMetadataQuery query = new ListMetadataQuery();
query.setType(string);
lmqList.add(query);
}
lmr = metadataConnection.listMetadata(
Arrays.copyOf(lmqList.toArray(), lmqList.toArray().length,ListMetadataQuery[].class), asOfVersion);
showMetaDataComponents(lmr);
} catch (ConnectionException ce) {
ce.printStackTrace();
}
}
catch (Exception ex) {
System.out.println("\n Error: \n" +ex.getMessage());
}
}
public static boolean isToday(Date date){
java.util.Date today = Calendar.getInstance().getTime();
if(date.getDay()==today.getDay() && date.getMonth() == today.getMonth() && date.getYear() == today.getYear()){
return true;
}
return false;
}
public static void showMetaDataComponents(FileProperties[] lmr){
if (lmr != null) {
for (FileProperties n : lmr) {
if(isToday(n.getLastModifiedDate().getTime())){
System.out.println(n.getType() +" : " + n.getFullName());
}
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment