Completed
Push — master ( 0f5a81...3041fb )
by Jeroen De
9s
created

EntityStoreEntityHandler   A

Complexity

Total Complexity 7

Size/Duplication

Total Lines 52
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 9

Test Coverage

Coverage 62.5%

Importance

Changes 0
Metric Value
wmc 7
c 0
b 0
f 0
lcom 1
cbo 9
dl 0
loc 52
ccs 20
cts 32
cp 0.625
rs 10

5 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 3 1
A getHandlingMessage() 0 3 1
A handleEntityPage() 0 10 3
A propertyRowFromEntityPage() 0 12 1
A itemRowFromEntityPage() 0 14 1
1
<?php
2
3
namespace Queryr\Replicator\Importer\EntityHandlers;
4
5
use Queryr\EntityStore\Data\EntityPageInfo;
6
use Queryr\EntityStore\Data\PropertyInfo;
7
use Queryr\EntityStore\Data\PropertyRow;
8
use Queryr\EntityStore\EntityStore;
9
use Queryr\EntityStore\InstanceOfTypeExtractor;
10
use Queryr\EntityStore\ItemRowFactory;
11
use Queryr\Replicator\Importer\EntityPageHandler;
12
use Queryr\Replicator\Importer\FakingEntitySerializer;
13
use Queryr\Replicator\Model\EntityPage;
14
use Wikibase\DataModel\Entity\EntityDocument;
15
use Wikibase\DataModel\Entity\Item;
16
use Wikibase\DataModel\Entity\Property;
17
18
/**
19
 * @licence GNU GPL v2+
20
 * @author Jeroen De Dauw < [email protected] >
21
 */
22
class EntityStoreEntityHandler implements EntityPageHandler {
23
24
	private $entityStore;
25
26 1
	public function __construct( EntityStore $entityStore ) {
27 1
		$this->entityStore = $entityStore;
28 1
	}
29
30 1
	public function getHandlingMessage( EntityDocument $entity ): string {
31 1
		return 'Inserting into Dump store';
32
	}
33
34 1
	public function handleEntityPage( EntityDocument $entity, EntityPage $entityPage ) {
35 1
		if ( $entity instanceof Item ) {
36 1
			$itemRow = $this->itemRowFromEntityPage( $entity, $entityPage );
37 1
			$this->entityStore->storeItemRow( $itemRow );
38
		}
39
		elseif ( $entity instanceof Property ) {
40
			$propertyRow = $this->propertyRowFromEntityPage( $entity, $entityPage );
41
			$this->entityStore->storePropertyRow( $propertyRow );
42
		}
43 1
	}
44
45 1
	private function itemRowFromEntityPage( Item $item, EntityPage $entityPage ) {
46 1
		$rowFactory = new ItemRowFactory(
47 1
			new FakingEntitySerializer( json_decode( $entityPage->getEntityJson(), true ) ),
48 1
			new InstanceOfTypeExtractor()
49
		);
50
51 1
		return $rowFactory->newFromItemAndPageInfo(
52 1
			$item,
53 1
			( new EntityPageInfo() )
54 1
				->setPageTitle( $entityPage->getTitle() )
55 1
				->setRevisionId( $entityPage->getRevisionId() )
56 1
				->setRevisionTime( $entityPage->getRevisionTime() )
57
		);
58
	}
59
60
	private function propertyRowFromEntityPage( Property $property, EntityPage $entityPage ) {
61
		return new PropertyRow(
62
			$entityPage->getEntityJson(),
63
			new PropertyInfo(
64
				$property->getId()->getNumericId(),
65
				$entityPage->getTitle(),
66
				$entityPage->getRevisionId(),
67
				$entityPage->getRevisionTime(),
68
				$property->getDataTypeId()
69
			)
70
		);
71
	}
72
73
}