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

Reply via email to