2009-09-17 52 views
2

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

回答

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(); 
     } 

我看到的唯一的缺点是,每当会话extracte,音符弹出一个输入密码的对话框。在我的搜索到目前为止,我还没有看到一个解决方案。显然是LN中的安全安排我猜。

2

只是通过Google搜索,我发现了this article。他们为Notes创建了一个Eclispe插件。而对于获得员工brithdays示例代码也有(我想以类似的方式日历作品):

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

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

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

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

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

+0

从这里:http://www.ibm.com/developerworks/lotus/library/ls-Java_access_pt1/ – subdigit 2010-03-20 09:24:19

+0

感谢SubDigit,我知道,具体方法。我不想在我的插件中添加缓存LN用户名和密码的开销,这就是为什么我没有使用这种方法。感谢您的链接。 – vikramjb 2010-03-31 05:07:26

相关问题