グループを操作する(メンバプラグイン)
ここでは、メンバーインスタンスにおけるグループを、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(文字列型)のフィールドからデータを取得する
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(); // 反映させるには、最後に必ず保存を実行してください