Completed
Push — ezp25946-migrate_files_to_othe... ( e1d3cb...7924de )
by
unknown
12:27
created

FileMigrator   A

Complexity

Total Complexity 8

Size/Duplication

Total Lines 51
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 7

Importance

Changes 0
Metric Value
dl 0
loc 51
rs 10
c 0
b 0
f 0
wmc 8
lcom 1
cbo 7

1 Method

Rating   Name   Duplication   Size   Complexity  
C migrateFile() 0 48 8
1
<?php
2
3
/**
4
 * File containing the FileMigrator class.
5
 *
6
 * @copyright Copyright (C) eZ Systems AS. All rights reserved.
7
 * @license For full copyright and license information view LICENSE file distributed with this source code.
8
 */
9
namespace eZ\Bundle\EzPublishIOBundle\Migration\FileMigrator;
10
11
use eZ\Bundle\EzPublishIOBundle\Migration\FileMigratorInterface;
12
use eZ\Bundle\EzPublishIOBundle\Migration\MigrationHandler;
13
use eZ\Publish\Core\IO\Exception\BinaryFileNotFoundException;
14
use eZ\Publish\SPI\IO\BinaryFile;
15
use eZ\Publish\SPI\IO\BinaryFileCreateStruct;
16
17
class FileMigrator extends MigrationHandler implements FileMigratorInterface
18
{
19
    public function migrateFile(BinaryFile $binaryFile)
20
    {
21
        try {
22
            $binaryFileResource = $this->fromBinarydataHandler->getResource($binaryFile->id);
23
        } catch (BinaryFileNotFoundException $e) {
24
            if (isset($this->logger)) {
25
                $this->logger->error("Cannot load binary data for: '{$binaryFile->id}'. Error: " . $e->getMessage());
26
            }
27
28
            return false;
29
        }
30
31
        $binaryFileCreateStruct = new BinaryFileCreateStruct();
32
        $binaryFileCreateStruct->id = $binaryFile->id;
33
        $binaryFileCreateStruct->setInputStream($binaryFileResource);
34
35
        try {
36
            $this->toBinarydataHandler->create($binaryFileCreateStruct);
37
        } catch (\RuntimeException $e) {
38
            if (isset($this->logger)) {
39
                $this->logger->error("Cannot migrate binary data for: '{$binaryFile->id}'. Error: " . $e->getMessage());
40
            }
41
42
            return false;
43
        }
44
45
        $metadataCreateStruct = new BinaryFileCreateStruct();
46
        $metadataCreateStruct->id = $binaryFile->id;
47
        $metadataCreateStruct->size = $binaryFile->size;
48
        $metadataCreateStruct->mtime = $binaryFile->mtime;
49
        $metadataCreateStruct->mimeType = $this->fromMetadataHandler->getMimeType($binaryFile->id);
50
51
        try {
52
            $this->toMetadataHandler->create($metadataCreateStruct);
53
        } catch (\RuntimeException $e) {
54
            if (isset($this->logger)) {
55
                $this->logger->error("Cannot migrate metadata for: '{$binaryFile->id}'. Error: " . $e->getMessage());
56
            }
57
58
            return false;
59
        }
60
61
        if (isset($this->logger)) {
62
            $this->logger->info("Successfully migrated: '{$binaryFile->id}'");
63
        }
64
65
        return true;
66
    }
67
}
68