我想要做的是阅读莲花笔记5并将所有文档导出到本地的modeshape存储库中但是一旦我读完所有百万条记录/文档,该过程就开始读取莲花笔记中的第一条记录但我不希望这样。我只需要阅读莲花笔记中最近修改过的文档。
我的功能看起来像这样:
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();
}
}
}
但这仅适用于莲花笔记8及以上。 但我被莲花笔记困住了5。 如果有一些方法可以让我在莲花笔记5中获得最近修改过的文件,请告诉我。
答案 0 :(得分: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
文档,则视图中的订单仍为。
答案 1 :(得分:0)
您可以改为创建一个仅显示最近修改过的文档并循环显示该视图的视图,而不是获取数据库中所有文档的文档集合。