[AppPot] Android SDK利用チュートリアル(2)

公開 : 2014.07.29 
カテゴリー

こんにちは、十川です。
前回は、AppPotの環境の準備と、簡単なAndroidアプリを使って、データベースを自動生成するところまでをやりました。
今回は、作成したデータベースに実際アクセスしてみましょう。
次の順番で進めていきます。
1.データの作成
2.データの取得
3.データの更新
4.データの削除
できあがったサンプルアプリのUIはこんな感じです。
2014-07-28 21.04.20

1.データの作成

それでは前回作成したValue ObjectのCaseReportを元に作成してみましょう。
CaseReportのオブジェクトを作って、属性に値をセットしていきます。
最後はAPEntityManger.saveDataメソッドで保存します。
Value Objectは開発者が定義した属性以外にも、制御用の情報をいくつか持っています。
scopeTypeもその1つで、これから作成するデータの共有範囲を設定できます。
下記の例では共有範囲をグループにしており、グループ外のユーザーからは参照することはできません。

CaseReport caseReport = new CaseReport();
caseReport.age = 25;
caseReport.gender = 0;
caseReport.isFollow = 1;
caseReport.memo = "新患。高血圧";
caseReport.patientName = "アップポット 太郎";
// 作成するデータの参照範囲を設定
// 1:本人のみ、2:データ生成ユーザーと同じグループ内で共有、3:全ユーザーに共有
caseReport.scopeType = 2;
APEntityManager.getInstance().saveData(caseReport);

この時の、サーバー側のDBを参照してみましょう。
先ほど設定したデータが作成されていますね。
localhost_8080___localhost___stewsprint8_jp_co_ncdc_AppPotDemoApplication_1_0___CaseReport___phpMyAdmin_4_1_7

2.データの取得

次に作成したデータを取得してみましょう。
APQueryクラスを使用して、データを取得するための条件を指定します。
条件はいろいろ指定できるのですが、ここでは”patientName”属性の値を部分一致で条件指定してみましょう。

APQuery query = new APQuery(CaseReport.class);
// 名前をキーに検索
query.whereLike("patientName", "アップポット");
APEntityManager.getInstance().getData(query, new APResponseHandler() {
	@Override
	public void onFailure(APResponse arg0) {
		Log.e(TAG,"Can not get AppData:"+ arg0.getDescription());
	}
	@Override
	public void onSuccess(APResponse arg0) {
		Log.e(TAG, "get AppData:" + arg0.getDescription());
		List list = arg0.getResultForSearchObject(CaseReport.class).getSearchResuls();
		for (APObject object : list) {
			 selectedCaseReport = (CaseReport) object;
			 Log.e(TAG, "DATA:" + selectedCaseReport.patientName);
		 }
	}
	});
	

成功(onSuccess)または失敗(onFailure)のコールバックが返ってきますので、それぞれの中身を実装します。
ここでは結果セットから条件に合致したものをリストで受け取って、ログに出力しています。
上手くいっていれば、次のようなログがLogCatに出力されるはずです。

07-28 21:55:44.059: E/AppPotDemo(14389): get AppData:null
07-28 21:55:44.129: E/AppPotDemo(14389): DATA:アップポット 太郎

3.データの更新

先ほど取得したレコードに対して、値を書き換えてsaveDataをやるだけです。

selectedCaseReport.memo = selectedCaseReport.memo + "\nメモを更新しました。";
APEntityManager.getInstance().saveData(selectedCaseReport);

もともとのmemo属性の値に、メモを追記しています。
次のようにサーバーのデータベースの値も変更されています。
localhost_8080___localhost___stewsprint8_jp_co_ncdc_AppPotDemoApplication_1_0___CaseReport___phpMyAdmin_4_1_7 2

4.データの削除

データの削除も、先ほど取得したオブジェクトを引数にdeleteDataメソッドを呼ぶだけです。
サーバ側のデータは論理削除されますので、レコードとしては削除後も残っています。

APEntityManager.getInstance().deleteData(selectedCaseReport);<br />

いかがだったでしょうか?これだけのコードで、サーバーと、アプリ内のDBを操作しているので、かなり開発生産性は高いと思います。

ページトップへ

お問い合わせ

NCDCのサービスやセミナー依頼などのお問い合わせは
下記のお電話 また、お問い合わせフォームよりお気軽にご連絡ください。

050-3852-6483