#ifndef SCIQLOP_CATALOGUECONTROLLER_H #define SCIQLOP_CATALOGUECONTROLLER_H #include "CoreGlobal.h" #include #include #include #include #include #include class DBCatalogue; class DBEvent; class DBEventProduct; Q_DECLARE_LOGGING_CATEGORY(LOG_CatalogueController) class DataSourceItem; class Variable; /** * @brief The CatalogueController class aims to handle catalogues and event using the CatalogueAPI * library. */ class SCIQLOP_CORE_EXPORT CatalogueController : public QObject { Q_OBJECT public: explicit CatalogueController(QObject *parent = 0); virtual ~CatalogueController(); // DB QStringList getRepositories() const; void addDB(const QString &dbPath); void saveDB(const QString &destinationPath, const QString &repository); // Event /// retrieveEvents with empty repository retrieve them from the default repository std::list > retrieveEvents(const QString &repository) const; std::list > retrieveAllEvents() const; std::list > retrieveEventsFromCatalogue(std::shared_ptr catalogue) const; void addEvent(std::shared_ptr event); void updateEvent(std::shared_ptr event); void updateEventProduct(std::shared_ptr eventProduct); void removeEvent(std::shared_ptr event); // void trashEvent(std::shared_ptr event); // void restore(QUuid eventId); void saveEvent(std::shared_ptr event); bool eventHasChanges(std::shared_ptr event) const; // Catalogue // bool createCatalogue(const QString &name, QVector eventList); /// retrieveEvents with empty repository retrieve them from the default repository std::list > retrieveCatalogues(const QString &repository = QString()) const; void updateCatalogue(std::shared_ptr catalogue); void removeCatalogue(std::shared_ptr catalogue); void saveCatalogue(std::shared_ptr catalogue); void saveAll(); /// Returns the MIME data associated to a list of variables QByteArray mimeDataForEvents(const QVector > &events) const; /// Returns the list of variables contained in a MIME data QVector > eventsForMimeData(const QByteArray &mimeData) const; public slots: /// Manage init/end of the controller void initialize(); private: class CatalogueControllerPrivate; spimpl::unique_impl_ptr impl; }; #endif // SCIQLOP_CATALOGUECONTROLLER_H