Getting Dynamic Initialized recordList


public class RecordListUtility {

public static String getIntializedRecordList(String objectName, Set fieldNames, String listVariable, Integer limitRows) {
String sqlString = 'Select ';
for(String field : fieldNames) {
sqlString += field + ', ';
}
sqlString = sqlString.substring(0, sqlString.length() - 2);
sqlString += ' from ' + objectName + ' limit '+ limitRows;

List objectRecordList = Database.Query(sqlString);

String recordListToReturn = 'List '+listVariable+' = new List();';
for(Sobject s : objectRecordList) {
recordListToReturn += listVariable +'.add(new ' + objectName + '(';
for(String field : fieldNames) {
Schema.DisplayType fieldDisplayType = SchemaCache.getFieldDescribe(objectName, field).getType();
String customFieldType = getCustomFieldType(fieldDisplayType);
if(customFieldType == 'str') {
recordListToReturn += field + ' = \'' + s.get(field) + '\', ';
} else {
recordListToReturn += field + ' = ' + s.get(field) + ', ';
}

}
recordListToReturn = recordListToReturn.substring(0, recordListToReturn.length() - 2);
recordListToReturn += '));';
}
recordListToReturn += 'insert ' + listVariable +';';
return recordListToReturn;
}

private Static String getCustomFieldType(Schema.DisplayType fieldType) {
String customFieldType;

Set stringTypes = new Set();
stringTypes.add(Schema.DisplayType.Reference);
stringTypes.add(Schema.DisplayType.ID);
stringTypes.add(Schema.DisplayType.String);
stringTypes.add(Schema.DisplayType.Email);
stringTypes.add(Schema.DisplayType.URL);
stringTypes.add(Schema.DisplayType.Picklist);
stringTypes.add(Schema.DisplayType.Phone);

Set numberTypes = new Set();
numberTypes.add(Schema.DisplayType.Double);
numberTypes.add(Schema.DisplayType.Percent);
numberTypes.add(Schema.DisplayType.Integer);
numberTypes.add(Schema.DisplayType.Currency);

if(fieldType == Schema.DisplayType.MultiPicklist) {
customFieldType = 'str';
} else if(stringTypes.contains(fieldType)) {
customFieldType = 'str';
} else if(numberTypes.contains(fieldType)) {
customFieldType = 'num';
} else if(fieldType == Schema.DisplayType.Boolean){
customFieldType = 'bool';
} else if(fieldType == Schema.DisplayType.Date || fieldType == Schema.DisplayType.DateTime){
if(fieldType == Schema.DisplayType.DateTime) {
customFieldType = 'dateTimeType';
} else {
customFieldType = 'dateType';
}
}
return customFieldType;
}
}

Please refer SchemaCache class here.
Example
Create a RecordListUtilityExample class which can use RecordListUtility class


public class RecordListUtilityExample {
public String getContactRecordList() {
return RecordListUtility.getIntializedRecordList('Contact', new Set{'Name', 'Id'}, 'contactList', 10);
}
}

Now create a RecordListUtilityExample Visualforce page




{!IntializedContactRecordList}

Now preview this page and observe the result.

Published by Sandeep Kumar

He is a Salesforce Certified Application Architect having 11+ years of experience in Salesforce.

Leave a Reply