#include "tool.h"

Tool::Tool()
{
}

Tool::~Tool() {
    QMapIterator<QString, QList<Switcher*> > it(groups);
    while (it.hasNext()) {
        QListIterator<Switcher*> sit(it.next().value());
        while (sit.hasNext()) {
            Switcher *s = sit.next();
            delete s;
        }
    }
}

QStringList Tool::getCommandArgs() {
    QMapIterator<QString, QList<Switcher*> > it(groups);
    QStringList result;
    while (it.hasNext()) {
        QListIterator<Switcher*> sit(it.next().value());
        while (sit.hasNext()) {
            Switcher *s = sit.next();
            QString str = s->buildSwitcherString();
            result << str;
        }
    }
    return result;
}

QList<QString> Tool::checkValidity() {
    QList<QString> errors;

    QMapIterator<QString, QList<Switcher*> > it(groups);
    while (it.hasNext()) {
        it.next();
        QListIterator<Switcher*> sit(it.value());
        while (sit.hasNext()) {
            Switcher *s = sit.next();
            if (!s->isRequired()) continue;

            QString str = s->buildSwitcherString();
            if (str.isEmpty()) errors.push_back("'" + it.key() + "->" + s->getName() + "' is required but it is empty now!");
        }
    }

    return errors;
}
