/* EventDeviceDao.java Copyright (c) 2014 NTT DOCOMO,INC. Released under the MIT license http://opensource.org/licenses/mit-license.php */ package org.deviceconnect.android.event.cache.db; import org.deviceconnect.android.event.cache.Utils; import android.content.ContentValues; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteException; /** * EventDeviceテーブル用DAOクラス. * * * @author NTT DOCOMO, INC. */ final class EventDeviceDao implements EventDeviceSchema { /** * Utilityクラスなのでprivate. */ private EventDeviceDao() { } /** * イベントとデバイスのマッチング情報を登録する. * * @param db データベース操作オブジェクト * @param attributeId アトリビュートID * @param serviceId サービスID * @return 登録出来た場合は登録時のIDを返す。重複している場合は登録済みのIDを返す。処理に失敗した場合は-1を返す。 */ static long insert(final SQLiteDatabase db, final long attributeId, final long serviceId) { long result = -1L; Cursor cursor = db.query(TABLE_NAME, new String[] {_ID}, A_ID + "=? AND " + D_ID + "=?", new String[] {"" + attributeId, "" + serviceId}, null, null, null); if (cursor.getCount() == 0) { ContentValues values = new ContentValues(); values.put(A_ID, attributeId); values.put(D_ID, serviceId); values.put(CREATE_DATE, Utils.getCurreTimestamp().getTime()); values.put(UPDATE_DATE, Utils.getCurreTimestamp().getTime()); result = db.insert(TABLE_NAME, null, values); } else if (cursor.moveToFirst()) { if (cursor.getColumnIndex(_ID) != -1) { result = cursor.getLong(0); } } cursor.close(); return result; } /** * 指定されたIDの行を削除. * * @param db データベース操作クラス * @param id ID * @return 削除された行の数。無い場合は0を返す。 */ static int deleteById(final SQLiteDatabase db, final long id) { int result = 0; try { return db.delete(TABLE_NAME, _ID + "=?", new String[] {"" + id}); } catch (SQLiteException e) { result = 0; } return result; } }