HUMCOM Base Library

HUMCOM Librariesの一番基本となるライブラリ。 各メソッドは$hcというモジュール内に押し込んでいる。

$hc.setDebugConfig(prefix, debugFlag)

$hc.debug()用の設定。デバッグログのプリフィックスとデバッグメッセージを残すかどうか設定する。

通常はページを開く時に設定する。postOpenDocumentイベントやafterPageLoadイベントの処理に記載しておくといい。 無条件にデバッグフラグをtrueにしてもいいが、設定によって切り替えてもいいし、設定に入れたユーザーが操作した場合だけデバッグログを残す という方法もある。

"debugUsers"の設定に応じてデバッグログを残すかどうか決めることができる。

  if (@IsMember(@UserName(), $hcdb.getSettings("debugUsers"))) {
    $hc.setDebugConfig("HUMCOM", true);
  } else {
    $hc.setDebugConfig("HUMCOM", false);
  }
  
$hc.debug(message, object)

デバッグフラグがONになってれば、デバッグメッセージを残す。

サーバ側のJavaScriptの記述箇所にこれを記載しておけば、サーバログにメッセージが記録される。 objectの指定は任意だが、データオブジェクトなどを記述しておけば解析表示してくれる。

こんな感じで使う。

  $hc.debug("itemList = ", itemList);
  

複数の変数の中身を見たいなら、こんな感じ。

  $hc.debug("in postOpen(), [index, itemList] = ", [index, itemList]);
  

こんな感じのログが残る。

  [TimeStamp][DEBUG][UserName]:[prefix]デバッグメッセージ
  

プロパティをいろいろ持ってる複雑なオブジェクトも解析して表示してくれるので決行便利。

ログは1行の長さが制限されてて、メッセージが長めになると途中で分割されたりして、ちょっと読みにくい。複数行に分かれたログをひとつにまとめるツールをlog.nsfへのprintデバッグ で説明している。

$hc.bug(message, object)

こちらは例外処理などに記載しておく。後でログをチェックすれば変なことが起きてないかチェックできる。 こちらはデバッグログの設定とは関係なく記録が残る。

  [TimeStamp][BUG!][UserName]:[prefix]デバッグメッセージ
  
$hc.toJson(object)

objectをJSON形式に変換してくれる。XPagesにもtoJson()があるけど、漢字がそのままNotesクライアントで読める形式で変換してくれるので こっちのほうが便利。

これは海老原さんのライブラリが元ネタ。

$hc.fromJson(json_text)

まぁ中身はXPages標準のfromJson()を呼び出してるだけ。

$hc.dbLookup(dbName, viewName, key, colNumber)

@dbLookup()の代わり。 マッチするのものがないときに、例外がおきるのはちょっと使いにくいので、空の配列を返すようにした。 また、マッチする結果が1つだったときにも文字列じゃなくて、配列で返すようにした。

$hc.dbColumn(dbName, viewName, colNumber)

@dbColumn()の代り。これも必ず配列を返すようにした。

$hc.getAttachFileItems(xsp_doc, field_name)

リッチテキストフィールドに添付されているファイルの情報を返す。ファイル名とアクセス用URLのプロパティがセットされたオブジェクトの配列を 返してくれる。.nameがファイル名、.urlが添付ファイルへのURLを返す(相対URLだけど)。

$hc.getAttachFileItemsND(doc, field_name)

$hc.getAttachFileItems()のNotesDocument版。

$hc.createMailDoc(title, sendto)

Subjectとあて先をセットしたメール用のNotesDocumentオブジェクトを返してくれる。

あと、Bodyをセットしてsend()を作用させればメールが送信される。

$hc.getTimestamp(datetime)

datetimeに時刻オブジェクトを渡すと"01:20:30"の文字列を返す。 datetimeを指定しなければ、現在のタイムスタンプを返す。

$hc.getDatestamp(datetime)

datetimeに時刻オブジェクトを渡すと"2015/01/25"の日付を示す文字列を返す。 datetimeを指定しなければ、現在の日付スタンプを返す。

$hc.showErrorMsg(messages, tag_id)

tag_idで特定可能な<xp:message>か<xp:messages>にエラーメッセージを書き込む。messagesを配列で指定すれば、エラーメッセージを列挙してくれる。 その場合は、出力先は<xp:messages>である必要がある。

$hc.getDominoTime(timestamp)

"2015/01/20 01:00:00"の形式の文字列をDate型の時刻オブジェクトを返す。