| 499 | |
| 500 | |
| 501 | QString ObjectQuery::toString() const |
| 502 | { |
| 503 | auto ret = QString{}; |
| 504 | switch (op) |
| 505 | { |
| 506 | case OperatorIs: |
| 507 | ret = keyToString(tags.key) + QLatin1String(" = \"") + toEscaped(tags.value) + QLatin1Char('"'); |
| 508 | break; |
| 509 | case OperatorIsNot: |
| 510 | ret = keyToString(tags.key) + QLatin1String(" != \"") + toEscaped(tags.value) + QLatin1Char('"'); |
| 511 | break; |
| 512 | case OperatorContains: |
| 513 | ret = keyToString(tags.key) + QLatin1String(" ~= \"") + toEscaped(tags.value) + QLatin1Char('"'); |
| 514 | break; |
| 515 | case OperatorSearch: |
| 516 | case OperatorObjectText: |
| 517 | ret = QLatin1Char('"') + toEscaped(tags.value) + QLatin1Char('"'); |
| 518 | break; |
| 519 | |
| 520 | case OperatorAnd: |
| 521 | if (subqueries.first->getOperator() == OperatorOr) |
| 522 | ret = QLatin1Char('(') + subqueries.first->toString() + QLatin1Char(')'); |
| 523 | else |
| 524 | ret = subqueries.first->toString(); |
| 525 | ret += QLatin1String(" AND "); |
| 526 | if (subqueries.second->getOperator() == OperatorOr) |
| 527 | ret += QLatin1Char('(') + subqueries.second->toString() + QLatin1Char(')'); |
| 528 | else |
| 529 | ret += subqueries.second->toString(); |
| 530 | break; |
| 531 | case OperatorOr: |
| 532 | ret = subqueries.first->toString() + QLatin1String(" OR ") + subqueries.second->toString(); |
| 533 | break; |
| 534 | case OperatorNot: |
| 535 | ret = QLatin1String("NOT ") + subqueries.second->toString(); |
| 536 | break; |
| 537 | |
| 538 | case OperatorSymbol: |
| 539 | ret = QLatin1String("SYMBOL \"") + (symbol ? symbol->getNumberAsString() : QString{}) + QLatin1Char('\"'); |
| 540 | break; |
| 541 | |
| 542 | case OperatorInvalid: |
| 543 | // Default empty string is sufficient |
| 544 | break; |
| 545 | } |
| 546 | |
| 547 | return ret; |
| 548 | } |
| 549 | |
| 550 | |
| 551 |
no test coverage detected