drive_backend_util.h revision a1401311d1ab56c4ed0a474bd38c108f75cb0cd9
1// Copyright 2013 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_DRIVE_BACKEND_UTIL_H_
6#define CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_DRIVE_BACKEND_UTIL_H_
7
8#include <string>
9
10#include "base/memory/scoped_ptr.h"
11#include "base/memory/scoped_vector.h"
12#include "chrome/browser/sync_file_system/drive_backend/metadata_database.pb.h"
13#include "chrome/browser/sync_file_system/sync_status_code.h"
14#include "google_apis/drive/gdata_errorcode.h"
15#include "webkit/common/blob/scoped_file.h"
16
17namespace google_apis {
18class ChangeResource;
19class FileResource;
20class ResourceEntry;
21}
22
23namespace leveldb {
24class WriteBatch;
25}
26
27namespace sync_file_system {
28namespace drive_backend {
29
30void PutServiceMetadataToBatch(const ServiceMetadata& service_metadata,
31                               leveldb::WriteBatch* batch);
32void PutFileMetadataToBatch(const FileMetadata& file,
33                            leveldb::WriteBatch* batch);
34void PutFileTrackerToBatch(const FileTracker& tracker,
35                           leveldb::WriteBatch* batch);
36
37void PutFileMetadataDeletionToBatch(const std::string& file_id,
38                                    leveldb::WriteBatch* batch);
39void PutFileTrackerDeletionToBatch(int64 tracker_id,
40                                   leveldb::WriteBatch* batch);
41
42void PopulateFileDetailsByFileResource(
43    const google_apis::FileResource& file_resource,
44    FileDetails* details);
45scoped_ptr<FileMetadata> CreateFileMetadataFromFileResource(
46    int64 change_id,
47    const google_apis::FileResource& resource);
48scoped_ptr<FileMetadata> CreateFileMetadataFromChangeResource(
49    const google_apis::ChangeResource& change);
50scoped_ptr<FileMetadata> CreateDeletedFileMetadata(
51    int64 change_id,
52    const std::string& file_id);
53
54// Creates a temporary file in |dir_path|.  This must be called on an
55// IO-allowed task runner, and the runner must be given as |file_task_runner|.
56webkit_blob::ScopedFile CreateTemporaryFile(
57    base::TaskRunner* file_task_runner);
58
59std::string FileKindToString(FileKind file_kind);
60
61bool HasFileAsParent(const FileDetails& details, const std::string& file_id);
62
63std::string GetMimeTypeFromTitle(const base::FilePath& title);
64
65scoped_ptr<google_apis::ResourceEntry> GetOldestCreatedFolderResource(
66    ScopedVector<google_apis::ResourceEntry> list);
67
68SyncStatusCode GDataErrorCodeToSyncStatusCode(
69    google_apis::GDataErrorCode error);
70
71scoped_ptr<FileTracker> CloneFileTracker(const FileTracker* obj);
72
73template <typename Src, typename Dest>
74void AppendContents(const Src& src, Dest* dest) {
75  dest->insert(dest->end(), src.begin(), src.end());
76}
77
78template <typename Container>
79const typename Container::mapped_type& LookUpMap(
80    const Container& container,
81    const typename Container::key_type& key,
82    const typename Container::mapped_type& default_value) {
83  typename Container::const_iterator found = container.find(key);
84  if (found == container.end())
85    return default_value;
86  return found->second;
87}
88
89}  // namespace drive_backend
90}  // namespace sync_file_system
91
92#endif  // CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_DRIVE_BACKEND_UTIL_H_
93