Aude has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/189652

Change subject: Get rid of PropertyClaimsRenderer and 
PropertyClaimsRendererFactory
......................................................................

Get rid of PropertyClaimsRenderer and PropertyClaimsRendererFactory

can be consolidated further with EntityStatementsRenderer

Change-Id: I16fe16bad9adbc91116cdcc70159ecd7bcf18c0c
---
A client/includes/DataAccess/EntityStatementsBasicRenderer.php
M client/includes/DataAccess/EntityStatementsRenderer.php
R 
client/includes/DataAccess/PropertyParserFunction/EntityStatementsRendererFactory.php
M client/includes/DataAccess/PropertyParserFunction/LanguageAwareRenderer.php
D client/includes/DataAccess/PropertyParserFunction/PropertyClaimsRenderer.php
M client/includes/DataAccess/PropertyParserFunction/Runner.php
M client/includes/DataAccess/PropertyParserFunction/VariantsAwareRenderer.php
M client/includes/WikibaseClient.php
8 files changed, 155 insertions(+), 141 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikibase 
refs/changes/52/189652/1

diff --git a/client/includes/DataAccess/EntityStatementsBasicRenderer.php 
b/client/includes/DataAccess/EntityStatementsBasicRenderer.php
new file mode 100644
index 0000000..0163321
--- /dev/null
+++ b/client/includes/DataAccess/EntityStatementsBasicRenderer.php
@@ -0,0 +1,134 @@
+<?php
+
+namespace Wikibase\DataAccess;
+
+use InvalidArgumentException;
+use Language;
+use Wikibase\Client\Usage\UsageAccumulator;
+use Wikibase\DataAccess\PropertyIdResolver;
+use Wikibase\DataAccess\SnaksFinder;
+use Wikibase\DataModel\Entity\EntityId;
+use Wikibase\DataModel\Entity\EntityIdValue;
+use Wikibase\DataModel\Snak\PropertyValueSnak;
+use Wikibase\DataModel\Snak\Snak;
+use Wikibase\Lib\PropertyLabelNotResolvedException;
+use Wikibase\Lib\SnakFormatter;
+
+/**
+ * Renders the main Snaks associated with a given Property on an Entity.
+ *
+ * @since 0.5
+ *
+ * @licence GNU GPL v2+
+ *
+ * @author Marius Hoch < h...@online.de >
+ */
+class EntityStatementsBasicRenderer implements EntityStatementsRenderer {
+
+       /**
+        * @var Language
+        */
+       private $language;
+
+       /**
+        * @var PropertyIdResolver
+        */
+       private $propertyIdResolver;
+
+       /**
+        * @var SnaksFinder
+        */
+       private $snaksFinder;
+
+       /**
+        * @var SnakFormatter
+        */
+       private $snakFormatter;
+
+       /**
+        * @var UsageAccumulator
+        */
+       private $usageAccumulator;
+
+       /**
+        * @param Language $language
+        * @param PropertyIdResolver $propertyIdResolver
+        * @param SnaksFinder $snaksFinder
+        * @param SnakFormatter $snakFormatter
+        * @param UsageAccumulator $usageAccumulator
+        */
+       public function __construct(
+               Language $language,
+               PropertyIdResolver $propertyIdResolver,
+               SnaksFinder $snaksFinder,
+               SnakFormatter $snakFormatter,
+               UsageAccumulator $usageAccumulator
+       ) {
+               $this->language = $language;
+               $this->propertyIdResolver = $propertyIdResolver;
+               $this->snaksFinder = $snaksFinder;
+               $this->snakFormatter = $snakFormatter;
+               $this->usageAccumulator = $usageAccumulator;
+       }
+
+       /**
+        * @param EntityId $entityId
+        * @param string $propertyLabelOrId property label or ID (pXXX)
+        * @param int[]|null $acceptableRanks
+        *
+        * @throws PropertyLabelNotResolvedException
+        * @return string
+        */
+       public function render( EntityId $entityId, $propertyLabelOrId, 
$acceptableRanks = null ) {
+               $propertyId = $this->propertyIdResolver->resolvePropertyId(
+                       $propertyLabelOrId,
+                       $this->language->getCode()
+               );
+
+               $snaks = $this->snaksFinder->findSnaks(
+                       $entityId,
+                       $propertyId,
+                       $acceptableRanks
+               );
+               $this->trackUsage( $snaks );
+
+               return $this->formatSnaks( $snaks );
+       }
+
+       /**
+        * @param Snak[] $snaks
+        *
+        * @return string wikitext
+        */
+       private function formatSnaks( array $snaks ) {
+               $formattedValues = array();
+
+               foreach ( $snaks as $snak ) {
+                       $formattedValues[] = $this->snakFormatter->formatSnak( 
$snak );
+               }
+
+               return $this->language->commaList( $formattedValues );
+       }
+
+       /**
+        * @param Snak[] $snaks
+        */
+       private function trackUsage( array $snaks ) {
+               // Note: we track any EntityIdValue as a label usage.
+               // This is making assumptions about what the respective 
formatter actually does.
+               // Ideally, the formatter itself would perform the tracking, 
but that seems nasty to model.
+
+               foreach ( $snaks as $snak ) {
+                       if ( !( $snak instanceof PropertyValueSnak) ) {
+                               continue;
+                       }
+
+                       $value = $snak->getDataValue();
+
+                       if ( $value instanceof EntityIdValue ) {
+                               $this->usageAccumulator->addLabelUsage( 
$value->getEntityId() );
+                       }
+               }
+       }
+
+}
diff --git a/client/includes/DataAccess/EntityStatementsRenderer.php 
b/client/includes/DataAccess/EntityStatementsRenderer.php
index eb1aaea..87030b9 100644
--- a/client/includes/DataAccess/EntityStatementsRenderer.php
+++ b/client/includes/DataAccess/EntityStatementsRenderer.php
@@ -23,53 +23,7 @@
  *
  * @author Marius Hoch < h...@online.de >
  */
-class EntityStatementsRenderer {
-
-       /**
-        * @var Language
-        */
-       private $language;
-
-       /**
-        * @var PropertyIdResolver
-        */
-       private $propertyIdResolver;
-
-       /**
-        * @var SnaksFinder
-        */
-       private $snaksFinder;
-
-       /**
-        * @var SnakFormatter
-        */
-       private $snakFormatter;
-
-       /**
-        * @var UsageAccumulator
-        */
-       private $usageAccumulator;
-
-       /**
-        * @param Language $language
-        * @param PropertyIdResolver $propertyIdResolver
-        * @param SnaksFinder $snaksFinder
-        * @param SnakFormatter $snakFormatter
-        * @param UsageAccumulator $usageAccumulator
-        */
-       public function __construct(
-               Language $language,
-               PropertyIdResolver $propertyIdResolver,
-               SnaksFinder $snaksFinder,
-               SnakFormatter $snakFormatter,
-               UsageAccumulator $usageAccumulator
-       ) {
-               $this->language = $language;
-               $this->propertyIdResolver = $propertyIdResolver;
-               $this->snaksFinder = $snaksFinder;
-               $this->snakFormatter = $snakFormatter;
-               $this->usageAccumulator = $usageAccumulator;
-       }
+interface EntityStatementsRenderer {
 
        /**
         * @param EntityId $entityId
@@ -79,56 +33,6 @@
         * @throws PropertyLabelNotResolvedException
         * @return string
         */
-       public function render( EntityId $entityId, $propertyLabelOrId, 
$acceptableRanks = null ) {
-               $propertyId = $this->propertyIdResolver->resolvePropertyId(
-                       $propertyLabelOrId,
-                       $this->language->getCode()
-               );
-
-               $snaks = $this->snaksFinder->findSnaks(
-                       $entityId,
-                       $propertyId,
-                       $acceptableRanks
-               );
-               $this->trackUsage( $snaks );
-
-               return $this->formatSnaks( $snaks );
-       }
-
-       /**
-        * @param Snak[] $snaks
-        *
-        * @return string wikitext
-        */
-       private function formatSnaks( array $snaks ) {
-               $formattedValues = array();
-
-               foreach ( $snaks as $snak ) {
-                       $formattedValues[] = $this->snakFormatter->formatSnak( 
$snak );
-               }
-
-               return $this->language->commaList( $formattedValues );
-       }
-
-       /**
-        * @param Snak[] $snaks
-        */
-       private function trackUsage( array $snaks ) {
-               // Note: we track any EntityIdValue as a label usage.
-               // This is making assumptions about what the respective 
formatter actually does.
-               // Ideally, the formatter itself would perform the tracking, 
but that seems nasty to model.
-
-               foreach ( $snaks as $snak ) {
-                       if ( !( $snak instanceof PropertyValueSnak) ) {
-                               continue;
-                       }
-
-                       $value = $snak->getDataValue();
-
-                       if ( $value instanceof EntityIdValue ) {
-                               $this->usageAccumulator->addLabelUsage( 
$value->getEntityId() );
-                       }
-               }
-       }
+       public function render( EntityId $entityId, $propertyLabelOrId, 
$acceptableRanks = null );
 
 }
diff --git 
a/client/includes/DataAccess/PropertyParserFunction/PropertyClaimsRendererFactory.php
 
b/client/includes/DataAccess/PropertyParserFunction/EntityStatementsRendererFactory.php
similarity index 96%
rename from 
client/includes/DataAccess/PropertyParserFunction/PropertyClaimsRendererFactory.php
rename to 
client/includes/DataAccess/PropertyParserFunction/EntityStatementsRendererFactory.php
index 10b75d9..0a87fa9 100644
--- 
a/client/includes/DataAccess/PropertyParserFunction/PropertyClaimsRendererFactory.php
+++ 
b/client/includes/DataAccess/PropertyParserFunction/EntityStatementsRendererFactory.php
@@ -8,7 +8,7 @@
 use Wikibase\Client\Usage\ParserOutputUsageAccumulator;
 use Wikibase\Client\Usage\UsageAccumulator;
 use Wikibase\DataAccess\PropertyIdResolver;
-use Wikibase\DataAccess\EntityStatementsRenderer;
+use Wikibase\DataAccess\EntityStatementsBasicRenderer;
 use Wikibase\DataAccess\SnaksFinder;
 use Wikibase\LanguageFallbackChainFactory;
 use Wikibase\Lib\OutputFormatSnakFormatterFactory;
@@ -20,7 +20,7 @@
  * @licence GNU GPL v2+
  * @author Katie Filbert < aude.w...@gmail.com >
  */
-class PropertyClaimsRendererFactory {
+class EntityStatementsRendererFactory {
 
        /**
         * @var PropertyIdResolver
@@ -68,7 +68,7 @@
        /**
         * @param Parser $parser
         *
-        * @return PropertyClaimsRenderer
+        * @return EntityStatementsRenderer
         */
        public function newRendererFromParser( Parser $parser ) {
                $usageAccumulator = new ParserOutputUsageAccumulator( 
$parser->getOutput() );
@@ -89,7 +89,7 @@
         * @return LanguageAwareRenderer
         */
        private function newLanguageAwareRenderer( Language $language, 
UsageAccumulator $usageAccumulator ) {
-               $entityStatementsRenderer = new EntityStatementsRenderer(
+               $entityStatementsRenderer = new EntityStatementsBasicRenderer(
                        $language,
                        $this->propertyIdResolver,
                        $this->snaksFinder,
diff --git 
a/client/includes/DataAccess/PropertyParserFunction/LanguageAwareRenderer.php 
b/client/includes/DataAccess/PropertyParserFunction/LanguageAwareRenderer.php
index 98a3aac..7cb20a5 100644
--- 
a/client/includes/DataAccess/PropertyParserFunction/LanguageAwareRenderer.php
+++ 
b/client/includes/DataAccess/PropertyParserFunction/LanguageAwareRenderer.php
@@ -10,7 +10,7 @@
 use Wikibase\Lib\PropertyLabelNotResolvedException;
 
 /**
- * PropertyClaimsRenderer of the {{#property}} parser function.
+ * EntityStatementsRenderer for the {{#property}} parser function.
  *
  * @since 0.5
  *
@@ -21,7 +21,7 @@
  * @author Liangent < liang...@gmail.com >
  * @author Marius Hoch < h...@online.de >
  */
-class LanguageAwareRenderer implements PropertyClaimsRenderer {
+class LanguageAwareRenderer implements EntityStatementsRenderer {
 
        /**
         * @var Language
@@ -51,10 +51,10 @@
         *
         * @return string
         */
-       public function render( EntityId $entityId, $propertyLabelOrId ) {
+       public function render( EntityId $entityId, $propertyLabelOrId, 
$acceptableRanks = null ) {
                try {
                        $status = Status::newGood(
-                               $this->entityStatementsRenderer->render( 
$entityId, $propertyLabelOrId )
+                               $this->entityStatementsRenderer->render( 
$entityId, $propertyLabelOrId, $acceptableRanks )
                        );
                } catch ( PropertyLabelNotResolvedException $ex ) {
                        // @fixme use ExceptionLocalizer
diff --git 
a/client/includes/DataAccess/PropertyParserFunction/PropertyClaimsRenderer.php 
b/client/includes/DataAccess/PropertyParserFunction/PropertyClaimsRenderer.php
deleted file mode 100644
index dbdb89b..0000000
--- 
a/client/includes/DataAccess/PropertyParserFunction/PropertyClaimsRenderer.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?php
-
-namespace Wikibase\DataAccess\PropertyParserFunction;
-
-use Wikibase\DataModel\Entity\EntityId;
-
-/**
- * Renderer for the {{#property}} parser function.
- *
- * @since 0.5
- *
- * @licence GNU GPL v2+
- * @author Katie Filbert < aude.w...@gmail.com >
- */
-interface PropertyClaimsRenderer {
-
-       /**
-        * @param EntityId $entityId
-        * @param string $propertyLabelOrId
-        *
-        * @return string
-        */
-       public function render( EntityId $entityId, $propertyLabelOrId );
-
-}
diff --git a/client/includes/DataAccess/PropertyParserFunction/Runner.php 
b/client/includes/DataAccess/PropertyParserFunction/Runner.php
index 1779af9..210e7e5 100644
--- a/client/includes/DataAccess/PropertyParserFunction/Runner.php
+++ b/client/includes/DataAccess/PropertyParserFunction/Runner.php
@@ -23,7 +23,7 @@
 class Runner {
 
        /**
-        * @var PropertyClaimsRendererFactory
+        * @var EntityStatementsRendererFactory
         */
        private $rendererFactory;
 
@@ -38,12 +38,12 @@
        private $siteId;
 
        /**
-        * @param PropertyCLaimsRendererFactory $rendererFactory
+        * @param EntityStatementsRendererFactory $rendererFactory
         * @param SiteLinkLookup $siteLinkLookup
         * @param string $siteId
         */
        public function __construct(
-               PropertyClaimsRendererFactory $rendererFactory,
+               EntityStatementsRendererFactory $rendererFactory,
                SiteLinkLookup $siteLinkLookup,
                $siteId
        ) {
diff --git 
a/client/includes/DataAccess/PropertyParserFunction/VariantsAwareRenderer.php 
b/client/includes/DataAccess/PropertyParserFunction/VariantsAwareRenderer.php
index 0ca41ce..3c7d627 100644
--- 
a/client/includes/DataAccess/PropertyParserFunction/VariantsAwareRenderer.php
+++ 
b/client/includes/DataAccess/PropertyParserFunction/VariantsAwareRenderer.php
@@ -3,6 +3,7 @@
 namespace Wikibase\DataAccess\PropertyParserFunction;
 
 use OutOfBoundsException;
+use Wikibase\DataAccess\EntityStatementsRenderer;
 use Wikibase\DataModel\Entity\EntityId;
 
 /**
@@ -16,7 +17,7 @@
  * @author Daniel Kinzler
  * @author Liangent < liang...@gmail.com >
  */
-class VariantsAwareRenderer implements PropertyClaimsRenderer {
+class VariantsAwareRenderer implements EntityStatementsRenderer {
 
        /**
         * @param string[]
@@ -43,7 +44,7 @@
         *
         * @return string
         */
-       public function render( EntityId $entityId, $propertyLabelOrId ) {
+       public function render( EntityId $entityId, $propertyLabelOrId, 
$acceptableRanks = null ) {
                $renderedVariantsArray = $this->buildRenderedVariantsArray( 
$entityId, $propertyLabelOrId );
 
                return $this->processRenderedArray( $renderedVariantsArray );
diff --git a/client/includes/WikibaseClient.php 
b/client/includes/WikibaseClient.php
index a021ea2..3653e77 100644
--- a/client/includes/WikibaseClient.php
+++ b/client/includes/WikibaseClient.php
@@ -24,7 +24,7 @@
 use Wikibase\Client\Store\TitleFactory;
 use Wikibase\ClientStore;
 use Wikibase\DataAccess\PropertyIdResolver;
-use Wikibase\DataAccess\PropertyParserFunction\PropertyClaimsRendererFactory;
+use Wikibase\DataAccess\PropertyParserFunction\EntityStatementsRendererFactory;
 use Wikibase\DataAccess\PropertyParserFunction\Runner;
 use Wikibase\DataAccess\SnaksFinder;
 use Wikibase\DataModel\Entity\BasicEntityIdParser;
@@ -682,9 +682,9 @@
        }
 
        /**
-        * @return PropertyClaimsRendererFactory
+        * @return EntityStatementsRendererFactory
         */
-       private function getPropertyClaimsRendererFactory() {
+       private function getEntityStatementsRendererFactory() {
                $entityLookup = $this->getEntityLookup();
 
                $snaksFinder = new SnaksFinder( $entityLookup );
@@ -694,7 +694,7 @@
                        $this->getStore()->getPropertyLabelResolver()
                );
 
-               return new PropertyClaimsRendererFactory(
+               return new EntityStatementsRendererFactory(
                        $propertyIdResolver,
                        $snaksFinder,
                        $this->getLanguageFallbackChainFactory(),
@@ -707,7 +707,7 @@
         */
        public function getPropertyParserFunctionRunner() {
                return new Runner(
-                       $this->getPropertyClaimsRendererFactory(),
+                       $this->getEntityStatementsRendererFactory(),
                        $this->getStore()->getSiteLinkLookup(),
                        $this->settings->getSetting( 'siteGlobalID' )
                );

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I16fe16bad9adbc91116cdcc70159ecd7bcf18c0c
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