package addressbook; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.NodeList; public class SearchAddressbookBean { ConnectXprioriBean xcon = null; // ConnectXprioriBeanクラス /** * コンストラクタ ConnectXprioriBeanクラスを呼び出しXprioriとの接続を確立する */ public SearchAddressbookBean() { // Xprioriとの接続を確立 xcon = new ConnectXprioriBean(); } /** * アイテムの総数を取得する * * @return アイテム総数 */ public int CountAllItem() { // アイテム数の初期化 int item_num = 0; // アイテム総数を取得するXPath String xpath = "count(/ND/address_book/item)"; // 検索結果を取得する String tmpItem_xml = xcon.query(xpath); // XMLを解析する Document doc = AddressbookUtils.loadXMLFromString(tmpItem_xml); /* * 検索結果として * * * 100 * * という改行(\n)が入った文字列が返ってるので、 * Query-Results要素の値から\nを取り除いた値を取得する */ Element element = (Element) doc.getElementsByTagName("Query-Results") .item(0); String nodevalue = element.getFirstChild().getNodeValue().replace("\n", ""); // 文字列から整数値にキャストする item_num = Integer.parseInt(nodevalue); return item_num; } /** * アイテムを指定した位置から、オフセット分取得する * * @param start * 取得開始番号 * @param offset * オフセット * @return ItemBeanの配列 */ public ItemBean[] getItems(int start, int offset) { // オフセット分のItemBean配列を定義する ItemBean[] items = new ItemBean[offset]; // 引数からXPathの条件をつくる String xpathCondition = "position() >= " + start + " and " + "position() < " + (start + offset); // 指定した範囲の位置iのitemノードを取得するXPathを問い合わせ検索結果を取得する String itemsXML = xcon.query("/ND/address_book/item[" + xpathCondition + "]"); // 検索結果XMLからDOM Documentを作成する Document doc = AddressbookUtils.loadXMLFromString(itemsXML); NodeList itemnodeList = doc.getElementsByTagName("item"); for (int i = 0; i < itemnodeList.getLength(); i++) { items[i] = new ItemBean(itemnodeList.item(i)); } return items; } /** * 指定したIDを持つアイテムを取得する * * @param id * @return ItemBean */ public ItemBean getItemById(String id) { // 引数idと同じID属性値を持つitemノードを取得するXPathを問い合わせ、検索結果を取得する String itemXML = xcon.query("/ND/address_book/item[@id = " + id + "]"); // 検索結果XMLからDOM Documentを作成する Document doc = AddressbookUtils.loadXMLFromString(itemXML); // DOM Documentから先頭のitemノードを取り出しItemBeanを作成する ItemBean item = new ItemBean(doc.getElementsByTagName("item").item(0)); return item; } /** * ログアウトする * */ public void logout() { xcon.logout(); } }