Sorting 根据SSJS中的日期字段对NotesDocumentCollection进行排序
使用服务器端javascript,我需要根据集合中包含文档创建日期的字段或文档创建时的任何内置字段对NotesDocumentCollection进行排序 如果函数可以接受一个sort选项参数,那么如果我希望返回升序或降序结果,我就可以输入它Sorting 根据SSJS中的日期字段对NotesDocumentCollection进行排序,sorting,collections,treemap,xpages,Sorting,Collections,Treemap,Xpages,使用服务器端javascript,我需要根据集合中包含文档创建日期的字段或文档创建时的任何内置字段对NotesDocumentCollection进行排序 如果函数可以接受一个sort选项参数,那么如果我希望返回升序或降序结果,我就可以输入它 function sortColByDateItem(dc:NotesDocumentCollection, iName:String) { try{ var rl:java.util.Vector = new java.util.Vect
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){
}
}
我之所以需要它,是因为我使用database.getModifiedDocuments()返回未排序的notesdocumentcollection。我需要按降序归还文件
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){
}
}
下面的代码是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){
}
}
构造树映射时,将比较器传递给构造函数。这允许您定义自定义排序,而不是“自然”排序,默认情况下,自然排序是升序排序。或者,您可以对树映射调用DegeneratingMap以按相反顺序返回克隆。如果您处理大量文档,这是一种非常昂贵的方法。我主要使用NotesViewEntrycollection(总是根据源代码视图排序)或视图导航器 对于大型数据库,可以使用根据修改日期排序的视图,并在该视图的条目中导航,直到执行代码的最新日期(必须将代码保存在某个位置)
对于较小的操作,Tim的方法很棒 getModfiedDocuments()方法在视图级别不可用,您不需要。按desc.modified time对视图排序,从第一行开始,一直到最后一次运行代码。。。