2012-02-10 2 views
1

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

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

причина, по которой мне это нужно, потому что я использую 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){ 

} 
} 

ответ

3

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

0

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

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

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

+0

Метод getModfiedDocuments() недоступен на уровне представления –

+0

Вам необязательно иметь. Сортировка представления по описанию. изменить время, начать с первой строки и спуститься до последнего запуска вашего кода ... –

Смежные вопросы