Code Duplication    Length = 25-32 lines in 2 locations

lib/Doctrine/DBAL/Schema/Comparator.php 2 locations

@@ 316-340 (lines=25) @@
313
     *
314
     * @return void
315
     */
316
    private function detectColumnRenamings(TableDiff $tableDifferences)
317
    {
318
        $renameCandidates = [];
319
        foreach ($tableDifferences->addedColumns as $addedColumnName => $addedColumn) {
320
            foreach ($tableDifferences->removedColumns as $removedColumn) {
321
                if (count($this->diffColumn($addedColumn, $removedColumn)) == 0) {
322
                    $renameCandidates[$addedColumn->getName()][] = [$removedColumn, $addedColumn, $addedColumnName];
323
                }
324
            }
325
        }
326
327
        foreach ($renameCandidates as $candidateColumns) {
328
            if (count($candidateColumns) == 1) {
329
                list($removedColumn, $addedColumn) = $candidateColumns[0];
330
                $removedColumnName = strtolower($removedColumn->getName());
331
                $addedColumnName = strtolower($addedColumn->getName());
332
333
                if ( ! isset($tableDifferences->renamedColumns[$removedColumnName])) {
334
                    $tableDifferences->renamedColumns[$removedColumnName] = $addedColumn;
335
                    unset($tableDifferences->addedColumns[$addedColumnName]);
336
                    unset($tableDifferences->removedColumns[$removedColumnName]);
337
                }
338
            }
339
        }
340
    }
341
342
    /**
343
     * Try to find indexes that only changed their name, rename operations maybe cheaper than add/drop
@@ 350-381 (lines=32) @@
347
     *
348
     * @return void
349
     */
350
    private function detectIndexRenamings(TableDiff $tableDifferences)
351
    {
352
        $renameCandidates = [];
353
354
        // Gather possible rename candidates by comparing each added and removed index based on semantics.
355
        foreach ($tableDifferences->addedIndexes as $addedIndexName => $addedIndex) {
356
            foreach ($tableDifferences->removedIndexes as $removedIndex) {
357
                if (! $this->diffIndex($addedIndex, $removedIndex)) {
358
                    $renameCandidates[$addedIndex->getName()][] = [$removedIndex, $addedIndex, $addedIndexName];
359
                }
360
            }
361
        }
362
363
        foreach ($renameCandidates as $candidateIndexes) {
364
            // If the current rename candidate contains exactly one semantically equal index,
365
            // we can safely rename it.
366
            // Otherwise it is unclear if a rename action is really intended,
367
            // therefore we let those ambiguous indexes be added/dropped.
368
            if (count($candidateIndexes) === 1) {
369
                list($removedIndex, $addedIndex) = $candidateIndexes[0];
370
371
                $removedIndexName = strtolower($removedIndex->getName());
372
                $addedIndexName = strtolower($addedIndex->getName());
373
374
                if (! isset($tableDifferences->renamedIndexes[$removedIndexName])) {
375
                    $tableDifferences->renamedIndexes[$removedIndexName] = $addedIndex;
376
                    unset($tableDifferences->addedIndexes[$addedIndexName]);
377
                    unset($tableDifferences->removedIndexes[$removedIndexName]);
378
                }
379
            }
380
        }
381
    }
382
383
    /**
384
     * @param \Doctrine\DBAL\Schema\ForeignKeyConstraint $key1