wxr
2022-10-28 bab36f8002d92e7125dfc40023f566266e3fdb38
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
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<String> 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;
    }
}