Сортировка NotesDocumentCollection на основе поля даты в SSJS - PullRequest
1 голос
/ 10 февраля 2012

Используя JavaScript на стороне сервера, мне нужно отсортировать коллекцию NotesDcumentCollection на основе поля в коллекции, содержащего дату создания документов или любое встроенное поле при создании документов.

Было бы неплохо, если бы функция могла принимать параметр опции сортировки, чтобы я мог вставить ее, если хочу, чтобы результат возвращался в порядке возрастания или убывания.

причина, по которой мне это нужно, заключается в том, что я использую database.getModifiedDocuments (), которая возвращает несортированную коллекцию notesdocumentcollection. Мне нужно вернуть документы в порядке убывания.

Следующий код представляет собой модифицированный фрагмент из openNTF, который возвращает коллекцию в порядке возрастания.

function sortColByDateItem(dc:NotesDocumentCollection, iName:String) {
try{    
    var rl:java.util.Vector = new java.util.Vector();
    var tm:java.util.TreeMap = new java.util.TreeMap();
    var doc:NotesNotesDocument = dc.getFirstDocument();

    while (doc != null) {
        tm.put(doc.getItemValueDateTimeArray(iName)[0].toJavaDate(), doc);
        doc = dc.getNextDocument(doc);
    }
    var tCol:java.util.Collection = tm.values();
    var tIt:java.util.Iterator  = tCol.iterator();
    while (tIt.hasNext()) {
       rl.add(tIt.next());
    }
    return rl;  
}catch(e){

}
}

Ответы [ 2 ]

3 голосов
/ 11 февраля 2012

Когда вы создаете TreeMap, передайте Comparator в конструктор.Это позволяет вам определять пользовательскую сортировку вместо «естественной» сортировки, которая по умолчанию сортирует по возрастанию.В качестве альтернативы, вы можете вызвать downndingMap для TreeMap, чтобы вернуть клон в обратном порядке.

0 голосов
/ 11 февраля 2012

Это очень дорогая методология, если вы имеете дело с большим количеством документов. В основном я использую NotesViewEntrycollection (всегда сортируемый по исходному виду) или навигатор вида.

Для больших баз данных вы можете использовать представление, отсортированное по дате изменения, и перемещаться по записям этого представления до самой последней даты выполнения вашего кода (которую вы должны где-то сохранить).

Для небольших операций метод Тима великолепен!

...