void LinkTable::execute(const QVariantMap &parameters) {
    quint32 sourceId = parameters["sourceid"].toUInt();
    quint32 targetId = parameters["targetid"].toUInt();
    std::pair<QString, QObject *> modelPair = modelregistry()->getModel(sourceId);
    if (modelPair.first != sUNDEF) {
        TableModel *sourceTable = dynamic_cast<TableModel *>(modelPair.second);
        if (!sourceTable)
            return;
        modelPair = modelPair = modelregistry()->getModel(targetId);
        if (modelPair.first == "featurecoverage") {
            CoverageLayerModel *targetMap = dynamic_cast<CoverageLayerModel *>(modelPair.second);
            if (!targetMap)
                return;
            QString linktype = parameters["linktype"].toString();
            if (sourceTable->supportsLinkType(linktype) && targetMap->supportsLinkType(linktype)) {
                sourceTable->connect(sourceTable, &TableModel::linkSendMessage, targetMap, &CoverageLayerModel::linkAcceptMessage);
            }
        }
    }
}