21 std::shared_ptr<ProductModel::Design> GetDesign(
const std::string& designName);
22 std::shared_ptr<FileModel::Design::FileArchive> GetFileArchive(
const std::string& designName);
24 void AddFileArchive(
const std::string& designName, std::shared_ptr<FileModel::Design::FileArchive> fileArchive,
bool save);
26 bool SaveFileArchive(
const std::string& designName);
28 std::vector<std::string> getLoadedDesignNames(
const std::string& filter =
"")
const;
29 std::vector<std::string> getLoadedFileArchiveNames(
const std::string& filter =
"")
const;
30 std::vector<std::string> getUnloadedDesignNames(
const std::string& filter =
"")
const;
32 int loadAllFileArchives(
bool stopOnError);
33 int loadAllDesigns(
bool stopOnError);
34 int loadFileArchives(
const Utils::StringVector& names);
35 int loadDesigns(
const Utils::StringVector& names);
37 void setDirectory(
const std::string& directory);
38 std::string getDirectory()
const;
42 void ensureDirectoryExists()
const;
45 std::string m_directory;
47 FileModel::Design::FileArchive::StringMap m_fileArchivesByName;
48 ProductModel::Design::StringMap m_designsByName;
52 mutable std::shared_mutex m_cacheMutex;
54 std::shared_ptr<ProductModel::Design> LoadDesign(
const std::string& designName);
55 std::shared_ptr<FileModel::Design::FileArchive> LoadFileArchive(
const std::string& designName);
57 constexpr inline static const char* DESIGN_EXTENSIONS[] = {
"zip",
"tgz",
"tar.gz",
"tar",
"gzip" ,
"gz" };