記事を操作する(ブログプラグイン)
ここでは、サイトアカウントに存在するブログインスタンスを、SDKから操作する方法について解説します。
記事オブジェクトcom.echopf.contents.blogs.ECHOEntryObject
ECHOEntryObjectは、個別記事を操作するためのオブジェクトです。
オブジェクトを生成する
新しい記事をオブジェクトとして生成するには、コンストラクタの第一引数にブログインスタンスのIDを指定します。
ECHOEntryObject entry = new ECHOEntryObject("ブログインスタンスID");
既存記事をオブジェクトとして生成するには、コンストラクタの第二引数に記事IDを指定します。
ECHOEntryObject entry = new ECHOEntryObject("ブログインスタンスID", "記事ID");
オブジェクトフィールド
記事オブジェクトは、以下のフィールドを持ちます。
フィールド名 | 型 | 説明 | 可変 |
---|---|---|---|
refid | java.lang.String | 記事ID | ◯ |
url | java.lang.String | URL | × |
url_path | java.lang.String | URLパス | × |
title | java.lang.String | 記事タイトル | ◯ |
description | java.lang.String | 概要 | ◯ |
keywords | java.lang.String | キーワード | ◯ |
robots | java.lang.String | 検索エンジンロボット制御 | ◯ |
contents | org.json.JSONObject | 記事コンテンツ | ◯ |
link_status | java.lang.Integer | リンク設定値
|
◯ |
modified | com.echopf.ECHODate | 最終更新日時 | × |
created | com.echopf.ECHODate | 作成日時 | × |
published | com.echopf.ECHODate | 記事日時 | ◯ |
categories | org.json.JSONArray <com.echopf.contents. ECHOContentsCategoryObject> |
所属カテゴリ | ◯ |
フィールドからデータを取得する
文字列(String)型のフィールドからデータを取得する
文字列型のフィールドからデータを取得する場合は、getStringメソッドまたはoptStringメソッドを使用します。
String title = entry.getString("title");
整数値(int)型のフィールドからデータを取得する
整数値型のフィールドからデータを取得する場合は、getIntメソッドまたはoptIntメソッドを使用します。
オブジェクト(JSONObject)型のフィールドからデータを取得する
オブジェクト型のフィールドからデータを取得するには、getJSONObjectメソッドまたはoptJSONObjectメソッドを使用します。
JSONObject contents = entry.getJSONObject("contents");
また、ネストされたフィールドから中身を直接取り出すには、ドット(.)区切りでフィールド名を指定します。
String contents_main = entry.getString("contents.main");
配列(JSONArray)型のフィールドからデータを取得する
配列型のフィールドからデータを取得するには、getJSONArrayメソッドまたはoptJSONArrayメソッドを使用します。
JSONArray categories = entry.getJSONArray("categories");
フィールドにデータをセットする
オブジェクトのフィールドにデータをセットするには、putメソッドまたはputOptメソッドを使用します。
entry.put("title", "新しい記事");
entry.put("contents", new JSONObject("{name:\"記事コンテンツです。\"}"));
記事を保存する
リモートサーバー上へ記事を保存するには、pushメソッド(同期通信による保存)もしくはpushInBackgroundメソッド(非同期通信による保存)を使用します。
ECHOEntryObject entry = new ECHOEntryObject("ブログインスタンスID");
entry.put("title", "新しい記事"); // 記事のタイトルをセット
entry.put("refid", "20150305"); // 記事IDをセット
....
// 非同期で記事を保存
entry.pushInBackground(new PushCallback<ECHOEntryObject>() {@Override // 保存完了後に実行するコールバックメソッドを定義
public void done(ECHOEntryObject obj, ECHOException e) {
if(e == null) { // 正常終了
Log.d("Complete", obj.toString());
}else{ // 異常発生
Log.e("Error", e.toString());
}
}});
記事を取得する
リモートサーバー上に存在する記事を取得するには、fetchメソッド(同期通信による取得)もしくはfetchInBackgroundメソッド(非同期通信による取得)を使用します。
ECHOEntryObject entry = new ECHOEntryObject("ブログインスタンスID", "記事ID");
// 非同期で記事を取得
entry.fetchInBackground(new FetchCallback<ECHOEntryObject>() {@Override // 取得完了後に実行するコールバックメソッドを定義
public void done(ECHOEntryObject obj, ECHOException e) {
if(e == null) { // 正常終了
Log.d("Complete", obj.toString());
}else{ // 異常発生
Log.e("Error", e.toString());
}
}});
記事を削除する
リモートサーバー上のアーカイブに存在する記事を削除するには、deleteメソッド(同期通信による削除)もしくはdeleteInBackgroundメソッド(非同期通信による削除)を使用します。
ECHOEntryObject entry = new ECHOEntryObject("ブログインスタンスID", "記事ID");
// 非同期で記事を削除entry.deleteInBackground(new DeleteCallback<ECHOEntryObject>() {
@Override // 削除完了後に実行するコールバックメソッドを定義
public void done(ECHOEntryObject obj, ECHOException e) {
if(e == null) { // 正常終了
Log.d("Complete", obj.toString());
}else{ // 異常発生
Log.e("Error", e.toString());
}
}});
記事を検索する
記事を検索するには、ECHOBlogQuery.findメソッド(同期通信による検索)もしくはECHOBlogQuery.findInBackgroundメソッド(非同期通信による検索)を使用します。
第二引数にリスト制御パラメータを与えることで、データの検索・抽出条件を指定することが可能です。
// 非同期で記事を検索
ECHOBlogQuery.findInBackground("ブログインスタンスID", new JSONObject("{q:\"検索キーワード\"}"),
new FindCallback<ECHOEntryObject>() {@Override // 取得完了後に実行するコールバックメソッドを定義
public void done(ECHOList<ECHOEntryObject> objects, ECHOException e) {
if(e == null) { // 正常終了
Log.d("Complete", objects.toString());
}else{ // 異常発生
Log.e("Error", e.toString());
}
}}
);
現在のACLを取得する
オブジェクトに現在設定されているACLを取得するには、getACLメソッドを使用します。
ECHOACLObject current_acl = entry.getACL();
ACLを変更する
オブジェクトに新しいACLを設定するには、setNewACLメソッドを使用します。
ECHOACLObject new_acl = new ECHOACLObject(); // ACLオブジェクトを生成
new_acl.putEntryForAll(new ECHOACLEntry(false, false, false, false)); // 例:非ログイン訪問者の操作権限を全て奪う
entry.setNewACL(new_acl); // 新しいACLをセット
entry.push(); // セットしたACLを反映させるには、最後に必ず保存を実行してください