Domino の Java プログラム 講座 (初級編 そのさん -ビューへのアクセス[1]- )

ドミノをアクセスするJavaプログラムの書き方を簡単に解説していくシリーズの三回目です。

今回はビューのアクセスのしかたをご紹介します。
と、いってもあるデータベースの中にどんなビューがあるかリストする、というまずははじめの一歩といったプログラムです。


今回は以前の「そのいち」と同じようにスタンドアローンで作成してみました。環境やコンパイルのしかたは同じです。

こちらが実行結果です。アクセスするサンプルのデータベースにはロータスの研修「セキュリティとワークフロー」で使用したデータベースを使用しています。

こちらがプログラムの内容です。

import lotus.domino.*;

public class GetAllViewSample implements Runnable {

public static void main (java.lang.String[] args) {
GetAllViewSample gavs = new GetAllViewSample ();
Thread t = new Thread((Runnable)gavs);
t.start(); }

public void run() {
try {
java.net.InetAddress myHost = java.net.InetAddress.getLocalHost();
Session s = NotesFactory.createSession(myHost.getHostName());
Database db = s.getDatabase(null, "workflow/tfinal.nsf");
java.util.Vector v = db.getViews();
System.out.println("データベース「" + db.getTitle() + "」の中には以下の" + v.size() + "個のビューがあります");
for (int x=0; x < v.size(); x ++) {
View currentView = (View)v.elementAt(x);
System.out.println(x + " : " + currentView.getName()); }
db.recycle();
s.recycle(); }
catch (NotesException n) {
System.out.println("ID: " + n.id + " -- Name: " + n.text); }
catch (Exception e) {
e.printStackTrace(); }
}
}

「そのいち」と骨格はほとんどかわりません。

ポイントとなる部分を簡単に解説していきましょう。

まずセッションオブジェクトを取得して、といったところからはじまります。

Session s = NotesFactory.createSession(myHost.getHostName());
Database db = s.getDatabase(null, "workflow/tfinal.nsf");

さらにデータベースオブジェクトを取得するところまでは同じです。

java.util.Vector v = db.getViews();

ビューのリストを格納する Vector オブジェクトを用意し、そこにデータベースに対して getViews メソッドを使用してビューのリストを取得して格納します。

View currentView = (View)v.elementAt(x);

Vector オブジェクトから View オブジェクトを取り出し、

System.out.println(x + " : " + currentView.getName());

取り出された View オブジェクトに対して getName メソッドを使用して名前を取得し、println で出力します。


どんな項目があるかもついでに表示するようにしてみましょう。

それぞれのビューのオブジェクトを取得した時に、あわせてそのビューの項目を getColumns メソッドを使用して取得する以下のロジックを追加します。

Vector viewColumns = currentView.getColumns();

Vector オブジェクトを今度はちょっとやり方を変えて、Enumeration オブジェクトを使用して順次に取り出します。

Enumeration en = viewColumns.elements();
while (en.hasMoreElements()) {

Vector の要素はもともと getColumns メソッドで取得した ViewColumn オブジェクトです。キャストして取り出し、 getTitle メソッドを使用して項目の名前を取得します。

ViewColumn vc = (ViewColumn) (en.nextElement());
System.out.println(vc.getTitle());

以上のロジックを追加したのが、以下のソースです。

import lotus.domino.*;
import java.util.*;

public class GetAllViewSample implements Runnable {

public static void main (java.lang.String[] args) {
GetAllViewSample gavs = new GetAllViewSample ();
Thread t = new Thread((Runnable)gavs);
t.start(); }

public void run() {
try {
java.net.InetAddress myHost = java.net.InetAddress.getLocalHost();
Session s = NotesFactory.createSession(myHost.getHostName());
Database db = s.getDatabase(null, "workflow/tfinal.nsf");
java.util.Vector v = db.getViews();
System.out.println("データベース「" + db.getTitle() + "」の中には以下の" + v.size() + "個のビューがあります");
for (int x=0; x < v.size(); x ++) {
View currentView = (View)v.elementAt(x);
System.out.println(x + " : " + currentView.getName());
System.out.println("[以下の項目があります]");

Vector viewColumns = currentView.getColumns();
Enumeration en = viewColumns.elements();
while (en.hasMoreElements()) {
ViewColumn vc = (ViewColumn) (en.nextElement());
System.out.println(vc.getTitle());
vc.recycle();}

}
db.recycle();
s.recycle(); }
catch (NotesException n) {
System.out.println("ID: " + n.id + " -- Name: " + n.text); }
catch (Exception e) {
e.printStackTrace(); }
}
}

変更後の結果の一部です。

[Top Pageに戻る]

Ads by TOK2