* @brief Walks the project model, reports inconsistencies. */
| 5800 | * @brief Walks the project model, reports inconsistencies. |
| 5801 | */ |
| 5802 | API::CommandResponse API::Handlers::ProjectHandler::validate(const QString& id, |
| 5803 | const QJsonObject& params) |
| 5804 | { |
| 5805 | Q_UNUSED(params) |
| 5806 | |
| 5807 | const auto& project = DataModel::ProjectModel::instance(); |
| 5808 | const auto& groups = project.groups(); |
| 5809 | const auto& sources = project.sources(); |
| 5810 | const auto& actions = project.actions(); |
| 5811 | |
| 5812 | QJsonArray issues; |
| 5813 | bool ok = true; |
| 5814 | |
| 5815 | QSet<int> sourceIds; |
| 5816 | for (const auto& src : sources) |
| 5817 | sourceIds.insert(src.sourceId); |
| 5818 | |
| 5819 | if (groups.empty()) { |
| 5820 | addIssue(issues, |
| 5821 | QStringLiteral("warning"), |
| 5822 | QStringLiteral("project"), |
| 5823 | QStringLiteral("Project has no groups; no data will be visualized")); |
| 5824 | } |
| 5825 | |
| 5826 | validateSources(sources, issues, ok); |
| 5827 | validateGroups(groups, sourceIds, issues, ok); |
| 5828 | validateActions(actions, issues); |
| 5829 | |
| 5830 | QJsonObject result; |
| 5831 | result[QStringLiteral("ok")] = ok; |
| 5832 | result[QStringLiteral("issues")] = issues; |
| 5833 | result[QStringLiteral("groupCount")] = static_cast<int>(groups.size()); |
| 5834 | result[QStringLiteral("sourceCount")] = static_cast<int>(sources.size()); |
| 5835 | result[QStringLiteral("actionCount")] = static_cast<int>(actions.size()); |
| 5836 | result[QStringLiteral("issueCount")] = issues.size(); |
| 5837 | return CommandResponse::makeSuccess(id, result); |
| 5838 | } |
| 5839 | |
| 5840 | //-------------------------------------------------------------------------------------------------- |
| 5841 | // Script dry-run helpers (compile + run in throwaway engines, never touch project) |
nothing calls this directly
no test coverage detected