John Erling Blad has submitted this change and it was merged.

Change subject: Defined most of the DataValueHandler interface
......................................................................


Defined most of the DataValueHandler interface

Change-Id: I8db83806520372f7fc479b1fce207e2c99d2e3e8
---
M repo/includes/Database/TableDefinition.php
M repo/includes/Query/SQLStore/DataValueHandler.php
M repo/tests/phpunit/includes/Query/SQLStore/DataValueHandlerTest.php
3 files changed, 143 insertions(+), 6 deletions(-)

Approvals:
  John Erling Blad: Verified; Looks good to me, approved
  jenkins-bot: Verified



diff --git a/repo/includes/Database/TableDefinition.php 
b/repo/includes/Database/TableDefinition.php
index 37e9006..f558738 100644
--- a/repo/includes/Database/TableDefinition.php
+++ b/repo/includes/Database/TableDefinition.php
@@ -47,6 +47,10 @@
        private $fields;
 
        /**
+        * Constructor.
+        *
+        * @since wd.db
+        *
         * @param string $name
         * @param FieldDefinition[] $fields
         *
@@ -66,6 +70,10 @@
        }
 
        /**
+        * Returns the name of the table.
+        *
+        * @since wd.db
+        *
         * @return string
         */
        public function getName() {
@@ -73,10 +81,16 @@
        }
 
        /**
+        * Returns the fields that make up this table.
+        *
+        * @since wd.db
+        *
         * @return FieldDefinition[]
         */
        public function getFields() {
                return $this->fields;
        }
 
+       // TODO: multiple field indices
+
 }
\ No newline at end of file
diff --git a/repo/includes/Query/SQLStore/DataValueHandler.php 
b/repo/includes/Query/SQLStore/DataValueHandler.php
index 86f5045..2f10e0b 100644
--- a/repo/includes/Query/SQLStore/DataValueHandler.php
+++ b/repo/includes/Query/SQLStore/DataValueHandler.php
@@ -2,6 +2,9 @@
 
 namespace Wikibase\Repo\Query\SQLStore;
 
+use Wikibase\Repo\Database\TableDefinition;
+use DataValues\DataValue;
+
 /**
  * Represents the mapping between a DataValue type and the
  * associated implementation in the store.
@@ -33,4 +36,69 @@
  */
 abstract class DataValueHandler {
 
+       /**
+        * Returns the definition of a table to hold DataValue objects of
+        * the type handled by this DataValueHandler.
+        *
+        * @since wd.qe
+        *
+        * @return TableDefinition
+        */
+       abstract public function getTableDefinition();
+
+       /**
+        * Returns the name of the field that holds the value from which
+        * a DataValue instance can be (re)constructed.
+        *
+        * The field should clearly be part of the table returned
+        * by @see getTableDefinition.
+        *
+        * @since wd.qe
+        *
+        * @return string
+        */
+       abstract public function getValueFieldName();
+
+       /**
+        * Return the field used to select this type of DataValue. In
+        * particular, this identifies the column that is used to sort values
+        * of this kind. Every type of data returns a non-empty string here.
+        *
+        * @since wd.qe
+        *
+        * @return string
+        */
+       abstract public function getSortField();
+
+       /**
+        * Create a DataValue from a cell value in the tables value field.
+        *
+        * @since wd.qe
+        *
+        * @param $dbValue // TODO: mixed or string?
+        *
+        * @return DataValue
+        */
+       abstract public function newDataValueFromDbValue( $dbValue );
+
+               /**
+        * Return the label field for this type of DataValue. This should be
+        * a string column in the database table that can be used for selecting
+        * values using criteria such as "starts with". The return value can be
+        * empty if this is not supported. This is preferred for SMWDataItem
+        * classes that do not have an obvious canonical string writing anyway.
+        *
+        * The return value can be a column name or the empty string (if the
+        * give type of DataValue does not have a label field).
+        *
+        * @since wd.qe
+        *
+        * @return string|null
+        */
+       public function getLabelField() {
+               return null;
+       }
+
+       // TODO: getInsertValues and getWhereConds
+
 }
\ No newline at end of file
diff --git 
a/repo/tests/phpunit/includes/Query/SQLStore/DataValueHandlerTest.php 
b/repo/tests/phpunit/includes/Query/SQLStore/DataValueHandlerTest.php
index 1744f97..8514a7d 100644
--- a/repo/tests/phpunit/includes/Query/SQLStore/DataValueHandlerTest.php
+++ b/repo/tests/phpunit/includes/Query/SQLStore/DataValueHandlerTest.php
@@ -27,15 +27,70 @@
  *
  * @ingroup WikibaseRepoTest
  *
- * @group Wikibase
- * @group WikibaseRepo
- * @group WikibaseQuery
- *
  * @licence GNU GPL v2+
  * @author Jeroen De Dauw < jeroended...@gmail.com >
  */
-class DataValueHandlerTest extends \MediaWikiTestCase {
+abstract class DataValueHandlerTest extends \MediaWikiTestCase {
 
-       // TODO
+       /**
+        * @since wd.qe
+        *
+        * @return DataValueHandler[]
+        */
+       protected abstract function getInstances();
+
+       /**
+        * @since wd.qe
+        *
+        * @return DataValueHandler[][]
+        */
+       public function instanceProvider() {
+               return $this->arrayWrap( $this->getInstances() );
+       }
+
+       /**
+        * @dataProvider instanceProvider
+        *
+        * @param DataValueHandler $dvHandler
+        */
+       public function testGetTableDefinitionReturnType( DataValueHandler 
$dvHandler ) {
+               // TODO
+       }
+
+       /**
+        * @dataProvider instanceProvider
+        *
+        * @param DataValueHandler $dvHandler
+        */
+       public function testGetValueFieldReturnValue( DataValueHandler 
$dvHandler ) {
+               // TODO
+       }
+
+       /**
+        * @dataProvider instanceProvider
+        *
+        * @param DataValueHandler $dvHandler
+        */
+       public function testGetSortFieldReturnValue( DataValueHandler 
$dvHandler ) {
+               // TODO
+       }
+
+       /**
+        * @dataProvider instanceProvider
+        *
+        * @param DataValueHandler $dvHandler
+        */
+       public function testNewDataValueFromDbValue( DataValueHandler 
$dvHandler ) {
+               // TODO
+       }
+
+       /**
+        * @dataProvider instanceProvider
+        *
+        * @param DataValueHandler $dvHandler
+        */
+       public function testGetLabelFieldReturnValue( DataValueHandler 
$dvHandler ) {
+               // TODO
+       }
 
 }

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

Gerrit-MessageType: merged
Gerrit-Change-Id: I8db83806520372f7fc479b1fce207e2c99d2e3e8
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Jeroen De Dauw <jeroended...@gmail.com>
Gerrit-Reviewer: Jens Ohlig <jens.oh...@wikimedia.de>
Gerrit-Reviewer: John Erling Blad <john.b...@wikimedia.de>
Gerrit-Reviewer: jenkins-bot

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to