public class SoqlHelper { public static string DistinctQueryFields(string sql) { string query_fields = sql; if (query_fields == null) { return null; } query_fields = query_fields.trim(); Integer sel_i = query_fields.indexOfIgnoreCase('select '); string sel = 'select '; if ( sel_i < 0) { sel = ''; } string whe = ''; Integer whe_i = query_fields.indexOfIgnoreCase(' from '); if ( whe_i >= 0) { whe = query_fields.substring(whe_i); } string query = query_fields.substring(sel_i < 0 ? 0 : sel.length(), whe_i < 0 ? query_fields.length() : whe_i); Set ss = new Set(); for(string f : query.split(',')){ string s = f.trim().toLowerCase(); //System.debug('s='+s); ss.add(s); } return sel + QueryFields(ss) + whe; } public static string WId(string wid){ return '\'' + wid + '\''; } public static string QueryFields(Set lo){ return QueryFields(new List(lo)); } public static string QueryFields(List lo){ return string.join(lo, ','); } public static string ToInCondition(List lar ,string key) { if(lar==null || lar.size() == 0) { return null; } string ss = ' ( '; boolean b = true; for(AggregateResult ar : lar) { if(ar.get(key)==null)continue; if( b ) { b = false; ss += '\''+ar.get(key)+'\''; } else { ss += ',\''+ar.get(key)+'\''; } } ss+=') '; return ss; } public static string ToInCondition(Set so){ return ToInCondition(new List(so)); } public static string ToInCondition(List lo) { Set so = new Set(lo); lo = new List(so); return '(\''+ string.join(lo, '\',\'')+'\')'; } public static void InsertList(List so_list) { if(so_list == null || so_list.size() == 0)return; insert so_list; } public static void UpdateList(List so_list) { if(so_list == null || so_list.size() == 0)return; update so_list; } public static Map UpsertList(List so_list, Schema.SObjectField field) { Map mid = new Map(); if(so_list == null || so_list.size() == 0)return mid; List urList2 = Database.upsert( so_list, field, false); Set accBasicRecordIdSet = new Set(); integer index = 0; string errorString = ''; string field_str = field.getDescribe().getName(); for(Database.UpsertResult ur : urList2){ if(!ur.IsSuccess()){ object fv = so_list[index].get(field_str); mid.put(fv+'',ur); errorString = ''; for(Database.Error errs: ur.getErrors()){ errorString += errs.getMessage() + ';'; } //LogHelper.CreateRunTimeLog('runtime error', errorString, false, fv+''); } index++; } return mid; } public static void DeleteList(List so_list) { if(so_list == null || so_list.size() == 0)return; delete so_list; } @future public static void DeleteListAsync(List id_list) { if(id_list == null || id_list.size() == 0)return; Database.delete(id_list); } }