2014-02-14 47 views
2

我想要做的是通過蓮花筆記5讀取並將所有文檔導出到當地的modeshape存儲庫,但是一旦我完成了所有百萬記錄/文檔的閱讀,該過程從蓮花筆記中的第一條記錄開始讀取,但我不想那樣做。我只需要閱讀蓮花筆記中最近修改過的文檔。如何在蓮花筆記中找到最近修改過的文檔5

我的功能看起來是這樣的:

public void run() { 
    logger.log(Level.INFO, "entering run"); 
    try { 
     String pathToFolder = ""; 
     s = NotesFactory.createSession(host, "username", "password"); 
     Database db = s.getDatabase("", nsffilename); 
     if (!db.isOpen()) { 
      db.open(); 
     } 
     DocumentCollection docCol = db.getAllDocuments(); 
     Document doc = docCol.getFirstDocument(); 
     while (doc != null) { 
      doc = docCol.getNextDocument(); 
     } 
    } 
} 

我發現了一些代碼從互聯網這是張貼在這裏: http://www-12.lotus.com/ldd/doc/domino_notes/7.0/help7_designer.nsf/f4b82fbb75e942a6852566ac0037f284/c698b5888603d5cd8525704a00417105?OpenDocument

但爲Lotus Notes 8和上面這只是工作。 但我堅持與Lotus Notes 5 請讓我知道是否有某種方式,我可以在Lotus Notes中5

+0

聽起來好像有人自[1999](http://www.ibm.com/developerworks/lotus/library/ls-NDHistory/)以來沒有升級過,他們爲什麼要等這麼久? –

+0

不知道先生,但這只是令人沮喪的工作在這個古老的系統 – TusharPanda

回答

5

按降序排列順序創建第一列@Modified的視圖,並使用View類讀取所有文檔 - 最後一次修改。

... 
    View view = db.getView("YourViewSortedByLastModified"); 
    view.setAutoUpdate(false); 
    Document tmpdoc; 
    Document doc = view.getFirstDocument(); 
    while (doc != null) { 
    // do with your doc what you want 
    tmpdoc = view.getNextDocument(doc); 
    doc.recycle(); 
    doc = tmpdoc; 
    } 

當您從上次運行到達文檔時,您可以打開while循環。

不要包括在您的視圖選擇公式中的任何函數,爲了性能的原因,它提供像@Now或@Today這樣的當前時間或日期。最好列出所有文檔,並在到達上次運行的文檔時停止循環。

DocumentCollection中的文檔訂單是不確定的。通常最早的文件是第一個,但你不能依靠這個。如果您循環瀏覽View文件的訂單仍保留。

+0

感謝您的回答Knut,我會讓蓮花筆記團隊實施這個觀點,並將標記此答覆作爲正確的答案,如果認爲開始按預期工作。儘管如此,非常感謝答覆。你剛剛爲我節省了一百萬記錄迭代:) – TusharPanda

+0

嗨克努特,你能告訴我什麼應該是查詢在蓮花筆記創建一個視圖獲取修改記錄第一。對不起,我不是蓮花筆記資源,能做的人不在我工作的地點。我真的很感謝你在這方面的幫助。 – TusharPanda

+0

通過SELECT @ All(用於數據庫中的所有文檔)和一個用「@ Modified」公式降序排列的列來告訴Notes人員您需要一個視圖。 –

0

非但沒有所有的文件的文件收集在數據庫中獲取最近修改的文件,您可以改爲創建一個僅顯示最近修改的文檔並通過該視圖循環的視圖。

+0

嗨肯, 我要執行,根據克努特和你的建議。希望事情按預期工作。謝謝你的答覆,雖然 – TusharPanda