package com.common.openapi; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import com.common.openapi.entity.DeviceLocalCacheData; import java.util.ArrayList; import java.util.List; public class DeviceLocalCacheDatabase extends SQLiteOpenHelper { private static final String TAG = DeviceLocalCacheDatabase.class.getSimpleName(); private static final String DB_NAME = "device_local_cache"; private static final String TABLE_NAME = "t_device_local_cache"; private static final String TABLE_CREATE_SQL = "create table " + TABLE_NAME + "(" + "cache_id integer primary key autoincrement, " + "device_id text, " + "device_name text, " + "channel_id text, " + "channel_name text, " + "pic_path text, " + "creation_time integer, " + "modify_time integer " + ")"; private static final String[] TABLE_COLUMNS = { "cache_id", "device_id", "device_name", "channel_id", "channel_name", "pic_path", "creation_time", "modify_time" }; public DeviceLocalCacheDatabase(Context context) { super(context, DB_NAME, null, 1); } @Override public void onCreate(SQLiteDatabase db) { db.execSQL(TABLE_CREATE_SQL); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { } public int addLocalCache(DeviceLocalCacheData deviceLocalCacheData) { SQLiteDatabase db = getWritableDatabase(); ContentValues v = new ContentValues(); v.put("device_id", deviceLocalCacheData.getDeviceId()); v.put("device_name", deviceLocalCacheData.getDeviceName()); v.put("channel_id", deviceLocalCacheData.getChannelId()); v.put("channel_name", deviceLocalCacheData.getChannelName()); v.put("pic_path", deviceLocalCacheData.getPicPath()); v.put("creation_time", System.currentTimeMillis()); v.put("modify_time", System.currentTimeMillis()); long rowid = db.insert(TABLE_NAME, null, v); if (rowid != -1) { return 1; } return 0; } public int updateLocalCache(DeviceLocalCacheData deviceLocalCacheData) { ContentValues v = new ContentValues(); v.put("pic_path", deviceLocalCacheData.getPicPath()); v.put("modify_time", System.currentTimeMillis()); SQLiteDatabase db = getWritableDatabase(); int ret = db.update(TABLE_NAME, v, "cache_id=?", new String[]{String.valueOf(deviceLocalCacheData.getCacheId())}); if (ret > 0) { return 1; } return 0; } public DeviceLocalCacheData findLocalCache(DeviceLocalCacheData deviceLocalCacheData) { StringBuilder selectionBuilder = new StringBuilder(); List selectionArgs = new ArrayList<>(); boolean first = true; if (deviceLocalCacheData.getDeviceId() != null) { selectionBuilder.append(" device_id =? "); selectionArgs.add(deviceLocalCacheData.getDeviceId()); first = false; } if (deviceLocalCacheData.getChannelId() != null) { if (!first) { selectionBuilder.append(" and "); } selectionBuilder.append(" channel_id =? "); selectionArgs.add(deviceLocalCacheData.getChannelId()); } SQLiteDatabase db = getReadableDatabase(); try (Cursor c = db.query(TABLE_NAME, TABLE_COLUMNS, selectionBuilder.toString(), selectionArgs.toArray(new String[0]), null, null, null, "1")) { if (c.moveToFirst()) { return (buildLocalCacheFromCursor(c)); } } return null; } private DeviceLocalCacheData buildLocalCacheFromCursor(Cursor c) { DeviceLocalCacheData deviceLocalCacheData = new DeviceLocalCacheData(); deviceLocalCacheData.setCacheId(c.getInt(0)); deviceLocalCacheData.setDeviceId(c.getString(1)); deviceLocalCacheData.setDeviceName(c.getString(2)); deviceLocalCacheData.setChannelId(c.getString(3)); deviceLocalCacheData.setChannelName(c.getString(4)); deviceLocalCacheData.setPicPath(c.getString(5)); deviceLocalCacheData.setCreationTime(c.getLong(6)); deviceLocalCacheData.setModifyTime(c.getLong(7)); return deviceLocalCacheData; } }