2

我正在编写一个简单的 Java 代码来提取给定日期的所有日历条目。我知道使用 Domingo 是可能的,但我只想为此目的使用 Notes.jar。我可以根据给定的凭据创建会话并获取日历对象。我希望提取当前正在运行的 Notes 会话并使用该会话对象打开邮件文件中的日历视图并开始使用它。但我无法让它工作。有人对此有任何想法或链接吗?

4

4 回答 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 回答