/* SonyCameraDBHelper Copyright (c) 2017 NTT DOCOMO,INC. Released under the MIT license http://opensource.org/licenses/mit-license.php */ package org.deviceconnect.android.deviceplugin.sonycamera; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.provider.BaseColumns; import org.deviceconnect.android.deviceplugin.sonycamera.service.SonyCameraService; import java.util.ArrayList; import java.util.List; /** * Sonyカメラを管理するDBヘルパークラス. * @author NTT DOCOMO, INC. */ class SonyCameraDBHelper { /** * Define the name of the database. */ private static final String DB_NAME = "sony_camera.db"; /** * Define the version of the database. */ private static final int DB_VERSION = 1; /** * アクセスポイントの情報を格納するテーブル名. */ private static final String TBL_NAME = "ssid_tbl"; /** * ユーザ名を格納するカラム名. */ private static final String COL_WIFI_SSID = "wifi_ssid"; /** * ユーザ名を格納するカラム名. */ private static final String COL_DEVICE_NAME = "device_name"; /** * DB管理ヘルパー. */ private DBHelper mDBHelper; SonyCameraDBHelper(final Context context) { mDBHelper = new DBHelper(context); } long addSonyCameraService(final SonyCameraService service) { ContentValues values = new ContentValues(); values.put(COL_WIFI_SSID, service.getId()); values.put(COL_DEVICE_NAME, service.getName()); SQLiteDatabase db = mDBHelper.getWritableDatabase(); try { return db.insert(TBL_NAME, null, values); } finally { db.close(); } } long removeSonyCameraService(final SonyCameraService service) { String whereClause = COL_WIFI_SSID + "=?"; String[] whereArgs = { service.getId() }; SQLiteDatabase db = mDBHelper.getWritableDatabase(); try { return db.delete(TBL_NAME, whereClause, whereArgs); } finally { db.close(); } } List<SonyCameraService> getSonyCameraServices() { String sql = "SELECT * FROM " + TBL_NAME; String[] selectionArgs = {}; SQLiteDatabase db = mDBHelper.getReadableDatabase(); Cursor cursor = db.rawQuery(sql, selectionArgs); try { List<SonyCameraService> services = new ArrayList<>(); boolean next = cursor.moveToFirst(); while (next) { String id = cursor.getString(cursor.getColumnIndex(COL_WIFI_SSID)); String name = cursor.getString(cursor.getColumnIndex(COL_DEVICE_NAME)); SonyCameraService service = new SonyCameraService(id); service.setName(name); services.add(service); next = cursor.moveToNext(); } return services; } finally { cursor.close(); } } private static class DBHelper extends SQLiteOpenHelper { DBHelper(Context context) { super(context, DB_NAME, null, DB_VERSION); } @Override public void onCreate(final SQLiteDatabase db) { createDB(db); } @Override public void onUpgrade(final SQLiteDatabase db, final int oldVersion, final int newVersion) { db.execSQL("DROP TABLE IF EXISTS " + TBL_NAME); createDB(db); } private void createDB(final SQLiteDatabase db) { String sql = "CREATE TABLE " + TBL_NAME + " (" + BaseColumns._ID + " INTEGER PRIMARY KEY, " + COL_WIFI_SSID + " TEXT NOT NULL, " + COL_DEVICE_NAME + " TEXT NOT NULL " + ");"; db.execSQL(sql); } } }