1 /*
2  * Copyright (C) 2023 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #include "external_source.h"
17 
18 namespace OHOS {
19 namespace Media {
20 // create external files simply
21 const string ExternalOpenCall::CREATE_EXTERNAL_FILES = string("CREATE TABLE IF NOT EXISTS files ") +
22     "(_id INTEGER PRIMARY KEY AUTOINCREMENT, _data TEXT COLLATE NOCASE, _size INTEGER, date_added INTEGER," +
23     "date_modified INTEGER, title TEXT, _display_name TEXT, orientation INTEGER, duration INTEGER," +
24     "bucket_id TEXT, media_type INTEGER, storage_id INTEGER, width INTEGER, height INTEGER, " +
25     "is_pending INTEGER, is_favorite INTEGER, datetaken INTEGER, special_file_type INTEGER DEFAULT 0);";
26 
OnCreate(NativeRdb::RdbStore & store)27 int ExternalOpenCall::OnCreate(NativeRdb::RdbStore &store)
28 {
29     return store.ExecuteSql(CREATE_EXTERNAL_FILES);
30 }
31 
OnUpgrade(NativeRdb::RdbStore & store,int oldVersion,int newVersion)32 int ExternalOpenCall::OnUpgrade(NativeRdb::RdbStore &store, int oldVersion, int newVersion)
33 {
34     return 0;
35 }
36 
Init(const string & dbPath)37 void ExternalSource::Init(const string &dbPath)
38 {
39     NativeRdb::RdbStoreConfig config(dbPath);
40     ExternalOpenCall helper;
41     int errCode = 0;
42     shared_ptr<NativeRdb::RdbStore> store = NativeRdb::RdbHelper::GetRdbStore(config, 1, helper, errCode);
43     externalStorePtr_ = store;
44     InitStepOne();
45     InitStepTwo();
46     InitStepThree();
47     InitStepFour();
48 }
49 
InitStepOne()50 void ExternalSource::InitStepOne()
51 {
52     externalStorePtr_->ExecuteSql(string("INSERT INTO files VALUES(1, ") +
53         "'/storage/emulated/0//BaiduMap/cache/fake_baidu.jpg', 2160867, 1706950419, " +
54         "1546937461, 'fake_baidu', 'fake_baidu.jpg', 0, NULL, 2080527857, 1, 65537, 3968, 2976, 0, 0, 0, 0)");
55     externalStorePtr_->ExecuteSql(string("INSERT INTO files VALUES(2, ") +
56         "'/storage/emulated/0/Pictures/album1/album1.jpg', 3091817, 1706950426, 1546937461, 'album1', 'album1.jpg', " +
57         "0, NULL, -1266858078, 1, 65537, 3968, 2976, 0, 0, 0, 0)");
58     externalStorePtr_->ExecuteSql(string("INSERT INTO files VALUES(3,") +
59         "'/storage/emulated/0/Pictures/album2/album2.jpg', 3621508, 1706950426, 1546937461, 'album2', 'album2.jpg', " +
60         "0, NULL, -1266858077, 1, 65537, 3968, 2976, 0, 0, 0, 0)");
61     externalStorePtr_->ExecuteSql(string("INSERT INTO files VALUES(4,") +
62         "'/storage/emulated/0/Pictures/favorite.jpg', 7440437, 1706950426, 1546937461, 'favorite', 'favorite.jpg', " +
63         "0, NULL, -1617409521, 1, 65537, 5120, 3840, 0, 1, 0, 0)");
64     externalStorePtr_->ExecuteSql(string("INSERT INTO files VALUES(5,") +
65         "'/storage/emulated/0/Pictures/no_exif.png', 234265, 1706950426, 1541215543, 'no_exif', 'no_exif.png', " +
66         "0, NULL, -1617409521, 1, 65537, 1024, 768, 0, 0, 0, 0, 0)");
67     externalStorePtr_->ExecuteSql(string("INSERT INTO files VALUES(6,") +
68         "'/storage/emulated/0/Pictures/orientation.jpg', 2781577, 1706950426, 1706950486, 'orientation', " +
69         "'orientation.jpg', 270, NULL, -1617409521, 1, 65537, 3264, 2448, 0, 0, 0, 0)");
70     externalStorePtr_->ExecuteSql(string("INSERT INTO files VALUES(7,") +
71         "'/storage/emulated/0/Pictures/user_common.jpg', 4330676, 1706950426, 1706950476, 'user_common', " +
72         "'user_common.jpg', 0, NULL, -1617409521, 1, 65537, 3968, 2976, 0, 0, 0, 0)");
73     externalStorePtr_->ExecuteSql(string("INSERT INTO files VALUES(8,") +
74         "'/storage/emulated/0/Pictures/clone.jpg', 5431183, 1706950426, 1546937461, 'clone', 'clone.jpg', " +
75         "0, NULL, -1617409521, 1, 65537, 5120, 3840, 0, 0, 0, 0)");
76     externalStorePtr_->ExecuteSql(string("INSERT INTO files VALUES(9,") +
77         "'/storage/emulated/0/Movies/common.mp4', 192844, 1706950426, 1698033985, 'common', 'common.mp4', " +
78         "0, 6042, -1730634595, 3, 65537, 320, 240, 0, 0, 0, 0)");
79     externalStorePtr_->ExecuteSql(string("INSERT INTO files VALUES(10,") +
80         "'/storage/emulated/0/Movies/4K.mp4', 26162975, 1706950426, 1703905398, '4K', '4K.mp4', " +
81         "90, 5099, -1730634595, 3, 65537, 3840, 2160, 0, 0, 0, 0)");
82 }
83 
InitStepTwo()84 void ExternalSource::InitStepTwo()
85 {
86     externalStorePtr_->ExecuteSql(string("INSERT INTO files VALUES(11,") +
87         "'/storage/emulated/0/Movies/1080p.mp4', 6626209, 1706950426, 1703905397, '1080p', '1080p.mp4', " +
88         "90, 4551, -1730634595, 3, 65537, 1920, 1080, 0, 0, 0, 0)");
89     externalStorePtr_->ExecuteSql(string("INSERT INTO files VALUES(12,") +
90         "'/storage/emulated/0/DCIM/Camera/camera_sync.jpg', 2808831, 1706950426, 1546937461, 'camera_sync', " +
91         "'camera_sync.jpg', 0, NULL, -1739773001, 1, 65537, 3968, 2976, 0, 0, 0, 0)");
92     externalStorePtr_->ExecuteSql(string("INSERT INTO files VALUES(13,") +
93         "'/storage/emulated/0/DCIM/Sgame/fake_game.jpg', 3871481, 1706950426, 1546937461, 'fake_game', " +
94         "'fake_game.jpg', 0, NULL, -1288103917, 1, 65537, 3968, 2976, 0, 0, 0, 0)");
95     externalStorePtr_->ExecuteSql(string("INSERT INTO files VALUES(14,") +
96         "'/storage/emulated/0/CTRIP/avatar/fake_garbage_ctrip.jpg', 3184187, 1706950426, 1546937461, " +
97         "'fake_garbage_ctrip', 'fake_garbage_ctrip.jpg', 0, NULL, 876554266, 1, 65537, 3968, 2976, 0, 0, 0, 0)");
98     externalStorePtr_->ExecuteSql(string("INSERT INTO files VALUES(15,") +
99         "'/storage/emulated/0/tencent/MicroMsg/WeiXin/fake_wechat.jpg', 2419880, 1706950426, 1432973383, " +
100         "'fake_wechat', 'fake_wechat.jpg', 0, NULL, -924335728, 1, 65537, 3968, 2976, 0, 0, 0, 0)");
101     externalStorePtr_->ExecuteSql(string("INSERT INTO files VALUES(21,") +
102         "'/storage/emulated/0/DCIM/Camera/camera_not_sync.jpg', 1780813, 1706950561, 1546937461, 'camera_not_sync', " +
103         "'camera_not_sync.jpg', 0, NULL, -1739773001, 1, 65537, 3264, 2448, 0, 0, 0, 0)");
104     externalStorePtr_->ExecuteSql(string("INSERT INTO files VALUES(22,") +
105         "'/storage/emulated/0/CTRIP/avatar/not_sync_garbage_ctrip.jpg', 2767543, 1706950561, 1546937461, " +
106         "'not_sync_garbage_ctrip', 'not_sync_garbage_ctrip.jpg', 0, NULL, 876554266, 1, 65537, 3264, 2448, " +
107         "0, 0, 0, 0)");
108     externalStorePtr_->ExecuteSql(string("INSERT INTO files VALUES(23,") +
109         "'/storage/emulated/0/tencent/MicroMsg/WeiXin/not_sync_weixin.jpg', 3503265, 1706950561, 1546937461, " +
110         "'not_sync_weixin', 'not_sync_weixin.jpg', 0, NULL, -924335728, 1, 65537, 3968, 2976, 0, 0, 0, 0)");
111 }
112 
InitStepThree()113 void ExternalSource::InitStepThree()
114 {
115     externalStorePtr_->ExecuteSql(string("INSERT INTO files VALUES(16,") +
116         "'/storage/emulated/0/A/media/Rocket/test/a_media_normal_video.mp4', 10865209, 1708600079, 1708600079," +
117         "'a_media_normal_video', 'a_media_normal_video.mp4', 0, 52221, -1122816831, 3, 65537, 352, 640, 0, 0, 0, 0)");
118     externalStorePtr_->ExecuteSql(string("INSERT INTO files VALUES(17,") +
119         "'/storage/emulated/0/A/media/Rocket/test/a_media_favorite.mp4', 10865209, 1708600079, 1708600079," +
120         "'a_media_favorite', 'a_media_favorite.mp4', 0, 52221, -1122816831, 3, 65537, 352, 640, 0, 1, 0, 0)");
121     externalStorePtr_->ExecuteSql(string("INSERT INTO files VALUES(18,") +
122         "'/storage/emulated/0/A/media/Baidu/a_media_favorite_baidu.mp4', 10865209, 1708600079, 1708600079," +
123         "'a_media_favorite_baidu', 'a_media_favorite_baidu.mp4', 0, 52221, -1122816831, 3, 65537, 352, 640," +
124         "0, 1, 0, 0)");
125     externalStorePtr_->ExecuteSql(string("INSERT INTO files VALUES(19,") +
126         "'/storage/emulated/0/A/media/Baidu/a_media_normal_image.jpg', 418436, 1708602162, 1708602162," +
127         "'a_media_normal_image', 'a_media_normal_image.jpg', 0, 0, -1960413976, 1, 65537, 2000, 3556, 0, 0, 0, 0)");
128     externalStorePtr_->ExecuteSql(string("INSERT INTO files VALUES(20,") +
129         "'/storage/emulated/0/A/media/Baidu/a_media_zero_size.jpg', 0, 1708602162, 1708602162," +
130         "'a_media_zero_size', 'a_media_zero_size.jpg', 0, 0, -1960413976, 1, 65537, 0, 0, 0, 0, 0, 0)");
131 }
132 
InitStepFour()133 void ExternalSource::InitStepFour()
134 {
135     externalStorePtr_->ExecuteSql(string("INSERT INTO files VALUES(24,") +
136         "'/storage/emulated/0/Music/audio1.mp3', 10865209, 1708600079, 1708600079," +
137         "'a_media_normal_video', 'audio1.mp3', 0, 52221, -1122816831, 2, 65537, 352, 640, 0, 0, 0, 0)");
138 }
139 } // namespace Media
140 } // namespace OHOS