• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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