public class DMLManager {
public static Integer THRESHOLD_LIMIT = 9000 ;
public static Integer BATCH_SIZE = 5000 ;
public static void insertRecordsInChunk(List<sObject> records ){
Integer chunkNumber = 1 ;
List<sObject> chunkRecords = new List<sObject>() ;
Map<Integer,List<sObject>> mapOfChunks = new Map<Integer, List<sObject>>() ;
mapOfChunks.put(chunkNumber ,chunkRecords ) ;
if(records != null && records.isEmpty() == false ){
if(records.size() > THRESHOLD_LIMIT ){
for(sObject s : records ){
List<sObject> chunkRecordsTemp = mapOfChunks.get(chunkNumber) ;
if(chunkRecordsTemp.size() == BATCH_SIZE ){
chunkNumber = chunkNumber + 1 ;
List<sObject> chunkRecordsTempNew = new List<sObject>() ;
chunkRecordsTempNew.add(s) ;
mapOfChunks.put(chunkNumber , chunkRecordsTempNew ) ;
}else{
chunkRecordsTemp.add(s) ;
}
}
}else{
chunkRecords.addAll(records) ;
mapOfChunks.put(chunkNumber, chunkRecords ) ;
}
}
for(List<sObject> recordList : mapOfChunks.values() ){
Database.insert(recordList) ;
}
}
}
No comments:
Post a Comment