StrategyNotFoundException::__construct()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 6
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 1
c 1
b 0
f 0
dl 0
loc 6
rs 10
cc 1
nc 1
nop 3
1
<?php
2
3
/*
4
 * This file is part of the Veslo project <https://github.com/symfony-doge/veslo>.
5
 *
6
 * (C) 2019 Pavel Petrov <[email protected]>.
7
 *
8
 * For the full copyright and license information, please view the LICENSE
9
 * file that was distributed with this source code.
10
 *
11
 * @license https://opensource.org/licenses/GPL-3.0 GPL-3.0
12
 */
13
14
declare(strict_types=1);
15
16
namespace Veslo\AnthillBundle\Exception\Vacancy\Scanner;
17
18
use RuntimeException;
19
use Symfony\Component\HttpFoundation\Response;
20
use Throwable;
21
use Veslo\AnthillBundle\Exception\AnthillBundleExceptionInterface;
22
23
/**
24
 * Will be thrown if strategy for scanner is not found
25
 */
26
class StrategyNotFoundException extends RuntimeException implements AnthillBundleExceptionInterface
27
{
28
    /**
29
     * Default error message
30
     *
31
     * @const string
32
     */
33
    public const MESSAGE = 'Scanner strategy is not found.';
34
35
    /**
36
     * Error message with search strategy name
37
     *
38
     * @const string
39
     */
40
    public const MESSAGE_WITH_SEARCH_STRATEGY =
41
        "Compatible parse strategy for search algorithm '{searchStrategyName}' is not found."
42
        . ' Declare it in roadmaps.yml';
43
44
    /**
45
     * {@inheritdoc}
46
     */
47
    public function __construct(
48
        string $message = self::MESSAGE,
49
        int $code = Response::HTTP_INTERNAL_SERVER_ERROR,
50
        Throwable $previous = null
51
    ) {
52
        parent::__construct($message, $code, $previous);
53
    }
54
55
    /**
56
     * Returns exception in context of unspecified parse strategy for search algorithm
57
     *
58
     * @param string $searchStrategyName Name of search algorithm
59
     *
60
     * @return StrategyNotFoundException
61
     */
62
    public static function withSearchStrategyName(string $searchStrategyName): StrategyNotFoundException
63
    {
64
        $message = str_replace('{searchStrategyName}', $searchStrategyName, self::MESSAGE_WITH_SEARCH_STRATEGY);
65
66
        return new static($message);
67
    }
68
}
69