2012-02-10 17 views
1

サーバー側のJavaScriptを使用すると、文書が作成された日付または文書が作成されたときに組み込まれたフィールドを含むコレクション内のフィールドに基づいてNotesDcumentCollectionをソートする必要があります。SSJSの日付フィールドに基づいてNotesDocumentCollectionをソートする

関数がソートオプションのパラメータを取ることができればいいので、結果を昇順または降順で戻したい場合は入れてもいいと思います。

なぜなら、私はソートされていないnotesdocumentcollectionを返すdatabase.getModifiedDocuments()を使用しているからです。私は降順で文書を返す必要があります。

次のコードは、コレクションを昇順で返す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を構築するときに、コンストラクタにコンパレータを渡します。これにより、 "自然な"ソートの代わりにカスタムソートを定義することができます。ソートは、デフォルトで昇順にソートされます。あるいは、TreeMapに対してdescendingMapを呼び出して、逆順でクローンを返すこともできます。

0

大量のドキュメントを扱う場合、これは非常に高価な方法です。私は主にNotesViewEntrycollectionを使用します(ソースビューに従ってソートされます)。またはナビゲータを表示します。

大規模なデータベースの場合は、変更された日付に従ってソートされたビューを使用して、コードが実行された最新の日付(どこかに保存する必要があります)までそのビューのエントリをナビゲートできます。

小さな操作では、Timの方法は素晴らしいです!

+0

ビューレベル –

+0

でgetModfiedDocuments()メソッドを使用することはできません。ビューをdescでソートします。変更された時間、最初の行から開始し、コードの最後の実行まで下に行く... –

関連する問題