Jeroen De Dauw has uploaded a new change for review. https://gerrit.wikimedia.org/r/83800
Change subject: Split method in ByPropertyValueEntityFinder ...................................................................... Split method in ByPropertyValueEntityFinder Change-Id: I7e692d82deb145d0f2f99bbbb8654f5b8413d581 --- M src/Wikibase/Query/ByPropertyValueEntityFinder.php 1 file changed, 30 insertions(+), 2 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/WikibaseQuery refs/changes/00/83800/1 diff --git a/src/Wikibase/Query/ByPropertyValueEntityFinder.php b/src/Wikibase/Query/ByPropertyValueEntityFinder.php index caf0a5a..a553a0f 100644 --- a/src/Wikibase/Query/ByPropertyValueEntityFinder.php +++ b/src/Wikibase/Query/ByPropertyValueEntityFinder.php @@ -68,14 +68,39 @@ * @throws InvalidArgumentException */ protected function findEntitiesGivenRawArguments( $propertyIdString, $valueString, $limit, $offset ) { + $this->assertIsValidLimit( $limit ); + $this->assertIsValidOffset( $offset ); + + $value = $this->getValueFromString( $valueString ); + $propertyId = $this->getPropertyIdFromString( $propertyIdString ); + + return $this->findByPropertyValue( $propertyId, $value, $limit, $offset ); + } + + protected function assertIsValidLimit( $limit ) { if ( !is_string( $limit ) || !ctype_digit( $limit ) || (int)$limit < 1 ) { throw new InvalidArgumentException( '$limit needs to be a string representing a strictly positive integer' ); } + } + protected function assertIsValidOffset( $offset ) { if ( !is_string( $offset ) || !ctype_digit( $offset ) ) { throw new InvalidArgumentException( '$offset needs to be a string representing a positive integer' ); } + } + protected function getValueFromString( $valueString ) { + $valueSerialization = $this->getValueSerialization( $valueString ); + + try { + return $this->dvFactory->newFromArray( $valueSerialization ); + } + catch ( RuntimeException $ex ) { + throw new InvalidArgumentException( $ex->getMessage(), 0, $ex ); + } + } + + protected function getValueSerialization( $valueString ) { if ( !is_string( $valueString ) ) { throw new InvalidArgumentException( '$valueString needs to be a string serialization of a DataValue' ); } @@ -86,9 +111,12 @@ throw new InvalidArgumentException( 'The provided value needs to be a serialization of a DataValue' ); } + return $valueSerialization; + } + + protected function getPropertyIdFromString( $propertyIdString ) { try { $propertyId = $this->idParser->parse( $propertyIdString ); - $value = $this->dvFactory->newFromArray( $valueSerialization ); } catch ( RuntimeException $ex ) { throw new InvalidArgumentException( $ex->getMessage(), 0, $ex ); @@ -98,7 +126,7 @@ throw new InvalidArgumentException( 'The provided EntityId needs to be a PropertyId' ); } - return $this->findByPropertyValue( $propertyId, $value, $limit, $offset ); + return $propertyId; } /** -- To view, visit https://gerrit.wikimedia.org/r/83800 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I7e692d82deb145d0f2f99bbbb8654f5b8413d581 Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/extensions/WikibaseQuery Gerrit-Branch: master Gerrit-Owner: Jeroen De Dauw <jeroended...@gmail.com> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits