intra-mart Accel Documents プログラミングガイド 第7版 2018-04-01

フォルダ/文書一覧

概要

ドロワまたはフォルダ直下のフォルダまたは文書一覧の取得について記載します。

サンプルプログラム

サンプルコードでは、フォルダのIDが、”kn:folder-20”のときを例に記載しています。

// 一覧を取得するドロワまたはフォルダのIDを指定します。
ObjectId parentObjectId = ObjectId.fromIdString("kn:folder-20");

// ここでは、フィルタリングしない条件を指定したサンプルを記載しています。
KnFilter filter = KnFilter.FULL;

// フェッチしてくる属性の情報をSetで用意します。
Set<AttributeId> fetchAttributeIds = new HashSet<AttributeId>();
// 名前属性をフェッチしてくる属性に含めます。
AttributeId nameAttrId = KnSystemSchemas.OBJECT_NAME_ATTRIBUTE_ID;
fetchAttributeIds.add(nameAttrId);

// フェッチ条件を生成します。
KnFetch fetch = new KnFetch(fetchAttributeIds, false, false);

// 名前によるソート条件を生成します。
AttributeSortOrder attrSortOrder = new AttributeSortOrder(nameAttrId, Direction.ASCEND);
List<SortOrder> sortOrders = new ArrayList<SortOrder>();
sortOrders.add(attrSortOrder);
SortOrderList sortOrderList = new SortOrderList(sortOrders, null);

// フォルダまたは文書一覧を取得します。
BaseIterable<KnObject> objects =
        session.getChildObjects(parentObjectId, filter, fetch, sortOrderList);
// 取得結果を標準出力に書き出します。
try {
    for (KnObject object : objects) {
        System.out.println(object.getName());
        if (object instanceof KnFolder) {
            // フォルダの場合の処理を記載します。
            KnFolder folder = (KnFolder) object;
            System.out.println(folder.getName());
        } else if (object instanceof KnDocument) {
            // 文書の場合の処理を記載します。
            KnDocument document = (KnDocument) object;
            System.out.println(document.getName());
        }
    }
} finally {
    objects.close();
}

以上のコードでフォルダ(kn:folder-20)直下のアクセス可能なフォルダまたは文書一覧を取得できます。 フォルダまたば文書の一覧は、名前の昇順でソートされて取得されます。

コラム

BaseIterableなどのイテラブルは、不要になったら、必ずクローズしてください。