2

特定の日付のすべてのカレンダー エントリを抽出する単純な Java コードに取り組んでいます。Domingo を使用できることはわかっていますが、この目的には Notes.jar のみを使用したいと考えています。特定の資格情報に基づいてセッションを作成し、カレンダー オブジェクトを取得することは可能です。現在実行中の Notes セッションを抽出し、そのセッション オブジェクトを使用してメール ファイルのカレンダー ビューを開き、操作を開始しようとしています。しかし、私はそれを機能させることができません。誰でもこれに関するアイデアやリンクを持っていますか?

4

4 に答える 4

3

さて、デフォルトの Notes 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 アプリを実行しているマシンにノーツ クライアントが完全にインストールされており、有効なノーツ 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 に答える