#include "metriccreator.h" #include #include "model/step/tools.h" MetricCreator::MetricCreator(QString directory, QString name, QString code, bool exampleMode) : QObject() { _pluginDirectory = directory; _metricName = name; _pluginCode = code; _exampleMode = exampleMode; } QString MetricCreator::getFullName(const QString code, const QString name) { QString text = name; if (name == "") text = tr("Nom"); else text = Tools::getTitleCase(name); return QString("%1_Metric%2").arg(code.toUpper(),text); } QString MetricCreator::createMetricFiles() { QString logMessage = ""; QDir(_pluginDirectory).mkdir("metrics"); if (_exampleMode) _metricName += "06"; if (!create_MetricFile_h ()) logMessage.append(tr("Impossible de créer le fichier metric (.h)\n")); if (!create_MetricFile_cpp ()) logMessage.append(tr("Impossible de créer le fichier metric (.cpp)\n")); if (!modifyPluginManager_cpp()) logMessage.append(tr("Impossible de modifier le fichier PluginManager (.cpp)\n")); return logMessage; } bool MetricCreator::create_MetricFile_h() { QString input = ":/templates/PluginMetric_h.txt"; QString output = QString("%1/metrics/%2.h").arg(_pluginDirectory, getFullName(_pluginCode,_metricName).toLower()); QList > *tags = new QList >(); tags->append(QPair("{{CODE_UPPER}}",_pluginCode.toUpper())); tags->append(QPair("{{CODE_LOWER}}",_pluginCode.toLower())); tags->append(QPair("{{NAME_UPPER}}",_metricName.toUpper())); tags->append(QPair("{{NAME_LOWER}}",_metricName.toLower())); tags->append(QPair("{{NAME}}" ,_metricName)); return Tools::parseTemplate(input, output, tags, _exampleMode); } bool MetricCreator::create_MetricFile_cpp() { QString input = ":/templates/PluginMetric_cpp.txt"; QString output = QString("%1/metrics/%2.cpp").arg(_pluginDirectory, getFullName(_pluginCode,_metricName).toLower()); QList > *tags = new QList >(); tags->append(QPair("{{CODE_UPPER}}",_pluginCode.toUpper())); tags->append(QPair("{{CODE_LOWER}}",_pluginCode.toLower())); tags->append(QPair("{{NAME_UPPER}}",_metricName.toUpper())); tags->append(QPair("{{NAME_LOWER}}",_metricName.toLower())); tags->append(QPair("{{NAME}}" ,_metricName)); return Tools::parseTemplate(input, output, tags, _exampleMode); } bool MetricCreator::modifyPluginManager_cpp() { if (!_exampleMode) { QString input = QString("%1/%2_pluginmanager.cpp").arg(_pluginDirectory,_pluginCode.toLower()); QString tag = "_pluginmanager.h\""; QString text = QString("#include \"metrics/%1.h\"").arg(getFullName(_pluginCode,_metricName).toLower()); int offset = 1; bool fileOK = Tools::modifyManager(input, tag, text, offset); tag = "loadMetrics()"; text = QString(" addNewMetric(new %1());").arg(getFullName(_pluginCode,_metricName)); return fileOK && Tools::modifyManager(input, tag, text, offset); } else { // Nothing to do return true; } }