#ifndef SCIQLOP_DATASOURCEITEMBUILDER_H #define SCIQLOP_DATASOURCEITEMBUILDER_H #include #include #include /** * @brief The DataSourceItemBuilder class aims to facilitate the creation of a DataSourceItem for unit tests * @sa DataSourceItem */ class DataSourceItemBuilder { public: /// Inits root item DataSourceItemBuilder & root(const QString &name); DataSourceItemBuilder & root(QVariantHash data); /// Adds node into the current item DataSourceItemBuilder & node(const QString &name); DataSourceItemBuilder & node(QVariantHash data); /// Adds product into the current item DataSourceItemBuilder & product(const QString &name); DataSourceItemBuilder & product(QVariantHash data); /// Adds component into the current item DataSourceItemBuilder & component(const QString &name); DataSourceItemBuilder & component(QVariantHash data); /// Closes the build of the current item DataSourceItemBuilder& end(); /// Creates the DataSourceItem std::shared_ptr build(); private: DataSourceItemBuilder& append(DataSourceItemType type, const QString &name); DataSourceItemBuilder& append(DataSourceItemType type, QVariantHash data); std::shared_ptr m_Root{nullptr}; std::stack m_Items; }; #endif // SCIQLOP_DATASOURCEITEMBUILDER_H