##// END OF EJS Templates
Some more work into Catalogue Controller...
jeandet -
r54:548ec6a0c922
parent child
Show More
@@ -21,29 +21,40 Q_DECLARE_LOGGING_CATEGORY(LOG_CatalogueController)
21 class DataSourceItem;
21 class DataSourceItem;
22 class Variable;
22 class Variable;
23
23
24 constexpr auto default_repo = "default";
25
24 /**
26 /**
25 * @brief The CatalogueController class aims to handle catalogues and event
27 * @brief The CatalogueController class aims to handle catalogues and event
26 * using the CatalogueAPI library.
28 * using the CatalogueAPI library.
27 */
29 */
28 class SCIQLOP_CORE_EXPORT CatalogueController : public QObject
30 class SCIQLOP_CORE_EXPORT CatalogueController : public QObject
29 {
31 {
32 Q_OBJECT
33 public:
30 using time_t = double;
34 using time_t = double;
35 using Product_t = CatalogiCpp::Product<time_t>;
31 using Repository_t = CatalogiCpp::Repository<time_t>;
36 using Repository_t = CatalogiCpp::Repository<time_t>;
32 using Event_t = Repository_t::Event_t;
37 using Event_t = Repository_t::Event_t;
33 using Event_ptr = Repository_t::Event_ptr;
38 using Event_ptr = Repository_t::Event_ptr;
34 using Catalogue_t = Repository_t::Catalogue_t;
39 using Catalogue_t = Repository_t::Catalogue_t;
35 using Catalogue_ptr = typename Repository_t::Catalogue_ptr;
40 using Catalogue_ptr = typename Repository_t::Catalogue_ptr;
36 using uuid_t = Repository_t::uuid_t;
41 using uuid_t = Repository_t::uuid_t;
42 template<typename... _Args>
43 static inline Catalogue_ptr make_catalogue_ptr(_Args&&... __args)
44 {
45 return Repository_t::make_catalogue_ptr(std::forward<_Args>(__args)...);
46 }
47
48 template<typename... _Args>
49 static inline Event_ptr make_event_ptr(_Args&&... __args)
50 {
51 return Catalogue_t::make_event_ptr(std::forward<_Args>(__args)...);
52 }
37
53
38 std::map<QString, CatalogiCpp::Repository<time_t>> _lastSavedRepos;
39 std::map<QString, CatalogiCpp::Repository<time_t>> _currentRepos;
40
41 Q_OBJECT
42 public:
43 explicit CatalogueController(QObject* parent = nullptr);
54 explicit CatalogueController(QObject* parent = nullptr);
44 virtual ~CatalogueController();
55 virtual ~CatalogueController();
45
56
46 QStringList getRepositories() const;
57 QStringList repositories() const;
47 void loadRepository(const QString& path, const QString& name);
58 void loadRepository(const QString& path, const QString& name);
48 void saveRepository(const QString& path, const QString& name);
59 void saveRepository(const QString& path, const QString& name);
49
60
@@ -62,6 +73,11 public:
62 void save(Catalogue_ptr catalogue);
73 void save(Catalogue_ptr catalogue);
63 void save(const QString& repository);
74 void save(const QString& repository);
64
75
76 void add(const QString& repository);
77 void add(const QString& catalogue, const QString& repository);
78 void add(Event_ptr event, Catalogue_ptr catalogue);
79 void add(Event_ptr event, const QString& repository = default_repo);
80
65 // // Event
81 // // Event
66 // /// retrieveEvents with empty repository retrieve them from the default
82 // /// retrieveEvents with empty repository retrieve them from the default
67 // repository std::list<std::shared_ptr<DBEvent>> retrieveEvents(const
83 // repository std::list<std::shared_ptr<DBEvent>> retrieveEvents(const
@@ -116,6 +132,9 public:
116 // void initialize();
132 // void initialize();
117
133
118 private:
134 private:
135 std::map<QString, CatalogiCpp::Repository<time_t>> _lastSavedRepos;
136 std::map<QString, CatalogiCpp::Repository<time_t>> _currentRepos;
137
119 // class CatalogueControllerPrivate;
138 // class CatalogueControllerPrivate;
120 // spimpl::unique_impl_ptr<CatalogueControllerPrivate> impl;
139 // spimpl::unique_impl_ptr<CatalogueControllerPrivate> impl;
121 };
140 };
@@ -23,6 +23,27 namespace SciQLop::containers
23 return container.find(value) != std::cend(container);
23 return container.find(value) != std::cend(container);
24 }
24 }
25
25
26 template<class T1, class T2>
27 auto index_of(const T1& container, const T2& value)
28 -> decltype(container.front() == value, 0)
29 {
30 return std::distance(
31 std::cbegin(container),
32 std::find(std::cbegin(container), std::cend(container), value));
33 }
34
35 template<class T1, class T2>
36 auto index_of(const T1& container, const T2& value)
37 -> decltype(container.front().get(), std::is_pointer<T2>::value, 0)
38 {
39 return std::distance(std::cbegin(container),
40 std::find_if(std::cbegin(container),
41 std::cend(container),
42 [value](const auto& item) {
43 return value == item.get();
44 }));
45 }
46
26 } // namespace SciQLop::containers
47 } // namespace SciQLop::containers
27
48
28 #endif // CONTAINERS_H
49 #endif // CONTAINERS_H
@@ -47,7 +47,7 CatalogueController::CatalogueController(QObject* parent)
47
47
48 CatalogueController::~CatalogueController() {}
48 CatalogueController::~CatalogueController() {}
49
49
50 QStringList CatalogueController::getRepositories() const
50 QStringList CatalogueController::repositories() const
51 {
51 {
52 QStringList repos;
52 QStringList repos;
53 std::transform(std::begin(_currentRepos), std::end(_currentRepos),
53 std::transform(std::begin(_currentRepos), std::end(_currentRepos),
@@ -209,6 +209,26 void CatalogueController::save(const QString& repository)
209 }
209 }
210 }
210 }
211
211
212 void CatalogueController::add(const QString& repository)
213 {
214 if(!contains(_currentRepos, repository))
215 { _currentRepos[repository] = Repository_t{}; }
216 }
217
218 void CatalogueController::add(const QString& catalogue,
219 const QString& repository)
220 {
221 if(!contains(_currentRepos, repository))
222 { _currentRepos[repository] = Repository_t{}; }
223 auto new_catalogue = make_catalogue_ptr();
224 new_catalogue->name = catalogue.toStdString();
225 _currentRepos[repository].add(std::move(new_catalogue));
226 }
227
228 void CatalogueController::add(CatalogueController::Event_ptr event,
229 const QString& repository)
230 {}
231
212 // void CatalogueController::saveDB(const QString& destinationPath, const
232 // void CatalogueController::saveDB(const QString& destinationPath, const
213 // QString& repositoryName)
233 // QString& repositoryName)
214 //{
234 //{
General Comments 0
You need to be logged in to leave comments. Login now