TableFactory::createColumn()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 11

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 6

Importance

Changes 0
Metric Value
dl 0
loc 11
ccs 0
cts 7
cp 0
rs 9.9
c 0
b 0
f 0
cc 2
nc 2
nop 2
crap 6
1
<?php
2
namespace TildBJ\Seeder\Factory;
3
4
/***************************************************************
5
 *
6
 *  Copyright notice
7
 *
8
 *  (c) 2016 Dennis Römmich <[email protected]>
9
 *
10
 *  All rights reserved
11
 *
12
 *  This script is part of the TYPO3 project. The TYPO3 project is
13
 *  free software; you can redistribute it and/or modify
14
 *  it under the terms of the GNU General Public License as published by
15
 *  the Free Software Foundation; either version 3 of the License, or
16
 *  (at your option) any later version.
17
 *
18
 *  The GNU General Public License can be found at
19
 *  http://www.gnu.org/copyleft/gpl.html.
20
 *
21
 *  This script is distributed in the hope that it will be useful,
22
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
23
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
24
 *  GNU General Public License for more details.
25
 *
26
 *  This copyright notice MUST APPEAR in all copies of the script!
27
 ***************************************************************/
28
use TildBJ\Seeder\Provider\TableConfiguration;
29
use TildBJ\Seeder\Domain\Model;
30
use TYPO3\CMS\Core\Utility\GeneralUtility;
31
32
/**
33
 * Class TableFactory
34
 *
35
 * @package TildBJ\Seeder\Factory\TableFactory
36
 */
37
class TableFactory implements \TYPO3\CMS\Core\SingletonInterface
0 ignored issues
show
Coding Style introduced by
TableFactory does not seem to conform to the naming convention (Utils?$).

This check examines a number of code elements and verifies that they conform to the given naming conventions.

You can set conventions for local variables, abstract classes, utility classes, constant, properties, methods, parameters, interfaces, classes, exceptions and special methods.

Loading history...
38
{
39
    /**
40
     * @var array $tables
41
     */
42
    protected static $tables = [];
43
44
    /**
45
     * @var array $columns
46
     */
47
    protected static $columns = [];
48
49
    /**
50
     * Provides a Table
51
     *
52
     * @param string $tableName
53
     * @return Model\TableInterface
54
     */
55
    public static function createTable($tableName)
56
    {
57
        /** @var TableConfiguration $tableConfiguration */
58
        $tableConfiguration = GeneralUtility::makeInstance(TableConfiguration::class, $tableName);
59
        if (!in_array($tableName, self::$tables)) {
60
            self::$tables[$tableName] = new Model\Table($tableConfiguration);
61
        }
62
63
        return self::$tables[$tableName];
64
    }
65
66
    /**
67
     * createColumn
68
     *
69
     * @param string $tableName
70
     * @param string $columnName
71
     * @return Model\ColumnInterface
72
     */
73
    public static function createColumn($tableName, $columnName)
74
    {
75
        $tableConfiguration = new TableConfiguration($tableName);
76
        $columnConfiguration = $tableConfiguration->getColumnConfiguration($columnName);
77
        $key = $tableName . '.' . key($columnConfiguration);
78
        if (!in_array($key, self::$columns)) {
79
            self::$columns[$key] = self::getColumn($columnName, $columnConfiguration[key($columnConfiguration)]);
80
        }
81
82
        return self::$columns[$key];
83
    }
84
85
    /**
86
     * @param string $columnName
87
     * @param array $configuration
88
     * @return Model\ColumnInterface
89
     */
90
    protected static function getColumn($columnName, $configuration)
91
    {
92
        $column = null;
0 ignored issues
show
Unused Code introduced by
$column is not used, you could remove the assignment.

This check looks for variable assignements that are either overwritten by other assignments or where the variable is not used subsequently.

$myVar = 'Value';
$higher = false;

if (rand(1, 6) > 3) {
    $higher = true;
} else {
    $higher = false;
}

Both the $myVar assignment in line 1 and the $higher assignment in line 2 are dead. The first because $myVar is never used and the second because $higher is always overwritten for every possible time line.

Loading history...
93
        switch ($configuration['type']) {
94
            case 'input':
95
                $column = new Model\Column\Input($columnName, $configuration);
96
                break;
97
            case 'text':
98
                $column = new Model\Column\Text($columnName, $configuration);
99
                break;
100
            case 'check':
101
                $column = new Model\Column\Check($columnName, $configuration);
102
                break;
103
            case 'radio':
104
                $column = new Model\Column\Radio($columnName, $configuration);
105
                break;
106
            case 'select':
107
                $column = new Model\Column\Select($columnName, $configuration);
108
                break;
109
            case 'group':
110
                $column = new Model\Column\Group($columnName, $configuration);
111
                break;
112
            case 'none':
113
                $column = new Model\Column\None($columnName, $configuration);
114
                break;
115
            case 'inline':
116
                $column = new Model\Column\Inline($columnName, $configuration);
117
                break;
118
            case 'passthrough':
119
            case 'user':
120
            case 'flex':
121
            default:
122
                $column = new Model\Column\None($columnName, $configuration);
123
        }
124
125
        return $column;
126
    }
127
}
128