|
4 | 4 | // Created Date: Th Feb 2025 // |
5 | 5 | // Author: Matthew Carroll // |
6 | 6 | // ----- // |
7 | | -// Last Modified: 2025-04-30 // |
| 7 | +// Last Modified: 2025-05-01 // |
8 | 8 | // Modified By: Matthew Carroll // |
9 | 9 | // ----- // |
10 | 10 | // Copyright (c) 2025 Syndemics Lab at Boston Medical Center // |
|
17 | 17 | #ifndef DATAMANAGEMENT_MODELDATA_MODELDATA_HPP_ |
18 | 18 | #define DATAMANAGEMENT_MODELDATA_MODELDATA_HPP_ |
19 | 19 |
|
20 | | -#include <filesystem> |
21 | 20 | #include <memory> |
22 | 21 | #include <string> |
23 | 22 | #include <vector> |
24 | 23 |
|
25 | | -#include <datamanagement/source/config.hpp> |
26 | 24 | #include <datamanagement/source/csv_source.hpp> |
27 | 25 | #include <datamanagement/source/db_source.hpp> |
28 | 26 |
|
29 | 27 | namespace datamanagement { |
30 | 28 | class ModelData { |
31 | | -private: |
32 | | - datamanagement::source::Config config; |
33 | | - std::unordered_map<std::string, datamanagement::source::CSVSource> |
34 | | - _csv_sources = {}; |
35 | | - std::unordered_map<std::string, datamanagement::source::DBSource> |
36 | | - _db_sources = {}; |
37 | | - |
38 | 29 | public: |
39 | | - ModelData(const std::string &cfgfile) : config(cfgfile) {} |
40 | | - ~ModelData() = default; |
41 | | - datamanagement::source::Config GetConfig() const { return config; } |
| 30 | + virtual ~ModelData() = default; |
| 31 | + virtual std::string GetFromConfig(const std::string &key) const = 0; |
| 32 | + |
| 33 | + virtual std::vector<std::string> |
| 34 | + GetConfigSectionCategories(const std::string §ion) const = 0; |
| 35 | + |
| 36 | + virtual void AddSource(const std::string &path) = 0; |
42 | 37 |
|
43 | | - void AddSource(const std::string &path) { |
44 | | - std::filesystem::path p = path; |
45 | | - if (p.extension() == ".csv") { |
46 | | - datamanagement::source::CSVSource s; |
47 | | - _csv_sources[p.stem()] = std::move(s); |
48 | | - _csv_sources[p.stem()].ConnectToFile(path); |
49 | | - } else if (p.extension() == ".db") { |
50 | | - datamanagement::source::DBSource s; |
51 | | - _db_sources[p.stem()] = std::move(s); |
52 | | - _db_sources[p.stem()].SetDatabasePath(path); |
53 | | - } else { |
54 | | - // Not a valid source file |
55 | | - } |
56 | | - } |
| 38 | + virtual std::vector<std::string> GetCSVSourceNames() const = 0; |
| 39 | + virtual std::vector<std::string> GetDBSourceNames() const = 0; |
57 | 40 |
|
58 | | - std::vector<std::string> GetCSVSourceNames() const { |
59 | | - std::vector<std::string> names = {}; |
60 | | - for (const auto &[k, v] : _csv_sources) { |
61 | | - names.push_back(k); |
62 | | - } |
63 | | - return names; |
64 | | - } |
65 | | - std::vector<std::string> GetDBSourceNames() const { |
66 | | - std::vector<std::string> names = {}; |
67 | | - for (const auto &[k, v] : _db_sources) { |
68 | | - names.push_back(k); |
69 | | - } |
70 | | - return names; |
71 | | - } |
| 41 | + virtual source::CSVSource &GetCSVSource(const std::string &name) = 0; |
72 | 42 |
|
73 | | - datamanagement::source::CSVSource &GetCSVSource(const std::string &name) { |
74 | | - return _csv_sources[name]; |
75 | | - } |
| 43 | + virtual source::DBSource &GetDBSource(const std::string &name) = 0; |
76 | 44 |
|
77 | | - datamanagement::source::DBSource &GetDBSource(const std::string &name) { |
78 | | - return _db_sources[name]; |
79 | | - } |
| 45 | + static std::unique_ptr<ModelData> |
| 46 | + Create(const std::string &config, const std::string &log_name = "console"); |
80 | 47 | }; |
81 | 48 | } // namespace datamanagement |
82 | 49 |
|
|
0 commit comments