1 /*
2 * Copyright (C) 2021 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 "metadata.h"
17 #include "medialibrary_db_const.h"
18 #include "fetch_result.h"
19
20 namespace OHOS {
21 namespace Media {
22 using namespace std;
23
Metadata()24 Metadata::Metadata()
25 : id_(FILE_ID_DEFAULT),
26 uri_(URI_DEFAULT),
27 filePath_(FILE_PATH_DEFAULT),
28 relativePath_(FILE_RELATIVE_PATH_DEFAULT),
29 mimeType_(DEFAULT_FILE_MIME_TYPE),
30 mediaType_(FILE_MEDIA_TYPE_DEFAULT),
31 name_(FILE_NAME_DEFAULT),
32 size_(FILE_SIZE_DEFAULT),
33 dateModified_(FILE_DATE_MODIFIED_DEFAULT),
34 dateAdded_(FILE_DATE_ADDED_DEFAULT),
35 fileExt_(FILE_EXTENSION_DEFAULT),
36 parentId_(FILE_ID_DEFAULT),
37 title_(FILE_TITLE_DEFAULT),
38 artist_(FILE_ARTIST_DEFAULT),
39 album_(FILE_ALBUM_NAME_DEFAULT),
40 height_(FILE_HEIGHT_DEFAULT),
41 width_(FILE_WIDTH_DEFAULT),
42 duration_(FILE_DURATION_DEFAULT),
43 orientation_(FILE_ORIENTATION_DEFAULT),
44 dateTaken_(FILE_DATE_TAKEN_DEFAULT),
45 longitude_(FILE_LONGITUDE_DEFAULT),
46 latitude_(FILE_LATITUDE_DEFAULT),
47 userComment_(FILE_USER_COMMENT_DEFAULT),
48 allExif_(FILE_All_EXIF_DEFAULT),
49 albumId_(FILE_ALBUM_ID_DEFAULT),
50 albumName_(FILE_ALBUM_NAME_DEFAULT),
51 recyclePath_(FILE_RECYCLE_PATH_DEFAULT),
52 timePending_(FILE_TIME_PENDING_DEFAULT)
53 {
54 Init();
55 }
56
Init()57 void Metadata::Init()
58 {
59 memberFuncMap_[MEDIA_DATA_DB_ID] = make_pair(ResultSetDataType::TYPE_INT32, &Metadata::SetFileId);
60 memberFuncMap_[MEDIA_DATA_DB_URI] = make_pair(ResultSetDataType::TYPE_STRING, &Metadata::SetUri);
61 memberFuncMap_[MEDIA_DATA_DB_FILE_PATH] = make_pair(ResultSetDataType::TYPE_STRING, &Metadata::SetFilePath);
62 memberFuncMap_[MEDIA_DATA_DB_RELATIVE_PATH] = make_pair(ResultSetDataType::TYPE_STRING, &Metadata::SetRelativePath);
63 memberFuncMap_[MEDIA_DATA_DB_MEDIA_TYPE] = make_pair(ResultSetDataType::TYPE_INT32, &Metadata::SetFileMediaType);
64 memberFuncMap_[MEDIA_DATA_DB_MIME_TYPE] = make_pair(ResultSetDataType::TYPE_STRING, &Metadata::SetFileMimeType);
65 memberFuncMap_[MEDIA_DATA_DB_NAME] = make_pair(ResultSetDataType::TYPE_STRING, &Metadata::SetFileName);
66 memberFuncMap_[MEDIA_DATA_DB_SIZE] = make_pair(ResultSetDataType::TYPE_INT64, &Metadata::SetFileSize);
67 memberFuncMap_[MEDIA_DATA_DB_DATE_ADDED] = make_pair(ResultSetDataType::TYPE_INT64, &Metadata::SetFileDateAdded);
68 memberFuncMap_[MEDIA_DATA_DB_TITLE] = make_pair(ResultSetDataType::TYPE_STRING, &Metadata::SetFileTitle);
69 memberFuncMap_[MEDIA_DATA_DB_ARTIST] = make_pair(ResultSetDataType::TYPE_STRING, &Metadata::SetFileArtist);
70 memberFuncMap_[MEDIA_DATA_DB_AUDIO_ALBUM] = make_pair(ResultSetDataType::TYPE_STRING, &Metadata::SetAlbum);
71 memberFuncMap_[MEDIA_DATA_DB_HEIGHT] = make_pair(ResultSetDataType::TYPE_INT32, &Metadata::SetFileHeight);
72 memberFuncMap_[MEDIA_DATA_DB_WIDTH] = make_pair(ResultSetDataType::TYPE_INT32, &Metadata::SetFileWidth);
73 memberFuncMap_[MEDIA_DATA_DB_ORIENTATION] = make_pair(ResultSetDataType::TYPE_INT32, &Metadata::SetOrientation);
74 memberFuncMap_[MEDIA_DATA_DB_DURATION] = make_pair(ResultSetDataType::TYPE_INT32, &Metadata::SetFileDuration);
75 memberFuncMap_[MEDIA_DATA_DB_LONGITUDE] = make_pair(ResultSetDataType::TYPE_DOUBLE, &Metadata::SetLongitude);
76 memberFuncMap_[MEDIA_DATA_DB_LATITUDE] = make_pair(ResultSetDataType::TYPE_DOUBLE, &Metadata::SetLatitude);
77 memberFuncMap_[MEDIA_DATA_DB_BUCKET_NAME] = make_pair(ResultSetDataType::TYPE_STRING, &Metadata::SetAlbumName);
78 memberFuncMap_[MEDIA_DATA_DB_PARENT_ID] = make_pair(ResultSetDataType::TYPE_INT32, &Metadata::SetParentId);
79 memberFuncMap_[MEDIA_DATA_DB_RECYCLE_PATH] = make_pair(ResultSetDataType::TYPE_STRING, &Metadata::SetRecyclePath);
80 memberFuncMap_[MEDIA_DATA_DB_DATE_TAKEN] = make_pair(ResultSetDataType::TYPE_INT64, &Metadata::SetDateTaken);
81 memberFuncMap_[MEDIA_DATA_DB_DATE_MODIFIED] = make_pair(ResultSetDataType::TYPE_INT64,
82 &Metadata::SetFileDateModified);
83 memberFuncMap_[MEDIA_DATA_DB_TIME_PENDING] = make_pair(ResultSetDataType::TYPE_INT64, &Metadata::SetTimePending);
84 memberFuncMap_[PhotoColumn::PHOTO_USER_COMMENT] = make_pair(ResultSetDataType::TYPE_STRING,
85 &Metadata::SetUserComment);
86 memberFuncMap_[PhotoColumn::PHOTO_ALL_EXIF] = make_pair(ResultSetDataType::TYPE_STRING, &Metadata::SetAllExif);
87 }
88
SetFileId(const VariantData & id)89 void Metadata::SetFileId(const VariantData &id)
90 {
91 id_ = std::get<int32_t>(id);
92 }
93
GetFileId() const94 int32_t Metadata::GetFileId() const
95 {
96 return id_;
97 }
98
SetUri(const VariantData & uri)99 void Metadata::SetUri(const VariantData &uri)
100 {
101 uri_ = std::get<string>(uri);
102 }
103
GetUri() const104 const std::string &Metadata::GetUri() const
105 {
106 return uri_;
107 }
108
SetFilePath(const VariantData & filePath)109 void Metadata::SetFilePath(const VariantData &filePath)
110 {
111 filePath_ = std::get<string>(filePath);
112 }
113
GetFilePath() const114 const std::string &Metadata::GetFilePath() const
115 {
116 return filePath_;
117 }
118
SetRelativePath(const VariantData & relativePath)119 void Metadata::SetRelativePath(const VariantData &relativePath)
120 {
121 relativePath_ = std::get<string>(relativePath);
122 }
123
GetRelativePath() const124 const std::string &Metadata::GetRelativePath() const
125 {
126 return relativePath_;
127 }
128
SetFileMimeType(const VariantData & mimeType)129 void Metadata::SetFileMimeType(const VariantData &mimeType)
130 {
131 mimeType_ = std::get<string>(mimeType);
132 }
133
GetFileMimeType() const134 const std::string &Metadata::GetFileMimeType() const
135 {
136 return mimeType_;
137 }
138
SetFileMediaType(const VariantData & mediaType)139 void Metadata::SetFileMediaType(const VariantData &mediaType)
140 {
141 mediaType_ = static_cast<MediaType>(std::get<int32_t>(mediaType));
142 }
143
GetFileMediaType() const144 MediaType Metadata::GetFileMediaType() const
145 {
146 return mediaType_;
147 }
148
SetFileName(const VariantData & name)149 void Metadata::SetFileName(const VariantData &name)
150 {
151 name_ = std::get<string>(name);
152 }
153
GetFileName() const154 const std::string &Metadata::GetFileName() const
155 {
156 return name_;
157 }
158
SetFileSize(const VariantData & size)159 void Metadata::SetFileSize(const VariantData &size)
160 {
161 size_ = std::get<int64_t>(size);
162 }
163
GetFileSize() const164 int64_t Metadata::GetFileSize() const
165 {
166 return size_;
167 }
168
SetFileDateAdded(const VariantData & dateAdded)169 void Metadata::SetFileDateAdded(const VariantData &dateAdded)
170 {
171 dateAdded_ = std::get<int64_t>(dateAdded);
172 }
173
GetFileDateAdded() const174 int64_t Metadata::GetFileDateAdded() const
175 {
176 return dateAdded_;
177 }
178
SetFileDateModified(const VariantData & dateModified)179 void Metadata::SetFileDateModified(const VariantData &dateModified)
180 {
181 dateModified_ = std::get<int64_t>(dateModified);
182 }
183
GetFileDateModified() const184 int64_t Metadata::GetFileDateModified() const
185 {
186 return dateModified_;
187 }
188
SetFileExtension(const VariantData & fileExt)189 void Metadata::SetFileExtension(const VariantData &fileExt)
190 {
191 fileExt_ = std::get<string>(fileExt);
192 }
193
GetFileExtension() const194 const std::string &Metadata::GetFileExtension() const
195 {
196 return fileExt_;
197 }
198
SetFileTitle(const VariantData & title)199 void Metadata::SetFileTitle(const VariantData &title)
200 {
201 title_ = std::get<string>(title);
202 }
203
GetFileTitle() const204 const std::string &Metadata::GetFileTitle() const
205 {
206 return title_;
207 }
208
SetFileArtist(const VariantData & artist)209 void Metadata::SetFileArtist(const VariantData &artist)
210 {
211 artist_ = std::get<string>(artist);
212 }
213
GetFileArtist() const214 const std::string &Metadata::GetFileArtist() const
215 {
216 return artist_;
217 }
218
SetAlbum(const VariantData & album)219 void Metadata::SetAlbum(const VariantData &album)
220 {
221 album_ = std::get<string>(album);
222 }
223
GetAlbum() const224 const std::string &Metadata::GetAlbum() const
225 {
226 return album_;
227 }
228
SetFileHeight(const VariantData & height)229 void Metadata::SetFileHeight(const VariantData &height)
230 {
231 height_ = std::get<int32_t>(height);
232 }
233
GetFileHeight() const234 int32_t Metadata::GetFileHeight() const
235 {
236 return height_;
237 }
238
SetFileWidth(const VariantData & width)239 void Metadata::SetFileWidth(const VariantData &width)
240 {
241 width_ = std::get<int32_t>(width);
242 }
243
GetFileWidth() const244 int32_t Metadata::GetFileWidth() const
245 {
246 return width_;
247 }
248
SetFileDuration(const VariantData & duration)249 void Metadata::SetFileDuration(const VariantData &duration)
250 {
251 duration_ = std::get<int32_t>(duration);
252 }
253
GetFileDuration() const254 int32_t Metadata::GetFileDuration() const
255 {
256 return duration_;
257 }
258
SetOrientation(const VariantData & orientation)259 void Metadata::SetOrientation(const VariantData &orientation)
260 {
261 orientation_ = std::get<int32_t>(orientation);
262 }
263
GetOrientation() const264 int32_t Metadata::GetOrientation() const
265 {
266 return orientation_;
267 }
268
SetAlbumId(const VariantData & albumId)269 void Metadata::SetAlbumId(const VariantData &albumId)
270 {
271 albumId_ = std::get<int32_t>(albumId);
272 }
273
GetAlbumId() const274 int32_t Metadata::GetAlbumId() const
275 {
276 return albumId_;
277 }
278
SetAlbumName(const VariantData & albumName)279 void Metadata::SetAlbumName(const VariantData &albumName)
280 {
281 albumName_ = std::get<string>(albumName);
282 }
283
GetAlbumName() const284 const std::string &Metadata::GetAlbumName() const
285 {
286 return albumName_;
287 }
288
SetParentId(const VariantData & parentId)289 void Metadata::SetParentId(const VariantData &parentId)
290 {
291 parentId_ = std::get<int32_t>(parentId);
292 }
293
GetParentId() const294 int32_t Metadata::GetParentId() const
295 {
296 return parentId_;
297 }
298
SetRecyclePath(const VariantData & recyclePath)299 void Metadata::SetRecyclePath(const VariantData &recyclePath)
300 {
301 recyclePath_ = std::get<string>(recyclePath);
302 }
303
GetRecyclePath() const304 const std::string &Metadata::GetRecyclePath() const
305 {
306 return recyclePath_;
307 }
308
SetDateTaken(const VariantData & dateTaken)309 void Metadata::SetDateTaken(const VariantData &dateTaken)
310 {
311 dateTaken_ = std::get<int64_t>(dateTaken);
312 }
313
GetDateTaken() const314 int64_t Metadata::GetDateTaken() const
315 {
316 return dateTaken_;
317 }
318
SetLongitude(const VariantData & longitude)319 void Metadata::SetLongitude(const VariantData &longitude)
320 {
321 longitude_ = std::get<double>(longitude);
322 }
323
GetLongitude() const324 double Metadata::GetLongitude() const
325 {
326 return longitude_;
327 }
328
SetLatitude(const VariantData & latitude)329 void Metadata::SetLatitude(const VariantData &latitude)
330 {
331 latitude_ = std::get<double>(latitude);
332 }
333
GetLatitude() const334 double Metadata::GetLatitude() const
335 {
336 return latitude_;
337 }
338
SetTimePending(const VariantData & timePending)339 void Metadata::SetTimePending(const VariantData &timePending)
340 {
341 timePending_ = std::get<int64_t>(timePending);
342 }
343
GetTimePending() const344 int64_t Metadata::GetTimePending() const
345 {
346 return timePending_;
347 }
348
SetUserComment(const VariantData & userComment)349 void Metadata::SetUserComment(const VariantData &userComment)
350 {
351 userComment_ = get<string>(userComment);
352 }
353
GetUserComment() const354 const string &Metadata::GetUserComment() const
355 {
356 return userComment_;
357 }
358
SetAllExif(const VariantData & allExif)359 void Metadata::SetAllExif(const VariantData &allExif)
360 {
361 allExif_ = get<string>(allExif);
362 }
363
GetAllExif() const364 const string &Metadata::GetAllExif() const
365 {
366 return allExif_;
367 }
368
369 #ifdef MEDIALIBRARY_COMPATIBILITY
SetPhotoSubType(const VariantData & photoSubType)370 void Metadata::SetPhotoSubType(const VariantData &photoSubType)
371 {
372 photoSubType_ = std::get<int32_t>(photoSubType);
373 }
374
GetPhotoSubType() const375 int32_t Metadata::GetPhotoSubType() const
376 {
377 return photoSubType_;
378 }
379 #endif
380
SetTableName(const string & tableName)381 void Metadata::SetTableName(const string &tableName)
382 {
383 tableName_ = tableName;
384 }
385
GetTableName()386 string Metadata::GetTableName()
387 {
388 return tableName_;
389 }
390
SetForAdd(bool forAdd)391 void Metadata::SetForAdd(bool forAdd)
392 {
393 forAdd_ = forAdd;
394 }
395
GetForAdd() const396 bool Metadata::GetForAdd() const
397 {
398 return forAdd_;
399 }
400 } // namespace Media
401 } // namespace OHOS
402