Aude has uploaded a new change for review. https://gerrit.wikimedia.org/r/246681
Change subject: Split up methods in GeoDataDataUpdate ...................................................................... Split up methods in GeoDataDataUpdate Change-Id: I80128adfcf7985c519743fa86f9fc39916009385 --- M repo/includes/DataUpdates/GeoDataDataUpdate.php 1 file changed, 57 insertions(+), 24 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikibase refs/changes/81/246681/1 diff --git a/repo/includes/DataUpdates/GeoDataDataUpdate.php b/repo/includes/DataUpdates/GeoDataDataUpdate.php index f3f0f43..e5184c3 100644 --- a/repo/includes/DataUpdates/GeoDataDataUpdate.php +++ b/repo/includes/DataUpdates/GeoDataDataUpdate.php @@ -104,41 +104,37 @@ $coordinatesOutput = isset( $parserOutput->geoData ) ?: new CoordinatesOutput(); if ( $coordinatesOutput->getPrimary() === false ) { - $primaryCoordKey = $this->addPrimaryCoordinate( $coordinatesOutput ); - } + $primaryCoordKey = $this->findPrimaryCoordinateKey(); - foreach ( $this->coordinates as $key => $coordinates ) { - if ( $key !== $primaryCoordKey ) { - foreach ( $coordinates as $coordinate ) { - $coordinatesOutput->addSecondary( $coordinate ); - } + if ( $primaryCoordKey !== null ) { + $this->addPrimaryCoordinate( + $coordinatesOutput, + $primaryCoordKey + ); } } + + $this->addSecondaryCoordinates( $coordinatesOutput, $primaryCoordKey ); $parserOutput->geoData = $coordinatesOutput; } /** - * @param CoordinatesOutput $coordinatesOutput - * * @return string|null Array key for Coord selected as primary. */ - private function addPrimaryCoordinate( CoordinatesOutput $coordinatesOutput ) { + private function findPrimaryCoordinateKey() { foreach ( $this->preferredProperties as $propertyIdString ) { $key = $this->makeCoordinateKey( $propertyIdString, Statement::RANK_PREFERRED ); - - $preferred = isset( $this->coordinates[$key] ) ? $this->coordinates[$key] : array(); - $preferredCount = count( $preferred ); + $preferredCount = $this->getCoordinatesGroupCount( $key ); if ( $preferredCount === 1 ) { - $primaryCoordinate = $preferred[0]; + return $key; } elseif ( $preferredCount === 0 ) { $key = $this->makeCoordinateKey( $propertyIdString, Statement::RANK_NORMAL ); - $normal = isset( $this->coordinates[$key] ) ? $this->coordinates[$key] : array(); - $normalCount = count( $normal ); + $normalCount = $this->getCoordinatesGroupCount( $key ); if ( $normalCount === 1 ) { - $primaryCoordinate = $normal[0]; + return $key; } elseif ( $normalCount > 1 ) { // multiple normal coordinates return null; @@ -147,19 +143,56 @@ // multiple preferred coordinates return null; } - - if ( isset( $primaryCoordinate ) ) { - $primaryCoordinate->primary = true; - $coordinatesOutput->addPrimary( $primaryCoordinate ); - - return $key; - } } return null; } /** + * @param string $key + * + * @return int + */ + private function getCoordinatesGroupCount( $key ) { + if ( isset( $this->coordinates[$key] ) ) { + return count( $this->coordinates[$key] ); + } + + return 0; + } + + /** + * @param CoordinatesOutput $coordinatesOutput + * @param string $key + */ + private function addPrimaryCoordinate( + CoordinatesOutput $coordinatesOutput, + $primaryCoordKey + ) { + $primaryCoordinate = $this->coordinates[$primaryCoordKey][0]; + $primaryCoordinate->primary = true; + + $coordinatesOutput->addPrimary( $primaryCoordinate ); + } + + /** + * @param CoordinatesOutput $coordinatesOutput + * @param string|null $primaryCoordKey + */ + private function addSecondaryCoordinates( + CoordinatesOutput $coordinatesOutput, + $primaryCoordKey + ) { + foreach ( $this->coordinates as $key => $coords ) { + if ( $key !== $primaryCoordKey ) { + foreach ( $coords as $coord ) { + $coordinatesOutput->addSecondary( $coord ); + } + } + } + } + + /** * @param string $propertyIdString * @param int $rank * -- To view, visit https://gerrit.wikimedia.org/r/246681 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I80128adfcf7985c519743fa86f9fc39916009385 Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/extensions/Wikibase Gerrit-Branch: master Gerrit-Owner: Aude <aude.w...@gmail.com> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits