我正在编写一个简单的 Java 代码来提取给定日期的所有日历条目。我知道使用 Domingo 是可能的,但我只想为此目的使用 Notes.jar。我可以根据给定的凭据创建会话并获取日历对象。我希望提取当前正在运行的 Notes 会话并使用该会话对象打开邮件文件中的日历视图并开始使用它。但我无法让它工作。有人对此有任何想法或链接吗?
问问题
6203 次
4 回答
3
好吧,我已经完成了默认的笔记 API,这是代码。
NotesAPITest nat = new NotesAPITest();
NotesThread.sinitThread();
Session sess1 = NotesFactory.createSession();
System.out.println(sess1.getUserName());
Database database = sess1.getDatabase("", "mailfile");
View calendarView = database.getView("($Calendar)");
DateTime dt = sess1.createDateTime("today");
ViewEntryCollection vec = calendarView.getAllEntriesByKey(dt, true);
ViewEntry entry = vec.getFirstEntry();
while (entry != null)
{
Document caldoc = entry.getDocument();
System.out.println("Subject: " + caldoc.getItemValueString("Subject"));
System.out.println("Chair Person: " + caldoc.getItemValueString("Chair"));
System.out.println("Start Time: " + nat.getStartEndTimes(caldoc, "StartDateTime") );
System.out.println("Start Time: " + nat.getStartEndTimes(caldoc, "EndDateTime") );
System.out.println("Required: " + caldoc.getItemValueString("RequiredAttendees"));
entry = vec.getNextEntry();
}
我看到的唯一缺点是,每当提取会话时,便笺会弹出一个密码对话框。到目前为止,在我的搜索中,我还没有看到解决方案。我想显然是在 LN 的安全安排。
于 2009-09-18T15:56:09.617 回答
2
只是通过谷歌搜索,我找到了这篇文章。他们在那里为 Notes 创建了一个 Eclispe 插件。获取员工生日的示例代码也在那里(我猜日历的工作方式类似):
s = NotesFactory.createSession();
// Get the local address book
Database nab = s.getDatabase("",s.getAddressBooks().elementAt(0).toString());
if (nab.isOpen() == false) nab.open();
// Get the Birthdays & Anniversaries view
View baview = nab.getView("BA");
ViewEntryCollection eba = baview.getAllEntries();
ViewEntry entry = eba.getFirstEntry();
list = new String[eba.getCount()];
int count = 0;
while (entry != null) {
Vector vals = entry.getColumnValues();
list[count]= vals.elementAt(1).toString() + " " + vals.elementAt(2).toString();
entry = eba.getNextEntry();
count++;
}
编辑:还请查看此链接以获取有关 Notes.jar 的一些文档。
于 2009-09-17T13:04:38.720 回答
2
NotesFactory.createSession() 方法可用于获取当前会话的句柄。Notes 将自动共享当前的客户端会话。如果此方法失败,则可能是您的基本配置有问题。请确保:
- 您已在运行 Java 应用程序的机器上完全安装了 Notes 客户端,并确保存在有效的 Notes ID 文件。(例如,确保您可以成功打开本机上的 Notes 客户端)。
- 此外,请确保 nnotes.dll 文件可在您的机器路径上访问(不同于 Java CLASSPATH)。
- 并且,确认 Notes.ini 文件也在机器的 PATH 中。
于 2009-09-17T15:47:22.880 回答
1
@vikramjb,尝试做 NotesFactory.createSession((String) null, (String) null, password); 以防止每次您对需要安全的会话执行某些操作时,便笺密码弹出窗口都会提示您。
从这里发现了这个:http: //lekkimworld.com/2006/07/10/java_in_notes_domino_explained_domino_session_tester.html
于 2010-03-20T09:22:23.320 回答