#ifndef IMETADATAPLUGIN_H
#define IMETADATAPLUGIN_H

#include <QString>

#include "core_global.h"
#include "iplugin.h"

class CORESHARED_EXPORT IMetaDataPlugin : public IPlugin
{
public:
    IMetaDataPlugin();
    virtual ~IMetaDataPlugin();

    // IPlugin interface
public:
    virtual QString pluginName();
    virtual QString pluginId();
    virtual QString pluginDescription();
    virtual int schemaVersion();
    virtual QStringList schemas();
    virtual QStringList dependsOn();

    virtual void init(const QJsonObject &metaData);

protected:
    virtual void initServiceUi() = 0;
    virtual void parseMetaData(const QJsonObject &metaData);

private:
    QString m_name;
    QString m_id;
    QString m_description;
    int m_schemaVersion;
    QStringList m_schemas;
    QStringList m_dependsOn;

    QString parseLocaleText(const QJsonObject &object);
};

#endif // IMETADATAPLUGIN_H
