アカウントライブラリの紹介

XPagesアプリを作るときには、ユーザーの漢字名や所属を表示する機能が必要になることもあると思う。 このあたりの処理をまとめたライブラリを作ってみよう。

こんなサービスを提供するイメージ。

ビューを使った変換処理の原理

やり方はいくつかあるが、ビューに対してgetDocumentByKey()を使ってキー値で検索。NotesDocumentを得られたら、そいつに対して getItemValueString()を呼べばフィールド値を得られる。

具体的なコードで書くとこんな感じ。

  function userNameToKanjiName(username) {
    var db:NotesDatabase = session.getDatabase(database.getServer(), "names.nsf");
    var view:NotesView = db.getView("UserNameTo");
    var doc:NotesDocument = view.getDocumentByKey(username, true);
    return doc ? doc.getItemValueString("Comment") : null;
  }
  

使うときは、こんな感じ。

  var kanjiname = userNameToKanjiName(@Username());
  

アカウントSSJSライブラリ

さっきのような関数をSSJSライブラリに並べれば、変換ライブラリ集ができるのはできるのだが、以下のように書くのがお勧め。 各種メソッドは$accというオブジェクト内にまとめられるので名前空間の汚染が最小限になるし、プライベートメソッド扱いの 関数もきっちり書き分けられるので、気持ち的にもすっきりする。

  $acc = {};
  (function() {
    var ViewNameUserNameTo = "UserNameTo";
  
    // Public Method
    $acc.userNameToKanjiName = function(username) {
      var view = _getDDView(ViewNameUserNameTo);
      var doc = view.getDocumentByKey(username, true);
      return doc ? doc.getItemValueString("Comment") : null;
    }
  
    // Private Method
    function _getDDView(view_name) {
        var db:NotesDatabase = session.getDatabase(database.getServer(), "names.nsf");
        var view = db.getView(view_name);
        return view;
    }
  })();
  

後は必要な変換関数をこの$accの中に組み込んでいけばOK。