1 | <?php |
||
9 | class PrimaryKey extends Analyse implements AnalyseInterface |
||
10 | { |
||
11 | /** |
||
12 | * @var string The description for fields with duplicated primary keys. |
||
13 | */ |
||
14 | const ERROR_DUPLICATE_PRIMARY_KEY = 'There are <strong>%d</strong> rows that have duplicated primary keys:'; |
||
15 | |||
16 | /** |
||
17 | * @var array The current CSV row being analysed. |
||
18 | */ |
||
19 | private $currentCsvRow; |
||
20 | |||
21 | /** |
||
22 | * @var int The position of the current CSV row row in the CSV file. |
||
23 | */ |
||
24 | private $rowNumber; |
||
25 | |||
26 | /** |
||
27 | * @var array The primary keys for every row in the file. |
||
28 | */ |
||
29 | private $fileKeys; |
||
30 | |||
31 | /** |
||
32 | * @var array The primary key parts for the current row. |
||
33 | */ |
||
34 | private $rowKeyParts; |
||
35 | |||
36 | /** |
||
37 | * @var array The primary key fields. |
||
38 | */ |
||
39 | private $primaryKeyFields; |
||
40 | |||
41 | /** |
||
42 | * @var string The name of the primary key field currently being analysed. |
||
43 | */ |
||
44 | private $primaryKeyFieldName; |
||
45 | |||
46 | /** |
||
47 | * @var string The hash of the data taken from the primary key fields in the current CSV row. |
||
48 | */ |
||
49 | private $hash; |
||
50 | |||
51 | |||
52 | /** |
||
53 | * Validate that any specified primary key constraints have been met. |
||
54 | * |
||
55 | * @return boolean Does the data meet the primary key constraints. |
||
56 | * |
||
57 | * |
||
58 | */ |
||
59 | 28 | public function validate() |
|
91 | |||
92 | |||
93 | /** |
||
94 | * Set the primary key fields. |
||
95 | * |
||
96 | * @return void |
||
97 | */ |
||
98 | 28 | private function setPrimaryKeyFields() |
|
102 | |||
103 | |||
104 | /** |
||
105 | * Check that there is a column in the JSON table schema file for the current primary key field. |
||
106 | * |
||
107 | * @return void |
||
108 | * |
||
109 | * @throws \Exception if the primary key was not in the schema file. |
||
110 | */ |
||
111 | 28 | private function checkColumnExistsInSchema() |
|
118 | |||
119 | |||
120 | /** |
||
121 | * Get the data in the CSV column for the current primary key column. |
||
122 | * |
||
123 | * @return string The data in the column. |
||
124 | */ |
||
125 | 28 | private function csvDataForPrimaryKeyColumn() |
|
130 | |||
131 | |||
132 | /** |
||
133 | * Get the data in the primary key columns for the current CSV row. |
||
134 | * |
||
135 | * @return void |
||
136 | */ |
||
137 | 28 | private function getPrimaryKeyDataForRow() |
|
147 | |||
148 | |||
149 | /** |
||
150 | * Create a hash of the data taken from the primary key fields in the current CSV row. |
||
151 | * |
||
152 | * @return void |
||
153 | */ |
||
154 | 28 | private function createHash() |
|
158 | |||
159 | |||
160 | /** |
||
161 | * Check whether the current hash has already been created for this file. |
||
162 | * |
||
163 | * @return boolean|int False if this row's primary key hash is unique |
||
164 | * or the number of the row with the same hash if it's not. |
||
165 | */ |
||
166 | 28 | private function isHashUnique() |
|
170 | |||
171 | |||
172 | /** |
||
173 | * Handle the current hash not being unique. |
||
174 | * |
||
175 | * @param int $existingKey The number of the row with the same hash. |
||
176 | * |
||
177 | * @return void |
||
178 | */ |
||
179 | private function handleDuplicateHash($existingKey) |
||
188 | } |
This check looks for a call to a parent method whose name is different than the method from which it is called.
Consider the following code:
The
getFirstName()
method in theSon
calls the wrong method in the parent class.