Code Duplication    Length = 45-47 lines in 3 locations

Service/ReportPattern.php 1 location

@@ 23-68 (lines=46) @@
20
 *
21
 * @author Simon Ball <simonball at simonball dot me>
22
 */
23
class ReportPattern
24
{
25
26
27
    private $patterns = array();
28
29
    /**
30
     * Add an extra patter object to the stack for later use
31
     *
32
     * @param PatternInterface $pattern
33
     * @param string           $alias
34
     */
35
    public function addPattern(PatternInterface $pattern, $alias)
36
    {
37
        $this->patterns[$alias] = $pattern;
38
    }
39
40
    /**
41
     * A front-end for running pattern operations that are loaded on to the stack
42
     *
43
     * @param string        $alias
44
     * @param ReportBuilder $context
45
     * @return boolean Success condition
46
     * @throws \Exception when pattern not available
47
     */
48
    public function run($alias, ReportBuilder &$context)
49
    {
50
        if (isset($this->patterns[$alias])) {
51
            $this->patterns[$alias]->run($context);
52
            
53
            return true;
54
        } else {
55
            throw new \Exception('Report pattern is not registered: ' . $alias);
56
        }
57
    }
58
59
    /**
60
     * Get a simple array list of the currently loaded pattern objects
61
     *
62
     * @return array
63
     */
64
    public function getPatternsLoaded()
65
    {
66
        return array_keys($this->patterns);
67
    }
68
}
69

Service/ReportStyle.php 1 location

@@ 23-69 (lines=47) @@
20
 *
21
 * @author Simon Ball <simonball at simonball dot me>
22
 */
23
class ReportStyle
24
{
25
    private $styles = array();
26
27
    /**
28
     * Add an extra styler object to the stack for later use
29
     *
30
     * @param StyleInterface $style
31
     * @param string         $alias
32
     */
33
    public function addStyle(StyleInterface $style, $alias)
34
    {
35
        $this->styles[$alias] = $style;
36
    }
37
38
    /**
39
     * A front-end for running style operations that are loaded on to the stack
40
     *
41
     * @param string        $alias
42
     * @param ReportBuilder $context
43
     * @param string        $coordString
44
     * @param array         $options
45
     * @return boolean Success condition
46
     * @throws \Exception when style function not available
47
     */
48
    public function run($alias, ReportBuilder &$context, $coordString, $options = array())
49
    {
50
51
        if (isset($this->styles[$alias])) {
52
            $this->styles[$alias]->run($context, $coordString, $options);
53
54
            return true;
55
        } else {
56
            throw new \Exception('Report style is not registered: ' . $alias);
57
        }
58
    }
59
60
    /**
61
     * Get a simple array list of the currently loaded style objects
62
     *
63
     * @return array
64
     */
65
    public function getStylesLoaded()
66
    {
67
        return array_keys($this->styles);
68
    }
69
}
70

Service/ReportQuery.php 1 location

@@ 22-66 (lines=45) @@
19
 *
20
 * @author Simon Ball <simonball at simonball dot me>
21
 */
22
class ReportQuery
23
{
24
25
26
    private $queries = array();
27
28
    /**
29
     * Add an extra patter object to the stack for later use
30
     *
31
     * @param QueryInterface $query
32
     * @param string           $alias
33
     */
34
    public function addQuery(QueryInterface $query, $alias)
35
    {
36
        $this->queries[$alias] = $query;
37
    }
38
39
    /**
40
     * A front-end for running pattern operations that are loaded on to the stack
41
     *
42
     * @param string        $alias
43
     * @param ReportBuilder $context
44
     * @return boolean Success condition
45
     * @throws \Exception when pattern not available
46
     */
47
    public function get($alias)
48
    {
49
        if (isset($this->queries[$alias])) {
50
            
51
            return $this->queries[$alias];
52
        } else {
53
            throw new \Exception('Query type is not registered: ' . $alias);
54
        }
55
    }
56
57
    /**
58
     * Get a simple array list of the currently loaded pattern objects
59
     *
60
     * @return array
61
     */
62
    public function getQueriesLoaded()
63
    {
64
        return array_keys($this->queries);
65
    }
66
}
67