グループを操作する(メンバープラグイン)

ここでは、メンバーインスタンスにおけるグループを、SDKから操作する方法について解説します。

グループオブジェクトcom.echopf.members.ECHOMembersGroupObject

ECHOMembersGroupObjectは、グループを操作するためのオブジェクトです。

オブジェクトを生成する

新しいグループをオブジェクトとして生成するには、コンストラクタの第一引数にメンバーインスタンスのIDを指定します。

ECHOMembersGroupObject group = new ECHOMembersGroupObject("メンバーインスタンスID");

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

ECHOMembersGroupObject group = new ECHOMembersGroupObject("メンバーインスタンスID", "グループID");

オブジェクトフィールド

グループオブジェクトは、以下のフィールドを持ちます。

フィールド名説明可変
refid java.lang.String グループID ×
name java.lang.String グループ名

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

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

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

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

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

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

group.put("name", "新しいグループ");

グループを保存する

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

ECHOMembersGroupObject group = new ECHOMembersGroupObject("メンバーインスタンスID");

group.put("name", "新しいグループ"); // グループ名をセット
....

// 非同期でグループを保存
group.pushInBackground(new PushCallback<ECHOMembersGroupObject>() {

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

});

グループを取得する

リモートサーバー上に存在するグループを取得するには、fetchメソッド(同期通信による取得)もしくはfetchInBackgroundメソッド(非同期通信による取得)を使用します。

ECHOMembersGroupObject group = new ECHOMembersGroupObject("メンバーインスタンスID", "グループID");

// 非同期でグループを取得
group.fetchInBackground(new FetchCallback<ECHOMembersGroupObject>() {

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

});

グループを削除する

リモートサーバー上に存在するグループを削除するには、deleteメソッド(同期通信による削除)もしくはdeleteInBackgroundメソッド(非同期通信による削除)を使用します。

ECHOMembersGroupObject group = new ECHOMembersGroupObject("メンバーインスタンスID", "グループID");

// 非同期でグループを削除

group.deleteInBackground(new DeleteCallback<ECHOMembersGroupObject>() {

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

});

現在のACLを取得する

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

ECHOACLObject current_acl = group.getACL();

ACLを変更する

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

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

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

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

グループマップcom.echopf.contents.ECHOMembersGroupsMap

ECHOMembersGroupsMapは、ツリー構造を持つグループマップを再帰的に表現します。

オブジェクトを生成する

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

ECHOMembersGroupsMap groups_map = new ECHOMembersGroupsMap("メンバーインスタンスID"); // 全グループマップオブジェクトを生成

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

ECHOMembersGroupsMap groups_map = new ECHOMembersGroupsMap("メンバーインスタンスID", "グループID"); // サブグループマップオブジェクトを生成

ルートグループを取得する

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

子サブグループマップを取得する

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

サーバーからグループマップを取得する

リモートサーバーからグループマップを取得するには、fetchメソッド(同期通信による取得)もしくはfetchInBackgroundメソッド(非同期通信による取得)を使用します。

// 非同期でグループマップを取得
groups_map.fetchInBackground(new FetchCallback<ECHOMembersGroupsMap>() {

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

      }
);

グループの所属階層を変更する

グループの所属階層を変更するには、グループオブジェクトのsetNewParentメソッドを使用します。

ECHOMembersGroupObject newParent = ECHOMembersGroupObject("メンバーインスタンスID", "新しい親グループID");

group.setNewParent(newParent); // 新しい親グループをセット

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