使用Notes.jar获取给定日期的所有日历条目

时间:2009-09-17 12:48:18

标签: java lotus-notes

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

4 个答案:

答案 0 :(得分: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中的安全安排我猜。

答案 1 :(得分:2)

通过谷歌搜索我发现this article。他们在那里为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++;
    }

编辑:另请查看this link 以获取有关Notes.jar的一些文档。

答案 2 :(得分:2)

NotesFactory.createSession()方法可用于获取当前会话的句柄。 Notes将自动共享当前客户端会话。如果此方法失败,则基本配置可能有问题。请确保:

  • 您在运行Java应用程序的计算机上完全安装了Notes客户端,并确保存在有效的Notes标识文件。 (例如,确保您可以成功在此计算机上打开Notes客户端)。
  • 此外,请确保您的计算机路径上可以访问nnotes.dll文件(不同于Java CLASSPATH)。
  • 并确认Notes.ini文件也在计算机的路径上。

答案 3 :(得分:1)

@vikramjb,尝试做NotesFactory.createSession((String)null,(String)null,password);防止笔记密码弹出在每次对需要安全性的会话执行某些操作时提示您。

从这里发现:http://lekkimworld.com/2006/07/10/java_in_notes_domino_explained_domino_session_tester.html