ACloudViewer  3.9.4
A Modern Library for 3D Data Processing
Extract.cpp
Go to the documentation of this file.
1 // ----------------------------------------------------------------------------
2 // - CloudViewer: www.cloudViewer.org -
3 // ----------------------------------------------------------------------------
4 // Copyright (c) 2018-2024 www.cloudViewer.org
5 // SPDX-License-Identifier: MIT
6 // ----------------------------------------------------------------------------
7 
9 
10 #include <FileSystem.h>
11 #include <Logging.h>
12 
13 #include <unordered_map>
14 
16 
17 namespace cloudViewer {
18 namespace utility {
19 
20 static const std::unordered_map<
21  std::string,
22  std::function<void(const std::string&, const std::string&)>>
24  {"zip", ExtractFromZIP},
25  };
26 
27 bool IsSupportedCompressedFilePath(const std::string& file_path) {
28  const std::string format =
30  return file_extension_to_extract_function.count(format) != 0;
31 }
32 
33 void Extract(const std::string& file_path, const std::string& extract_dir) {
34  if (!utility::filesystem::FileExists(file_path)) {
35  utility::LogError("File {} does not exist.", file_path);
36  }
37  if (!IsSupportedCompressedFilePath(file_path)) {
38  utility::LogError("Extraction Failed: unknown extension for {}.",
39  file_path);
40  }
41  if (!utility::filesystem::DirectoryExists(extract_dir)) {
43  utility::LogInfo("Created directory {}.", extract_dir);
44  }
45  utility::LogInfo("Extracting {}.", file_path);
46  const std::string format =
48  file_extension_to_extract_function.at(format)(file_path, extract_dir);
49  utility::LogInfo("Extracted to {}.", extract_dir);
50 }
51 
52 } // namespace utility
53 } // namespace cloudViewer
filament::Texture::InternalFormat format
#define LogInfo(...)
Definition: Logging.h:81
#define LogError(...)
Definition: Logging.h:60
bool MakeDirectoryHierarchy(const std::string &directory)
Definition: FileSystem.cpp:499
bool DirectoryExists(const std::string &directory)
Definition: FileSystem.cpp:473
std::string GetFileExtensionInLowerCase(const std::string &filename)
Definition: FileSystem.cpp:281
bool FileExists(const std::string &filename)
Definition: FileSystem.cpp:524
bool IsSupportedCompressedFilePath(const std::string &file_path)
Returns true if the file is a supported compressed file path. It does not check if the file exists....
Definition: Extract.cpp:27
static const std::unordered_map< std::string, std::function< void(const std::string &, const std::string &)> > file_extension_to_extract_function
Definition: Extract.cpp:23
void ExtractFromZIP(const std::string &file_path, const std::string &extract_dir)
Function to extract files compressed in .zip format.
Definition: ExtractZIP.cpp:158
void Extract(const std::string &file_path, const std::string &extract_dir)
Function to extract compressed files.
Definition: Extract.cpp:33
Generic file read and write utility for python interface.