WMDE-leszek has uploaded a new change for review. ( 
https://gerrit.wikimedia.org/r/356572 )

Change subject: Add Sense and SenseId
......................................................................

Add Sense and SenseId

Also add sense list to the Lexeme entity

Change-Id: Ib32df4facf7f6dc0f9444a3aad78705fb0d51fe5
---
M src/DataModel/Lexeme.php
A src/DataModel/Sense.php
A src/DataModel/SenseId.php
A tests/phpunit/composer/DataModel/SenseIdTest.php
A tests/phpunit/composer/DataModel/SenseTest.php
5 files changed, 134 insertions(+), 1 deletion(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/WikibaseLexeme 
refs/changes/72/356572/1

diff --git a/src/DataModel/Lexeme.php b/src/DataModel/Lexeme.php
index a4ea244..ea802a7 100644
--- a/src/DataModel/Lexeme.php
+++ b/src/DataModel/Lexeme.php
@@ -49,6 +49,11 @@
        private $forms;
 
        /**
+        * @var Sense[]
+        */
+       private $senses;
+
+       /**
         * Note that $lexicalCategory and $language can only be null during 
construction time. Their
         * setters can not be called with null, and their getters will throw an 
exception if the
         * corresponding field was never initialized.
@@ -59,6 +64,7 @@
         * @param ItemId|null $language
         * @param StatementList|null $statements
         * @param LexemeForm[] $forms
+        * @oaram Sense[] $senses
         */
        public function __construct(
                LexemeId $id = null,
@@ -66,7 +72,8 @@
                ItemId $lexicalCategory = null,
                ItemId $language = null,
                StatementList $statements = null,
-               array $forms = []
+               array $forms = [],
+               array $senses = []
        ) {
                $this->id = $id;
                $this->lemmas = $lemmas ?: new TermList();
@@ -74,6 +81,7 @@
                $this->language = $language;
                $this->statements = $statements ?: new StatementList();
                $this->forms = $forms;
+               $this->senses = $senses;
        }
 
        /**
@@ -241,6 +249,13 @@
        }
 
        /**
+        * @return Sense[]
+        */
+       public function getSenses() {
+               return $this->senses;
+       }
+
+       /**
         * @return bool False if a non-optional field was never initialized, 
true otherwise.
         */
        public function isSufficientlyInitialized() {
diff --git a/src/DataModel/Sense.php b/src/DataModel/Sense.php
new file mode 100644
index 0000000..658a417
--- /dev/null
+++ b/src/DataModel/Sense.php
@@ -0,0 +1,38 @@
+<?php
+
+namespace Wikibase\Lexeme\DataModel;
+
+use Wikibase\DataModel\Statement\StatementList;
+use Wikibase\DataModel\Term\TermList;
+
+/**
+ * @license GPL-2.0+
+ * TODO: implement EntityDocument?
+ */
+class Sense {
+
+       private $id;
+
+       private $glossList;
+
+       private $statementList;
+
+       public function __construct( SenseId $id, TermList $glossList, 
StatementList $statementList ) {
+               $this->id = $id;
+               $this->glossList = $glossList; // TODO: check there is at least 
gloss in one language provided
+               $this->statementList = $statementList;
+       }
+
+       public function getId() {
+               return $this->id;
+       }
+
+       public function getGlosses() {
+               return $this->glossList;
+       }
+
+       public function getStatements() {
+               return $this->statementList;
+       }
+
+}
diff --git a/src/DataModel/SenseId.php b/src/DataModel/SenseId.php
new file mode 100644
index 0000000..f11a9da
--- /dev/null
+++ b/src/DataModel/SenseId.php
@@ -0,0 +1,30 @@
+<?php
+
+namespace Wikibase\Lexeme\DataModel;
+
+/**
+ * @license GPL-2.0+
+ * TODO: implement EntityId?
+ */
+class SenseId {
+
+       /**
+        * @var string
+        */
+       private $serialization;
+
+       /**
+        * @param string $serialization
+        */
+       public function __construct( $serialization ) {
+               $this->serialization = $serialization;
+       }
+
+       /**
+        * @return string
+        */
+       public function getSerialization() {
+               return $this->serialization;
+       }
+
+}
diff --git a/tests/phpunit/composer/DataModel/SenseIdTest.php 
b/tests/phpunit/composer/DataModel/SenseIdTest.php
new file mode 100644
index 0000000..0139029
--- /dev/null
+++ b/tests/phpunit/composer/DataModel/SenseIdTest.php
@@ -0,0 +1,22 @@
+<?php
+
+namespace Wikibase\Lexeme\Tests\DataModel;
+
+use Wikibase\Lexeme\DataModel\SenseId;
+
+/**
+ * @covers Wikibase\Lexeme\DataModel\SenseId
+ *
+ * @group WikibaseLexeme
+ *
+ * @license GPL-2.0+
+ */
+class SenseIdTest extends \PHPUnit_Framework_TestCase {
+
+       public function testCanBeCreated() {
+               $id = new SenseId( 'L123-S1' );
+
+               $this->assertSame( 'L123-S1', $id->getSerialization() );
+       }
+
+}
diff --git a/tests/phpunit/composer/DataModel/SenseTest.php 
b/tests/phpunit/composer/DataModel/SenseTest.php
new file mode 100644
index 0000000..62afcfa
--- /dev/null
+++ b/tests/phpunit/composer/DataModel/SenseTest.php
@@ -0,0 +1,28 @@
+<?php
+
+
+namespace Wikibase\Lexeme\Tests\DataModel;
+
+use Wikibase\DataModel\Statement\StatementList;
+use Wikibase\DataModel\Term\TermList;
+use Wikibase\Lexeme\DataModel\Sense;
+use Wikibase\Lexeme\DataModel\SenseId;
+
+/**
+ * @covers Wikibase\Lexeme\DataModel\Sense
+ *
+ * @group WikibaseLexeme
+ *
+ * @license GPL-2.0+
+ */
+class SenseTest extends \PHPUnit_Framework_TestCase {
+
+       public function testCanBeCreated() {
+               $sense = new Sense( new SenseId( 'L1-S1' ), new TermList(), new 
StatementList() );
+
+               $this->assertSame( 'L1-S1', $sense->getId()->getSerialization() 
);
+               $this->assertTrue( $sense->getGlosses()->isEmpty() );
+               $this->assertTrue( $sense->getStatements()->isEmpty() );
+       }
+
+}

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ib32df4facf7f6dc0f9444a3aad78705fb0d51fe5
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/WikibaseLexeme
Gerrit-Branch: master
Gerrit-Owner: WMDE-leszek <leszek.mani...@wikimedia.de>

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

Reply via email to