Here is the code that I want to amend. The code that is in bold.
public with sharing class customObjService {
public static final Set<String> FIELD_NOT_MAPPED_TO_ACCOUNT = new Set<String>{'field1__c','field2__c','field3__c','Account__c','Id'};
public static Map<String,String> addressField = getMapField();
public static List<String> fieldName = getFieldName();
public static List<String> getFieldName(){
List<String> tmp = new List<String>();
Map<String,String> mapField = getMapField();
System.debug('>>>mapField: ' + mapField);
Map<String, Schema.SObjectField> customObjMap = Schema.getGlobalDescribe().get('customObj__c'.toLowerCase()).getDescribe().Fields.getMap(); //Get all field name from customObj__c sObject if (customObjMap != null){ for (Schema.SObjectField ft : customObjMap.values()){ String f = ft.getDescribe().getName(); Integer len = f.length() - 3;
if(f.indexOf('__c') == len && !customObjService.FIELD_NOT_MAPPED_TO_ACCOUNT.contains(f)){ tmp.add((f.startsWith('Address'))?mapField.get(f):f);
I have managed to what I wanted to do.
All Answers
public with sharing class customObjService {
public static final Set<String> FIELD_NOT_MAPPED_TO_ACCOUNT = new Set<String>{'field1__c','field2__c','field3__c','Account__c','Id'};
public static Map<String,String> addressField = getMapField();
public static List<String> fieldName = getFieldName();
public static List<String> getFieldName(){
List<String> tmp = new List<String>();
Map<String,String> mapField = getMapField();
System.debug('>>>mapField: ' + mapField);
Map<String, Schema.SObjectField> customObjMap = Schema.getGlobalDescribe().get('customObj__c'.toLowerCase()).getDescribe().Fields.getMap();
//Get all field name from customObj__c sObject
if (customObjMap != null){
for (Schema.SObjectField ft : customObjMap.values()){
String f = ft.getDescribe().getName();
Integer len = f.length() - 3;
if(f.indexOf('__c') == len && !customObjService.FIELD_NOT_MAPPED_TO_ACCOUNT.contains(f)){
tmp.add((f.startsWith('Address'))?mapField.get(f):f);
system.debug('tmp >>>' + tmp);
}
}
}
//system.debug('tmp >>>' + tmp);
return tmp;
}
public static Map<String,String> getMapField(){
Map<String,String> tmp = new Map<String,String>();
//From Custom Object to Account
tmp.put('Address_Street__c','BillingStreet');
tmp.put('Address_City__c','BillingCity');
tmp.put('Address_Country__c','BillingCountry');
tmp.put('Address_State_Province__c','BillingState');
tmp.put('Address_Zip_Postal_Code__c','BillingPostalCode');
//From Account to Custom Object
tmp.put('BillingStreet','Address_Street__c');
tmp.put('BillingCity','Address_City__c');
tmp.put('BillingCountry','Address_Country__c');
tmp.put('BillingState','Address_State_Province__c');
tmp.put('BillingPostalCode','Address_Zip_Postal_Code__c');
return tmp;
}
}
I have managed to what I wanted to do.