カテゴリを操作する(ブログ・データベースプラグイン)

ここでは、ブログインスタンスデータベースインスタンスにおけるカテゴリを、SDKから操作する方法について解説します。

カテゴリオブジェクトcom.echopf.contents.ECHOContentsCategoryObject

ECHOContentsCategoryObjectは、カテゴリを操作するためのオブジェクトです。

オブジェクトを生成する

新しいカテゴリをオブジェクトとして生成するには、コンストラクタの第一引数にブログインスタンスまたはデータベースインスタンスのIDを指定します。

ECHOContentsCategoryObject category = new ECHOContentsCategoryObject("インスタンスID");

既存のカテゴリをオブジェクトとして生成するには、コンストラクタの第二引数にカテゴリIDを指定します。

ECHOContentsCategoryObject category = new ECHOContentsCategoryObject("インスタンスID", "カテゴリID");

オブジェクトフィールド

カテゴリオブジェクトは、以下のフィールドを持ちます。

フィールド名説明変更
refid java.lang.String カテゴリID
name java.lang.String カテゴリ名
description java.lang.String 概要
keywords java.lang.String キーワード

変更不可フィールドは、サーバーから提供される静的な情報です。

フィールドからデータを取得する

String(文字列型)のフィールドからデータを取得する

String型のフィールドからデータを取得する場合は、getStringメソッドまたはoptStringメソッドを使用します。

String name = category.getString("name");

フィールドにデータをセットする

オブジェクトのフィールドにデータをセットするには、putメソッドまたはputOptメソッドを使用します。

category.put("name", "新しいカテゴリ");

サーバーへカテゴリを保存する

サーバーへカテゴリを保存するには、pushメソッド(同期通信による保存)もしくはpushInBackgroundメソッド(非同期通信による保存)を使用します。

ECHOContentsCategoryObject category = new ECHOContentsCategoryObject("インスタンスID");

category.put("name", "新しいカテゴリ"); // カテゴリ名をセット
category.put("refid", "category_xyz"); // カテゴリIDをセット
....

// 非同期でカテゴリを保存
category.pushInBackground(new PushCallback<ECHOContentsCategoryObject>() {

      @Override // 保存完了後に実行するコールバックメソッドを定義
      public void done(ECHOContentsCategoryObject obj, ECHOException e) {
            if(e == null) { // 正常終了
                  Log.d("Complete", obj.toString());
            }else{ // 異常発生
                  Log.e("Error", e.toString());
            }
      }

});

サーバーからカテゴリを取得する

サーバー上に存在する既存のカテゴリを取得するには、fetchメソッド(同期通信による取得)もしくはfetchInBackgroundメソッド(非同期通信による取得)を使用します。

ECHOContentsCategoryObject category = new ECHOContentsCategoryObject("インスタンスID", "カテゴリID");

// 非同期でカテゴリデータを取得
category.fetchInBackground(new FetchCallback<ECHOContentsCategoryObject>() {

      @Override // 取得完了後に実行するコールバックメソッドを定義
      public void done(ECHOContentsCategoryObject obj, ECHOException e) {
            if(e == null) { // 正常終了
                  Log.d("Complete", obj.toString());
            }else{ // 異常発生
                  Log.e("Error", e.toString());
            }
      }

});

サーバーからカテゴリを削除する

サーバー上に存在する既存のカテゴリを削除するには、deleteメソッド(同期通信による削除)もしくはdeleteInBackgroundメソッド(非同期通信による削除)を使用します。

ECHOContentsCategoryObject category = new ECHOContentsCategoryObject("インスタンスID", "カテゴリID");

// 非同期でカテゴリデータを削除

category.deleteInBackground(new DeleteCallback<ECHOContentsCategoryObject>() {

      @Override // 削除完了後に実行するコールバックメソッドを定義
      public void done(ECHOContentsCategoryObject obj, ECHOException e) {
            if(e == null) { // 正常終了
                  Log.d("Complete", obj.toString());
            }else{ // 異常発生
                  Log.e("Error", e.toString());
            }
      }

});

現在のACLを取得する

オブジェクトに現在設定されているACLを取得するには、getACLメソッドを使用します。

ECHOACLObject current_acl = category.getACL();

ACLを変更する

オブジェクトに新しいACLを設定するには、setNewACLメソッドを使用します。

ECHOACLObject new_acl = new ECHOACLObject(); // ACLオブジェクトを生成
new_acl.putEntryForAll(new ECHOACLEntry(false, false, false, false)); // 例:非ログイン訪問者の操作権限を全て奪う

category.setNewACL(new_acl); // 新しいACLをセット

category.push(); // セットしたACLを反映させるには、最後に必ず保存を実行してください

カテゴリマップcom.echopf.contents.ECHOContentsCategoriesMap

ECHOContentsCategoriesMapは、ツリー構造を持つカテゴリマップを再帰的に表現します。

オブジェクトを生成する

ルートから最下層までを対象とした全カテゴリマップをオブジェクトとして生成するには、第一引数にブログインスタンスまたはデータベースインスタンスのIDを指定します。

ECHOContentsCategoriesMap categories_map = new ECHOContentsCategoriesMap("インスタンスID"); // 全カテゴリマップオブジェクトを生成

特定のカテゴリをルートとしたサブカテゴリマップをオブジェクトとして生成するには、第二引数にルートとなるカテゴリIDを指定します。

ECHOContentsCategoriesMap categories_map = new ECHOContentsCategoriesMap("インスタンスID", "カテゴリID"); // サブカテゴリマップオブジェクトを生成

ルートカテゴリを取得する

カテゴリマップからルートカテゴリを取得するには、getNodeメソッドを使用します。

子サブカテゴリマップを取得する

ルートカテゴリの下層に属するサブカテゴリマップ群を取得するには、getChildrenメソッドを使用します。

サーバーからカテゴリマップを取得する

サーバーからカテゴリマップを取得するには、fetchメソッド(同期通信による取得)もしくはfetchInBackgroundメソッド(非同期通信による取得)を使用し、サーバーから現在のカテゴリマップを取得します。

// 非同期でカテゴリマップを取得
categories_map.fetchInBackground(new FetchCallback<ECHOContentsCategoriesMap>() {

      @Override // 取得完了後に実行するコールバックメソッドを定義
      public void done(List<ECHOContentsCategoriesMap> map, ECHOException e) {
            if(e == null) { // 正常終了
                  Log.d("Complete", map.toString());
            }else{ // 異常発生
                  Log.e("Error", e.toString());
            }

      }
);

カテゴリの所属階層を変更する

カテゴリの所属階層を変更するには、カテゴリオブジェクトのsetNewParentメソッドを使用します。

ECHOContentsCategoryObject newParent = ECHOContentsCategoryObject("インスタンスID", "新しい親カテゴリID");

category.setNewParent(newParent); // 新しい親カテゴリをセット

category.push(); // 反映させるには、最後に必ず保存を実行してください