Im letzten Blog-Post habe ich beschrieben, wie die Gruppenzugehörigkeit eines Salesforce-Benutzers per APEX berechnet werden kann. Die berechneten Gruppen und Queues lassen sich auf einer Visualforce Seite darstellen. Wie kann ich die Ergebnisse sortiert darstellen?
Der folgende Code-Ausschnitt zeigt eine Lösung basierend auf dem rekursiven Aufruf der Sortierfunktion.
INPUT - die unsortierte Liste mit eigenen Objekten
OUTPUT - die nach QueueName sortierte Liste
Die unsortierte Liste lstUnsorted enthält diverse Queue-Informationen, die teilweise nicht als Objekt-Eigenschaft zur Verfügung stehen. Daher habe ich die Informationen in ein eigenes Objekt QueueDetail ausgelagert.
Der folgende Code-Ausschnitt zeigt eine Lösung basierend auf dem rekursiven Aufruf der Sortierfunktion.
INPUT - die unsortierte Liste mit eigenen Objekten
OUTPUT - die nach QueueName sortierte Liste
/*------------------
sortResultsByQueueName
*/
private list<QueueDetail>
sortResultsByQueueName(list<QueueDetail> lstUnsorted){
// the
unsorted list contains just 1 value or is empty
if(lstUnsorted.isEmpty() || lstUnsorted.size() <= 1){
return lstUnsorted;
}else{
List<QueueDetail> lstLess = new List<QueueDetail>();
List<QueueDetail> lstGreater = new List<QueueDetail>();
integer iBreakPoint =
lstUnsorted.size() / 2;
//save the
BreakPoint-Value and remove it from the QueueDetail list
QueueDetail queueDetailBreakPoint =
lstUnsorted[iBreakPoint];
lstUnsorted.remove(iBreakPoint);
for(QueueDetail qd : lstUnsorted){
if(qd.QueueName <= queueDetailBreakPoint.QueueName){
lstLess.add(qd);
}else if(qd.QueueName
> queueDetailBreakPoint.QueueName){
lstGreater.add(qd);
}
}
list<QueueDetail> sortedQueueDetails = new list<QueueDetail>();
sortedQueueDetails.addAll(sortResultsByQueueName(lstLess));
sortedQueueDetails.add(queueDetailBreakPoint);
sortedQueueDetails.addAll(sortResultsByQueueName(lstGreater));
return sortedQueueDetails;
}
}
Die unsortierte Liste lstUnsorted enthält diverse Queue-Informationen, die teilweise nicht als Objekt-Eigenschaft zur Verfügung stehen. Daher habe ich die Informationen in ein eigenes Objekt QueueDetail ausgelagert.
/*****************************
inner class for queue details
******************************/
public class QueueDetail{
public String QueueID{get; set;}
public String QueueName{get; set;}
public String NumberCases{get; set;}
public String DateOldestTicket{get; set;}
public QueueDetail(String queueId, String queueName, String iNoCases, DateTime dtCase){
this.QueueID = queueId;
this.QueueName = queueName;
this.NumberCases = iNoCases;
this.DateOldestTicket = dtCase.format();
}
}
Kommentare
Kommentar veröffentlichen