Addshore has uploaded a new change for review.
https://gerrit.wikimedia.org/r/231534
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(-)
git pull
ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/WikibaseQualityExternalValidation
refs/changes/34/231534/2
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: newchange
Gerrit-Change-Id: Ie5c3870914519be49601184b2192ae253c84a741
Gerrit-PatchSet: 2
Gerrit-Project: mediawiki/extensions/WikibaseQualityExternalValidation
Gerrit-Branch: master
Gerrit-Owner: Addshore <[email protected]>
Gerrit-Reviewer: jenkins-bot <>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits