• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 #ifndef OHOS_CLOUD_SYNC_SERVICE_FILE_DATA_CONVERTOR_H
17 #define OHOS_CLOUD_SYNC_SERVICE_FILE_DATA_CONVERTOR_H
18 
19 #include <ctime>
20 #include <iostream>
21 #include <sstream>
22 #include <unordered_map>
23 
24 #include "data_convertor.h"
25 #include "dfs_error.h"
26 #include "gallery_file_const.h"
27 #include "utils_log.h"
28 
29 namespace OHOS {
30 namespace FileManagement {
31 namespace CloudSync {
32 
33 /* thumb */
34 const std::string THUMB_SUFFIX = "THM";
35 const std::string LCD_SUFFIX = "LCD";
36 
37 /* s -> ms */
38 const int32_t SECOND_TO_MILLISECOND = 1000;
39 
40 /* ms -> s */
41 const int32_t MILLISECOND_TO_SECOND = 1000;
42 
43 class FileDataConvertor : public DataConvertor {
44 public:
45     enum OperationType {
46         /* upload */
47         FILE_CREATE,
48         FILE_DELETE,
49         FILE_METADATA_MODIFY,
50         FILE_DATA_MODIFY,
51         /* download */
52         FILE_DOWNLOAD,
53         /*clean*/
54         FILE_CLEAN
55     };
56 
57     enum PhotoSubType {
58         DEFAULT,
59         SCREENSHOT,
60         CAMERA
61     };
62 
63     FileDataConvertor(int32_t userId, std::string &bundleName, OperationType type);
64     ~FileDataConvertor() = default;
65 
66     int32_t Convert(DriveKit::DKRecord &record, NativeRdb::ResultSet &resultSet);
67     int32_t Convert(DriveKit::DKRecord &record, NativeRdb::ValuesBucket &valuesBucket);
68 
69     std::string GetThumbPath(const std::string &path, const std::string &key);
70     std::string GetHmdfsLocalPath(const std::string &path);
71     std::string GetThumbPathInCloud(const std::string &path, const std::string &key);
72     std::string GetLocalPathToCloud(const std::string &path);
73     /* path conversion */
74     std::string GetLowerPath(const std::string &path);
75     std::string GetLowerTmpPath(const std::string &path);
76     std::string GetSandboxPath(const std::string &path);
77 
78 private:
79     /* record id */
80     int32_t FillRecordId(DriveKit::DKRecord &record, NativeRdb::ResultSet &resultSet);
81 
82     /* basic */
83     int32_t HandleAlbumId(DriveKit::DKRecordData &data, NativeRdb::ResultSet &resultSet);
84     int32_t HandleFileName(DriveKit::DKRecordData &data, NativeRdb::ResultSet &resultSet);
85     int32_t HandleHash(DriveKit::DKRecordData &data, NativeRdb::ResultSet &resultSet);
86     int32_t HandleSource(DriveKit::DKRecordData &data, NativeRdb::ResultSet &resultSet);
87     int32_t HandleFileType(DriveKit::DKRecordData &data, NativeRdb::ResultSet &resultSet);
88     int32_t HandleCreatedTime(DriveKit::DKRecordData &data, NativeRdb::ResultSet &resultSet);
89     int32_t HandleFavorite(DriveKit::DKRecordData &data, NativeRdb::ResultSet &resultSet);
90     int32_t HandleDescription(DriveKit::DKRecordData &data, NativeRdb::ResultSet &resultSet);
91     int32_t HandleRecycleTime(DriveKit::DKRecordData &data, NativeRdb::ResultSet &resultSet);
92     int32_t HandleRecycled(DriveKit::DKRecordData &data, NativeRdb::ResultSet &resultSet);
93     int32_t HandleSize(DriveKit::DKRecordData &data, NativeRdb::ResultSet &resultSet);
94     int32_t HandleMimeType(DriveKit::DKRecordData &data, NativeRdb::ResultSet &resultSet);
95     int32_t HandleEditedTime(DriveKit::DKRecordData &data, NativeRdb::ResultSet &resultSet);
96 
97     int32_t HandleUniqueFileds(DriveKit::DKRecordData &data, NativeRdb::ResultSet &resultSet);
98     int32_t HandleCompatibleFileds(DriveKit::DKRecordData &data, NativeRdb::ResultSet &resultSet);
99 
100     /* properties */
101     int32_t HandleProperties(DriveKit::DKRecordData &data, NativeRdb::ResultSet &resultSet);
102 
103     int32_t HandleDuration(DriveKit::DKRecordFieldMap &map, NativeRdb::ResultSet &resultSet);
104     int32_t HandleHeight(DriveKit::DKRecordFieldMap &map, NativeRdb::ResultSet &resultSet);
105     int32_t HandleRotate(DriveKit::DKRecordFieldMap &map, NativeRdb::ResultSet &resultSet);
106     int32_t HandleWidth(DriveKit::DKRecordFieldMap &map, NativeRdb::ResultSet &resultSet);
107     int32_t HandlePosition(DriveKit::DKRecordFieldMap &map, NativeRdb::ResultSet &resultSet);
108     int32_t HandleDataModified(DriveKit::DKRecordFieldMap &map, NativeRdb::ResultSet &resultSet);
109     int32_t HandleDetailTime(DriveKit::DKRecordFieldMap &map, NativeRdb::ResultSet &resultSet);
110     int32_t HandleFileCreateTime(DriveKit::DKRecordFieldMap &map, NativeRdb::ResultSet &resultSet);
111     int32_t HandleFirstUpdateTime(DriveKit::DKRecordFieldMap &map, NativeRdb::ResultSet &resultSet);
112     int32_t HandleRelativeBucketId(DriveKit::DKRecordFieldMap &map, NativeRdb::ResultSet &resultSet);
113     int32_t HandleSourceFileName(DriveKit::DKRecordFieldMap &map, NativeRdb::ResultSet &resultSet);
114     int32_t HandleSourcePath(DriveKit::DKRecordFieldMap &map, NativeRdb::ResultSet &resultSet);
115     int32_t HandleTimeZone(DriveKit::DKRecordFieldMap &map, NativeRdb::ResultSet &resultSet);
116     int32_t HandleThumbSize(DriveKit::DKRecordFieldMap &map, NativeRdb::ResultSet &resultSet);
117     int32_t HandleLcdSize(DriveKit::DKRecordFieldMap &map, NativeRdb::ResultSet &resultSet);
118     /* properties - general */
119     int32_t HandleGeneral(DriveKit::DKRecordFieldMap &map, NativeRdb::ResultSet &resultSet);
120 
121     int32_t HandleAttributes(DriveKit::DKRecordFieldMap &map, NativeRdb::ResultSet &resultSet);
122     /* attachments */
123     int32_t HandleAttachments(DriveKit::DKRecordData &data, NativeRdb::ResultSet &resultSet);
124 
125     /* local info */
126     int32_t HandleLocalInfo(DriveKit::DKRecordData &data, NativeRdb::ResultSet &resultSet);
127 
128     int32_t HandleContent(DriveKit::DKRecordData &data, std::string &path);
129     int32_t HandleThumbnail(DriveKit::DKRecordData &data, std::string &path);
130     int32_t HandleLcd(DriveKit::DKRecordData &data, std::string &path);
131 
132     int32_t TryCompensateValue(const DriveKit::DKRecord &record, DriveKit::DKRecordData &data,
133         NativeRdb::ValuesBucket &valueBucket);
134     int32_t ExtractAttributeValue(DriveKit::DKRecordData &data, NativeRdb::ValuesBucket &valueBucket);
135 
136     /* compensate missing filed according gallery value*/
137     int32_t CompensateData(DriveKit::DKRecordData &data, NativeRdb::ValuesBucket &valueBucket);
138     int32_t CompensateTitle(DriveKit::DKRecordData &data, NativeRdb::ValuesBucket &valueBucket);
139     int32_t CompensateMediaType(DriveKit::DKRecordData &data, NativeRdb::ValuesBucket &valueBucket);
140     int32_t CompensateDataAdded(const DriveKit::DKRecord &record, NativeRdb::ValuesBucket &valueBucket);
141     int32_t CompensateMetaDateModified(const DriveKit::DKRecord &record, NativeRdb::ValuesBucket &valueBucket);
142     int32_t CompensateSubtype(DriveKit::DKRecordData &data, NativeRdb::ValuesBucket &valueBucket);
143     int32_t CompensateDuration(DriveKit::DKRecordData &data, NativeRdb::ValuesBucket &valueBucket);
144 
145     /* extract compatible value stored in properties */
146     int32_t ExtractCompatibleValue(const DriveKit::DKRecord &record,
147         DriveKit::DKRecordData &data, NativeRdb::ValuesBucket &valueBucket);
148     int32_t ExtractOrientation(DriveKit::DKRecordFieldMap &map, NativeRdb::ValuesBucket &valueBucket);
149     int32_t ExtractPosition(DriveKit::DKRecordFieldMap &map, NativeRdb::ValuesBucket &valueBucket);
150     int32_t ExtractHeight(DriveKit::DKRecordFieldMap &map, NativeRdb::ValuesBucket &valueBucket);
151     int32_t ExtractWidth(DriveKit::DKRecordFieldMap &map, NativeRdb::ValuesBucket &valueBucket);
152 
153     int32_t ExtractSize(DriveKit::DKRecordData &data, NativeRdb::ValuesBucket &valueBucket);
154     int32_t ExtractDisplayName(DriveKit::DKRecordData &data, NativeRdb::ValuesBucket &valueBucket);
155     int32_t ExtractMimeType(DriveKit::DKRecordData &data, NativeRdb::ValuesBucket &valueBucket);
156     int32_t ExtractDeviceName(DriveKit::DKRecordData &data, NativeRdb::ValuesBucket &valueBucket);
157     int32_t ExtractDateModified(const DriveKit::DKRecord &record, NativeRdb::ValuesBucket &valueBucket);
158     int32_t ExtractDateTaken(const DriveKit::DKRecord &record, NativeRdb::ValuesBucket &valueBucket);
159     int32_t ExtractFavorite(DriveKit::DKRecordData &data, NativeRdb::ValuesBucket &valueBucket);
160     int32_t ExtractDateTrashed(DriveKit::DKRecordData &data, NativeRdb::ValuesBucket &valueBucket);
161     int32_t ExtractCloudId(const DriveKit::DKRecord &record, NativeRdb::ValuesBucket &valueBucket);
162 
163     bool IfContainsAttributes(const DriveKit::DKRecord &record);
164 
165     /* identifier */
166     int32_t userId_;
167     std::string bundleName_;
168     static std::string recordType_;
169     OperationType type_;
170 
171     /* path */
172     static std::string prefix_;
173     static std::string suffix_;
174     static std::string sandboxPrefix_;
175     static std::string prefixLCD_;
176     static std::string suffixLCD_;
177     static std::string prefixCloud_;
178     static std::string suffixCloud_;
179 };
180 
HandleFileName(DriveKit::DKRecordData & data,NativeRdb::ResultSet & resultSet)181 inline int32_t FileDataConvertor::HandleFileName(DriveKit::DKRecordData &data,
182     NativeRdb::ResultSet &resultSet)
183 {
184     std::string displayName;
185     int32_t ret = GetString(Media::PhotoColumn::MEDIA_NAME, displayName, resultSet);
186     if (ret != E_OK) {
187         return ret;
188     }
189     data[FILE_FILE_NAME] = DriveKit::DKRecordField(displayName);
190     return E_OK;
191 }
192 
HandleCreatedTime(DriveKit::DKRecordData & data,NativeRdb::ResultSet & resultSet)193 inline int32_t FileDataConvertor::HandleCreatedTime(DriveKit::DKRecordData &data,
194     NativeRdb::ResultSet &resultSet)
195 {
196     int64_t val;
197     int32_t ret = GetLong(Media::PhotoColumn::MEDIA_DATE_ADDED, val, resultSet);
198     if (ret != E_OK) {
199         return ret;
200     }
201     /* no overflow: 64 >> 32 + 3 */
202     data[FILE_CREATED_TIME] = DriveKit::DKRecordField(std::to_string(val * SECOND_TO_MILLISECOND));
203     return E_OK;
204 }
205 
HandleHash(DriveKit::DKRecordData & data,NativeRdb::ResultSet & resultSet)206 inline int32_t FileDataConvertor::HandleHash(DriveKit::DKRecordData &data,
207     NativeRdb::ResultSet &resultSet)
208 {
209     data[FILE_HASH_ID] = DriveKit::DKRecordField("Md5_default_hash");
210     return E_OK;
211 }
212 
HandleSize(DriveKit::DKRecordData & data,NativeRdb::ResultSet & resultSet)213 inline int32_t FileDataConvertor::HandleSize(DriveKit::DKRecordData &data,
214     NativeRdb::ResultSet &resultSet)
215 {
216     int32_t val;
217     int32_t ret = GetInt(Media::PhotoColumn::MEDIA_SIZE, val, resultSet);
218     if (ret != E_OK) {
219         return ret;
220     }
221     data[FILE_SIZE] = DriveKit::DKRecordField(val);
222     return E_OK;
223 }
224 
HandleSource(DriveKit::DKRecordData & data,NativeRdb::ResultSet & resultSet)225 inline int32_t FileDataConvertor::HandleSource(DriveKit::DKRecordData &data,
226     NativeRdb::ResultSet &resultSet)
227 {
228     std::string val;
229     int32_t ret = GetString(Media::PhotoColumn::MEDIA_DEVICE_NAME, val, resultSet);
230     if (ret != E_OK) {
231         return ret;
232     }
233     data[FILE_SOURCE] = DriveKit::DKRecordField(val);
234     return E_OK;
235 }
236 
HandleFileType(DriveKit::DKRecordData & data,NativeRdb::ResultSet & resultSet)237 inline int32_t FileDataConvertor::HandleFileType(DriveKit::DKRecordData &data,
238     NativeRdb::ResultSet &resultSet)
239 {
240     int32_t val;
241     int32_t ret = GetInt(Media::PhotoColumn::MEDIA_TYPE, val, resultSet);
242     if (ret != E_OK) {
243         return ret;
244     }
245     data[FILE_FILETYPE] = DriveKit::DKRecordField(val ==
246         Media::MEDIA_TYPE_VIDEO ? FILE_TYPE_VIDEO : FILE_TYPE_IMAGE);
247     return E_OK;
248 }
249 
HandleRecycled(DriveKit::DKRecordData & data,NativeRdb::ResultSet & resultSet)250 inline int32_t FileDataConvertor::HandleRecycled(DriveKit::DKRecordData &data,
251     NativeRdb::ResultSet &resultSet)
252 {
253     int64_t val;
254     int32_t ret = GetLong(Media::PhotoColumn::MEDIA_DATE_TRASHED, val, resultSet);
255     if (ret != E_OK) {
256         return ret;
257     }
258     data[FILE_RECYCLED] = DriveKit::DKRecordField(!!val);
259     return E_OK;
260 }
261 
HandleRecycleTime(DriveKit::DKRecordData & data,NativeRdb::ResultSet & resultSet)262 inline int32_t FileDataConvertor::HandleRecycleTime(DriveKit::DKRecordData &data,
263     NativeRdb::ResultSet &resultSet)
264 {
265     int64_t val;
266     int32_t ret = GetLong(Media::PhotoColumn::MEDIA_DATE_TRASHED, val, resultSet);
267     if (ret != E_OK) {
268         return ret;
269     }
270     data[FILE_RECYCLE_TIME] = DriveKit::DKRecordField(std::to_string(val * SECOND_TO_MILLISECOND));
271     return E_OK;
272 }
273 
HandleMimeType(DriveKit::DKRecordData & data,NativeRdb::ResultSet & resultSet)274 inline int32_t FileDataConvertor::HandleMimeType(DriveKit::DKRecordData &data,
275     NativeRdb::ResultSet &resultSet)
276 {
277     std::string mimeType;
278     int32_t ret = GetString(Media::PhotoColumn::MEDIA_MIME_TYPE, mimeType, resultSet);
279     if (ret != E_OK) {
280         return ret;
281     }
282     data[FILE_MIME_TYPE] = DriveKit::DKRecordField(mimeType);
283     return E_OK;
284 }
285 
286 
HandleEditedTime(DriveKit::DKRecordData & data,NativeRdb::ResultSet & resultSet)287 inline int32_t FileDataConvertor::HandleEditedTime(DriveKit::DKRecordData &data,
288     NativeRdb::ResultSet &resultSet)
289 {
290     int64_t val;
291     int32_t ret = GetLong(Media::PhotoColumn::MEDIA_DATE_MODIFIED, val, resultSet);
292     if (ret != E_OK) {
293         return ret;
294     }
295     data[FILE_EDITED_TIME] = DriveKit::DKRecordField(std::to_string(val * SECOND_TO_MILLISECOND));
296     return E_OK;
297 }
298 
HandleFavorite(DriveKit::DKRecordData & data,NativeRdb::ResultSet & resultSet)299 inline int32_t FileDataConvertor::HandleFavorite(DriveKit::DKRecordData &data,
300     NativeRdb::ResultSet &resultSet)
301 {
302     int32_t val;
303     int32_t ret = GetInt(Media::PhotoColumn::MEDIA_IS_FAV, val, resultSet);
304     if (ret != E_OK) {
305         return ret;
306     }
307     data[FILE_FAVORITE] = DriveKit::DKRecordField(!!val);
308     return E_OK;
309 }
310 
311 /* properties */
HandleSourceFileName(DriveKit::DKRecordFieldMap & map,NativeRdb::ResultSet & resultSet)312 inline int32_t FileDataConvertor::HandleSourceFileName(DriveKit::DKRecordFieldMap &map,
313     NativeRdb::ResultSet &resultSet)
314 {
315     std::string val;
316     int32_t ret = GetString(Media::PhotoColumn::MEDIA_NAME, val, resultSet);
317     if (ret != E_OK) {
318         return ret;
319     }
320     map[FILE_SOURCE_FILE_NAME] = DriveKit::DKRecordField(val);
321     return E_OK;
322 }
323 
HandleFirstUpdateTime(DriveKit::DKRecordFieldMap & map,NativeRdb::ResultSet & resultSet)324 inline int32_t FileDataConvertor::HandleFirstUpdateTime(DriveKit::DKRecordFieldMap &map,
325     NativeRdb::ResultSet &resultSet)
326 {
327     int64_t val;
328     int32_t ret = GetLong(Media::PhotoColumn::MEDIA_DATE_ADDED, val, resultSet);
329     if (ret != E_OK) {
330         return ret;
331     }
332     map[FILE_FIRST_UPDATE_TIME] = DriveKit::DKRecordField(std::to_string(val * SECOND_TO_MILLISECOND));
333     return E_OK;
334 }
335 
HandleFileCreateTime(DriveKit::DKRecordFieldMap & map,NativeRdb::ResultSet & resultSet)336 inline int32_t FileDataConvertor::HandleFileCreateTime(DriveKit::DKRecordFieldMap &map,
337     NativeRdb::ResultSet &resultSet)
338 {
339     int64_t val;
340     int32_t ret = GetLong(Media::PhotoColumn::MEDIA_DATE_ADDED, val, resultSet);
341     if (ret != E_OK) {
342         return ret;
343     }
344     map[FILE_FILE_CREATE_TIME] = DriveKit::DKRecordField(std::to_string(val * SECOND_TO_MILLISECOND));
345     return E_OK;
346 }
347 
HandleSourcePath(DriveKit::DKRecordFieldMap & map,NativeRdb::ResultSet & resultSet)348 inline int32_t FileDataConvertor::HandleSourcePath(DriveKit::DKRecordFieldMap &map,
349     NativeRdb::ResultSet &resultSet)
350 {
351     std::string displayName;
352     int32_t ret = GetString(Media::PhotoColumn::MEDIA_NAME, displayName, resultSet);
353     if (ret != E_OK) {
354         return ret;
355     }
356     map[FILE_SOURCE_PATH] = DriveKit::DKRecordField("/stroage/emulated/0/Pictures/Imports/" + displayName);
357     return E_OK;
358 }
359 
HandleRelativeBucketId(DriveKit::DKRecordFieldMap & map,NativeRdb::ResultSet & resultSet)360 inline int32_t FileDataConvertor::HandleRelativeBucketId(DriveKit::DKRecordFieldMap &map,
361     NativeRdb::ResultSet &resultSet)
362 {
363     return E_OK;
364 }
365 
HandleDuration(DriveKit::DKRecordFieldMap & map,NativeRdb::ResultSet & resultSet)366 inline int32_t FileDataConvertor::HandleDuration(DriveKit::DKRecordFieldMap &map,
367     NativeRdb::ResultSet &resultSet)
368 {
369     int32_t duration;
370     int32_t ret = GetInt(Media::PhotoColumn::MEDIA_DURATION, duration, resultSet);
371     if (ret != E_OK) {
372         return ret;
373     }
374     map[FILE_DURATION] = DriveKit::DKRecordField(duration);
375     return E_OK;
376 }
377 
HandleHeight(DriveKit::DKRecordFieldMap & map,NativeRdb::ResultSet & resultSet)378 inline int32_t FileDataConvertor::HandleHeight(DriveKit::DKRecordFieldMap &map,
379     NativeRdb::ResultSet &resultSet)
380 {
381     int32_t val;
382     int32_t ret = GetInt(Media::PhotoColumn::PHOTO_HEIGHT, val, resultSet);
383     if (ret != E_OK) {
384         return ret;
385     }
386     map[FILE_HEIGHT] = DriveKit::DKRecordField(val);
387     return E_OK;
388 }
389 
HandleWidth(DriveKit::DKRecordFieldMap & map,NativeRdb::ResultSet & resultSet)390 inline int32_t FileDataConvertor::HandleWidth(DriveKit::DKRecordFieldMap &map,
391     NativeRdb::ResultSet &resultSet)
392 {
393     int32_t val;
394     int32_t ret = GetInt(Media::PhotoColumn::PHOTO_WIDTH, val, resultSet);
395     if (ret != E_OK) {
396         return ret;
397     }
398     map[FILE_WIDTH] = DriveKit::DKRecordField(val);
399     return E_OK;
400 }
401 
HandleDataModified(DriveKit::DKRecordFieldMap & map,NativeRdb::ResultSet & resultSet)402 inline int32_t FileDataConvertor::HandleDataModified(DriveKit::DKRecordFieldMap &map,
403     NativeRdb::ResultSet &resultSet)
404 {
405     int64_t val;
406     int32_t ret = GetLong(Media::PhotoColumn::MEDIA_DATE_MODIFIED, val, resultSet);
407     if (ret != E_OK) {
408         return ret;
409     }
410     map[FILE_DATA_MODIFIED] = DriveKit::DKRecordField(std::to_string(val));
411     return E_OK;
412 }
413 
HandleTimeZone(DriveKit::DKRecordFieldMap & map,NativeRdb::ResultSet & resultSet)414 inline int32_t FileDataConvertor::HandleTimeZone(DriveKit::DKRecordFieldMap &map,
415     NativeRdb::ResultSet &resultSet)
416 {
417     map[FILE_TIME_ZONE] = DriveKit::DKRecordField("");
418     return E_OK;
419 }
420 
HandleDescription(DriveKit::DKRecordData & data,NativeRdb::ResultSet & resultSet)421 inline int32_t FileDataConvertor::HandleDescription(DriveKit::DKRecordData &data,
422     NativeRdb::ResultSet &resultSet)
423 {
424     data[FILE_DESCRIPTION] = DriveKit::DKRecordField("");
425     return E_OK;
426 }
HandleAlbumId(DriveKit::DKRecordData & data,NativeRdb::ResultSet & resultSet)427 inline int32_t FileDataConvertor::HandleAlbumId(DriveKit::DKRecordData &data,
428     NativeRdb::ResultSet &resultSet)
429 {
430     return E_OK;
431 }
432 
HandleLocalInfo(DriveKit::DKRecordData & data,NativeRdb::ResultSet & resultSet)433 inline int32_t FileDataConvertor::HandleLocalInfo(DriveKit::DKRecordData &data,
434     NativeRdb::ResultSet &resultSet)
435 {
436     int32_t val;
437     int32_t ret = GetInt(Media::PhotoColumn::MEDIA_ID, val, resultSet);
438     if (ret != E_OK) {
439         return ret;
440     }
441     data[FILE_LOCAL_ID] = DriveKit::DKRecordField(val);
442     return E_OK;
443 }
444 } // namespace CloudSync
445 } // namespace FileManagement
446 } // namespace OHOS
447 #endif // OHOS_CLOUD_SYNC_SERVICE_FILE_DATA_CONVERTOR_H
448