記事を操作する(ブログプラグイン)

ここでは、サイトアカウントに存在するブログインスタンスを、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 リンク設定値
  • 1:通常リンク
  • 2:セキュアリンク
  • -1:リンクしない
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を反映させるには、最後に必ず保存を実行してください