Addshore has submitted this change and it was merged.

Change subject: Use DataModel ~4.0
......................................................................


Use DataModel ~4.0

Change-Id: Ie5c3870914519be49601184b2192ae253c84a741
---
M composer.json
M includes/CrossCheck/CrossCheckInteractor.php
M includes/CrossCheck/CrossChecker.php
M tests/phpunit/CrossCheck/CrossCheckerTest.php
M tests/phpunit/Violations/CrossCheckViolationFormatterTest.php
5 files changed, 48 insertions(+), 17 deletions(-)

Approvals:
  Thiemo Mättig (WMDE): Verified; Looks good to me, approved



diff --git a/composer.json b/composer.json
index 539f814..89ebcf0 100644
--- a/composer.json
+++ b/composer.json
@@ -15,7 +15,7 @@
        },
        "require": {
                "php": ">=5.3.0",
-               "wikibase/data-model": "~3.0",
+               "wikibase/data-model": "~4.0",
                "wikibase/data-model-services": "~1.1",
                "serialization/serialization": "3.*,>=3.2.1",
                "wikibase/data-model-serialization": "~1.3",
diff --git a/includes/CrossCheck/CrossCheckInteractor.php 
b/includes/CrossCheck/CrossCheckInteractor.php
index b79f09d..fd04dae 100644
--- a/includes/CrossCheck/CrossCheckInteractor.php
+++ b/includes/CrossCheck/CrossCheckInteractor.php
@@ -5,6 +5,7 @@
 use InvalidArgumentException;
 use Wikibase\DataModel\Services\Lookup\EntityLookup;
 use Wikibase\DataModel\Services\Statement\StatementGuidParser;
+use Wikibase\DataModel\Statement\StatementListProvider;
 use Wikimedia\Assert\Assert;
 use Wikibase\DataModel\Entity\Entity;
 use Wikibase\DataModel\Entity\EntityId;
@@ -92,8 +93,12 @@
         * @return CrossCheckResultList
         */
        public function crossCheckEntity( Entity $entity ) {
-               $statements = $entity->getStatements();
-               return $this->crossChecker->crossCheckStatements( $entity, 
$statements );
+               if ( $entity instanceof StatementListProvider ) {
+                       $statementList = $entity->getStatements();
+               } else {
+                       $statementList = new StatementList();
+               }
+               return $this->crossChecker->crossCheckStatements( $entity, 
$statementList );
        }
 
        /**
@@ -168,14 +173,19 @@
        public function crossCheckEntityWithProperties( Entity $entity, array 
$propertyIds ) {
                Assert::parameterElementType( 
'Wikibase\DataModel\Entity\PropertyId',  $propertyIds, '$propertyIds' );
 
-               $statements = new StatementList();
-               foreach ( $entity->getStatements() as $statement ) {
+               $entityStatements = array();
+               if ( $entity instanceof StatementListProvider ) {
+                       $entityStatements = $entity->getStatements()->toArray();
+               }
+
+               $statementList = new StatementList();
+               foreach ( $entityStatements as $statement ) {
                        if ( in_array( $statement->getPropertyId(), 
$propertyIds ) ) {
-                               $statements->addStatement( $statement );
+                               $statementList->addStatement( $statement );
                        }
                }
 
-               return $this->crossChecker->crossCheckStatements( $entity, 
$statements );
+               return $this->crossChecker->crossCheckStatements( $entity, 
$statementList );
        }
 
        /**
@@ -253,14 +263,19 @@
                $entity = $this->entityLookup->getEntity( $entityId );
 
                if ( $entity ) {
-                       $statements = new StatementList();
-                       foreach ( $entity->getStatements() as $statement ) {
+                       $entityStatements = array();
+                       if ( $entity instanceof StatementListProvider ) {
+                               $entityStatements = 
$entity->getStatements()->toArray();
+                       }
+
+                       $statementList = new StatementList();
+                       foreach ( $entityStatements as $statement ) {
                                if ( in_array( $statement->getGuid(), 
$clamGuids ) ) {
-                                       $statements->addStatement( $statement );
+                                       $statementList->addStatement( 
$statement );
                                }
                        }
 
-                       return $this->crossChecker->crossCheckStatements( 
$entity, $statements );
+                       return $this->crossChecker->crossCheckStatements( 
$entity, $statementList );
                }
        }
 
diff --git a/includes/CrossCheck/CrossChecker.php 
b/includes/CrossCheck/CrossChecker.php
index f7827f3..75f61b8 100644
--- a/includes/CrossCheck/CrossChecker.php
+++ b/includes/CrossCheck/CrossChecker.php
@@ -13,6 +13,7 @@
 use Wikibase\DataModel\Snak\PropertyValueSnak;
 use Wikibase\DataModel\Statement\Statement;
 use Wikibase\DataModel\Statement\StatementList;
+use Wikibase\DataModel\Statement\StatementListProvider;
 use 
WikibaseQuality\ExternalValidation\CrossCheck\ValueParser\ComparativeValueParser;
 use 
WikibaseQuality\ExternalValidation\CrossCheck\ValueParser\ComparativeValueParserFactory;
 use WikibaseQuality\ExternalValidation\CrossCheck\Comparer\DataValueComparer;
@@ -99,7 +100,10 @@
         * @throws InvalidArgumentException
         */
        public function crossCheckStatements( Entity $entity, StatementList 
$statements ) {
-               $statementsOfEntity = $entity->getStatements()->toArray();
+               $statementsOfEntity = array();
+               if ( $entity instanceof StatementListProvider ) {
+                       $statementsOfEntity = 
$entity->getStatements()->toArray();
+               }
                foreach ( $statements as $statement ) {
                        if ( !in_array( $statement, $statementsOfEntity ) ) {
                                throw new InvalidArgumentException( 'All 
statements in $statements must belong to the entity.' );
@@ -137,6 +141,10 @@
         */
        private function getApplicableDumps( Entity $entity ) {
                $applicableDumps = array();
+               if( !$entity instanceof StatementListProvider ) {
+                       return $applicableDumps;
+               }
+
                $identifierPropertyIds = 
$entity->getStatements()->getPropertyIds();
                $dumpMetaInformation = 
$this->dumpMetaInformationLookup->getWithIdentifierProperties(
                        $identifierPropertyIds
@@ -226,7 +234,7 @@
                ComparativeValueParser $comparativeValueParser
        ) {
                $resultList = new CrossCheckResultList();
-               foreach ( $statements as $statement ) {
+               foreach ( $statements->toArray() as $statement ) {
                        $comparisonResult = $this->compareStatement( 
$statement, $externalValues, $comparativeValueParser );
 
                        if ( $comparisonResult ) {
@@ -331,6 +339,10 @@
         */
        private function getExternalIds( Entity $entity, PropertyId 
$identifierPropertyId ) {
                $externalIds = array();
+               if( !$entity instanceof StatementListProvider ) {
+                       return $externalIds;
+               }
+
                $identifierStatements = 
$entity->getStatements()->getByPropertyId( $identifierPropertyId );
                $values = $this->getDataValues( $identifierStatements );
                foreach ( $values as $value ) {
@@ -348,6 +360,10 @@
         */
        private function isIdentifierProperty( PropertyId $identifierPropertyId 
) {
                $property = $this->entityLookup->getEntity( 
$identifierPropertyId );
+               if( !$property instanceof StatementListProvider ) {
+                       return false;
+               }
+
                $instanceOfPropertyId = new PropertyId( INSTANCE_OF_PID );
                $statements = $property->getStatements()->getByPropertyId( 
$instanceOfPropertyId );
                $values = $this->getDataValues( $statements );
@@ -370,7 +386,7 @@
         */
        private function getDataValues( StatementList $statementList ){
                $dataValues = array();
-               foreach ( $statementList as $statement ) {
+               foreach ( $statementList->toArray() as $statement ) {
                        $mainSnak = $statement->getMainSnak();
                        if ( $mainSnak instanceof PropertyValueSnak ) {
                                $dataValues[] = $mainSnak->getDataValue();
diff --git a/tests/phpunit/CrossCheck/CrossCheckerTest.php 
b/tests/phpunit/CrossCheck/CrossCheckerTest.php
index 3ecb32a..73b5b3e 100644
--- a/tests/phpunit/CrossCheck/CrossCheckerTest.php
+++ b/tests/phpunit/CrossCheck/CrossCheckerTest.php
@@ -143,13 +143,13 @@
        /**
         * @dataProvider crossCheckStatementsDataProvider
         */
-       public function testCrossCheckStatements( $entity, $statements, 
$expectedResults, $expectedException = null ) {
+       public function testCrossCheckStatements( $entity, $statementList, 
$expectedResults, $expectedException = null ) {
                // If exception is expected, set it so
                if ( $expectedException ) {
                        $this->setExpectedException( $expectedException );
                }
 
-               $results = $this->crossChecker->crossCheckStatements( $entity, 
$statements );
+               $results = $this->crossChecker->crossCheckStatements( $entity, 
$statementList );
 
                $this->runResultAssertions( $results, $expectedResults );
        }
diff --git a/tests/phpunit/Violations/CrossCheckViolationFormatterTest.php 
b/tests/phpunit/Violations/CrossCheckViolationFormatterTest.php
index 4976429..22aa9c9 100644
--- a/tests/phpunit/Violations/CrossCheckViolationFormatterTest.php
+++ b/tests/phpunit/Violations/CrossCheckViolationFormatterTest.php
@@ -340,7 +340,7 @@
 
        private function getEntityIdFormatterMock()
        {
-               $mock = $this->getMockBuilder('Wikibase\Lib\EntityIdFormatter')
+               $mock = 
$this->getMockBuilder('Wikibase\DataModel\Services\EntityId\EntityIdFormatter')
                ->setMethods(array('formatEntityId'))
                ->getMockForAbstractClass();
                $mock->expects($this->any())

-- 
To view, visit https://gerrit.wikimedia.org/r/231534
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: Ie5c3870914519be49601184b2192ae253c84a741
Gerrit-PatchSet: 4
Gerrit-Project: mediawiki/extensions/WikibaseQualityExternalValidation
Gerrit-Branch: master
Gerrit-Owner: Addshore <[email protected]>
Gerrit-Reviewer: Addshore <[email protected]>
Gerrit-Reviewer: Aude <[email protected]>
Gerrit-Reviewer: JanZerebecki <[email protected]>
Gerrit-Reviewer: Thiemo Mättig (WMDE) <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to