Dominic.sauer has uploaded a new change for review.
https://gerrit.wikimedia.org/r/207049
Change subject: Refactor DumpMetaInformation as pure value class, using
DumpMetaInformationStore and DumpMetaInformationLookup
......................................................................
Refactor DumpMetaInformation as pure value class, using
DumpMetaInformationStore and DumpMetaInformationLookup
Change-Id: I8de0e2ed3a8460bccff374480caa3a5ae936594d
---
M includes/CrossCheck/Comparer/DataValueComparer.php
M includes/CrossCheck/Comparer/MultilingualTextValueComparer.php
M includes/CrossCheck/CrossChecker.php
M includes/CrossCheck/ReferenceHandler.php
M includes/CrossCheck/Result/CrossCheckResult.php
D includes/DumpMetaInformation.php
A includes/DumpMetaInformation/DumpMetaInformation.php
A includes/DumpMetaInformation/DumpMetaInformationLookup.php
A includes/DumpMetaInformation/DumpMetaInformationStore.php
M includes/Serializer/DumpMetaInformationSerializer.php
M includes/UpdateTable/Importer.php
M specials/SpecialExternalDbs.php
M tests/phpunit/Api/CrossCheckTest.php
M tests/phpunit/CheckForCrossCheckViolationsJobTest.php
M tests/phpunit/CrossCheck/Comparer/DataValueComparerTest.php
M tests/phpunit/CrossCheck/Comparer/DataValueComparerTestBase.php
M tests/phpunit/CrossCheck/CrossCheckerTest.php
M tests/phpunit/CrossCheck/ReferenceHandlerTest.php
M tests/phpunit/CrossCheck/Result/CrossCheckResultTest.php
M tests/phpunit/DumpMetaInformationTest.php
M tests/phpunit/Serializer/CrossCheckResultSerializerTest.php
M tests/phpunit/Serializer/DumpMetaInformationSerializerTest.php
M tests/phpunit/Serializer/SerializerFactoryTest.php
M tests/phpunit/Specials/SpecialCrossCheckTest.php
M tests/phpunit/Specials/SpecialExternalDbsTest.php
M tests/phpunit/UpdateTable/UpdateTableTest.php
26 files changed, 421 insertions(+), 303 deletions(-)
git pull
ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/WikidataQualityExternalValidation
refs/changes/49/207049/1
diff --git a/includes/CrossCheck/Comparer/DataValueComparer.php
b/includes/CrossCheck/Comparer/DataValueComparer.php
index 205ace6..71a04dc 100755
--- a/includes/CrossCheck/Comparer/DataValueComparer.php
+++ b/includes/CrossCheck/Comparer/DataValueComparer.php
@@ -9,7 +9,7 @@
use ValueParsers\ValueParser;
use Wikibase\Parsers\MonolingualTextParser;
use WikidataQuality\ExternalValidation\CrossCheck\Result\CompareResult;
-use WikidataQuality\ExternalValidation\DumpMetaInformation;
+use WikidataQuality\ExternalValidation\DumpMetaInformation\DumpMetaInformation;
/**
diff --git a/includes/CrossCheck/Comparer/MultilingualTextValueComparer.php
b/includes/CrossCheck/Comparer/MultilingualTextValueComparer.php
old mode 100644
new mode 100755
index c525a13..d8032bc
--- a/includes/CrossCheck/Comparer/MultilingualTextValueComparer.php
+++ b/includes/CrossCheck/Comparer/MultilingualTextValueComparer.php
@@ -4,7 +4,7 @@
use DataValues\MultilingualTextValue;
use WikidataQuality\ExternalValidation\CrossCheck\Result\CompareResult;
-use WikidataQuality\ExternalValidation\DumpMetaInformation;
+use WikidataQuality\ExternalValidation\DumpMetaInformation\DumpMetaInformation;
/**
diff --git a/includes/CrossCheck/CrossChecker.php
b/includes/CrossCheck/CrossChecker.php
old mode 100644
new mode 100755
index c8d0b18..1d418d2
--- a/includes/CrossCheck/CrossChecker.php
+++ b/includes/CrossCheck/CrossChecker.php
@@ -18,7 +18,8 @@
use WikidataQuality\ExternalValidation\CrossCheck\Result\CrossCheckResult;
use WikidataQuality\ExternalValidation\CrossCheck\Result\CrossCheckResultList;
use WikidataQuality\ExternalValidation\CrossCheck\Result\ReferenceResult;
-use WikidataQuality\ExternalValidation\DumpMetaInformation;
+use WikidataQuality\ExternalValidation\DumpMetaInformation\DumpMetaInformation;
+use
WikidataQuality\ExternalValidation\DumpMetaInformation\DumpMetaInformationLookup;
/**
@@ -146,7 +147,8 @@
$resultList = new CrossCheckResultList();
foreach ( $externalData as $dumpId => $externalDataPerDump ) {
- $dumpMetaInformation = DumpMetaInformation::get(
$this->db, $dumpId );
+ $dumpMetaInformationLookup = new DumpMetaInformationLookup(
$dumpId );
+ $dumpMetaInformation =
$dumpMetaInformationLookup->findDumpMetaInformation();
foreach ( $externalDataPerDump as $externalId =>
$externalDataPerId ) {
foreach ( $externalDataPerId as $propertyId =>
$externalValues ) {
diff --git a/includes/CrossCheck/ReferenceHandler.php
b/includes/CrossCheck/ReferenceHandler.php
old mode 100644
new mode 100755
index c4e0b34..d865a24
--- a/includes/CrossCheck/ReferenceHandler.php
+++ b/includes/CrossCheck/ReferenceHandler.php
@@ -11,7 +11,7 @@
use Wikibase\DataModel\Snak\SnakList;
use Wikibase\DataModel\Statement\Statement;
use WikidataQuality\ExternalValidation\CrossCheck\Result\ReferenceResult;
-use WikidataQuality\ExternalValidation\DumpMetaInformation;
+use WikidataQuality\ExternalValidation\DumpMetaInformation\DumpMetaInformation;
/**
diff --git a/includes/CrossCheck/Result/CrossCheckResult.php
b/includes/CrossCheck/Result/CrossCheckResult.php
old mode 100644
new mode 100755
index 781c5e9..64a9d7f
--- a/includes/CrossCheck/Result/CrossCheckResult.php
+++ b/includes/CrossCheck/Result/CrossCheckResult.php
@@ -5,7 +5,7 @@
use Doctrine\Instantiator\Exception\InvalidArgumentException;
use Wikibase\DataModel\Entity\PropertyId;
use Wikibase\Repo\WikibaseRepo;
-use WikidataQuality\ExternalValidation\DumpMetaInformation;
+use WikidataQuality\ExternalValidation\DumpMetaInformation\DumpMetaInformation;
use WikidataQuality\Result\CheckResult;
diff --git a/includes/DumpMetaInformation.php b/includes/DumpMetaInformation.php
deleted file mode 100644
index 25c57d8..0000000
--- a/includes/DumpMetaInformation.php
+++ /dev/null
@@ -1,254 +0,0 @@
-<?php
-
-namespace WikidataQuality\ExternalValidation;
-
-use DatabaseBase;
-use DateTime;
-use DateTimeZone;
-use Doctrine\Instantiator\Exception\InvalidArgumentException;
-use Doctrine\Instantiator\Exception\UnexpectedValueException;
-use Wikibase\DataModel\Entity\ItemId;
-
-
-/**
- * Class DumpMetaInformation
- *
- * @package WikidataQuality\ExternalValidation\CrossCheck
- * @author BP2014N1
- * @license GNU GPL v2+
- */
-class DumpMetaInformation {
-
- /**
- * Id of the dump
- *
- * @var string
- */
- private $dumpId;
-
- /**
- * Id of the item that represents the data source of the dump
- *
- * @var ItemId
- */
- private $sourceItemId;
-
- /**
- * Date of import
- *
- * @var DateTime
- */
- private $importDate;
-
- /**
- * Language of data in the dump
- *
- * @var string
- */
- private $language;
-
- /**
- * Source url of the downloaded dump
- *
- * @var string
- */
- private $sourceUrl;
-
- /**
- * Size of the imported dump
- *
- * @var int
- */
- private $size;
-
- /**
- * Id of the item that represents the license of the database
- *
- * @var ItemId
- */
- private $licenseItemId;
-
- /**
- * @param string $dumpId
- * @param ItemId $sourceItemId
- * @param DateTime $importDate
- * @param string $language
- * @param string $sourceUrl
- * @param int $size
- * @param ItemId $licenseItemId
- */
- public function __construct( $dumpId, ItemId $sourceItemId, DateTime
$importDate, $language, $sourceUrl, $size, ItemId $licenseItemId ) {
- if ( !is_string( $dumpId ) ) {
- throw new InvalidArgumentException( '$dumpId must be
string.' );
- }
- if ( !is_string( $language ) ) {
- throw new InvalidArgumentException( '$language must be
string.' );
- }
- if ( !is_string( $sourceUrl ) ) {
- throw new InvalidArgumentException( '$sourceUrl must be
string.' );
- }
- if ( !is_int( $size ) ) {
- throw new InvalidArgumentException( '$size must be
integer.' );
- }
-
- $this->dumpId = $dumpId;
- $this->sourceItemId = $sourceItemId;
- $this->importDate = $importDate;
- $this->language = $language;
- $this->sourceUrl = $sourceUrl;
- $this->size = $size;
- $this->licenseItemId = $licenseItemId;
- }
-
- /**
- * @return string
- */
- public function getDumpId() {
- return $this->dumpId;
- }
-
- /**
- * @return ItemId
- */
- public function getSourceItemId() {
- return $this->sourceItemId;
- }
-
- /**
- * @return DateTime
- */
- public function getImportDate() {
- return $this->importDate;
- }
-
- /**
- * @return string
- */
- public function getLanguage() {
- return $this->language;
- }
-
- /**
- * @return string
- */
- public function getSourceUrl() {
- return $this->sourceUrl;
- }
-
- /**
- * @return int
- */
- public function getSize() {
- return $this->size;
- }
-
- /**
- * @return ItemId
- */
- public function getLicenseItemId() {
- return $this->licenseItemId;
- }
-
- /**
- * Saves dump meta information to database
- *
- * @param DataBase $db
- */
- public function save( DatabaseBase $db ) {
- $accumulator = array (
- 'dump_id' => $this->getDumpId(),
- 'source_qid' =>
$this->getSourceItemId()->getSerialization(),
- 'import_date' => $this->getImportDate()->format(
'YmdHis' ),
- 'language' => $this->getLanguage(),
- 'source_url' => $this->getSourceUrl(),
- 'size' => $this->getSize(),
- 'license_qid' =>
$this->getLicenseItemId()->getSerialization()
- );
-
- $dumpId = $this->getDumpId();
- $existing = $db->selectRow(
- DUMP_META_TABLE,
- array ( 'dump_id' ),
- array ( "dump_id='$dumpId'" )
- );
-
- if ( $existing ) {
- $result = $db->update(
- DUMP_META_TABLE,
- $accumulator,
- array ( "dump_id='$dumpId'" )
- );
- } else {
- $result = $db->insert(
- DUMP_META_TABLE,
- $accumulator
- );
- }
-
- return $result;
- }
-
- /**
- * Gets DumpMetaInformation for specific dump ids from database
- *
- * @param DatabaseBase $db
- * @param string|array $dumpIds
- *
- * @return array|DumpMetaInformation
- */
- public static function get( DatabaseBase $db, $dumpIds = null ) {
- if ( $dumpIds ) {
- if ( is_string( $dumpIds ) ) {
- $dumpIds = array ( $dumpIds );
- } elseif ( !is_array( $dumpIds ) ) {
- throw new InvalidArgumentException( '$dumpIds
must be array of strings or string.' );
- } else {
- foreach ( $dumpIds as $dumpId ) {
- if ( !is_string( $dumpId ) ) {
- throw new
InvalidArgumentException( '$dumpIds must be array of strings.' );
- }
- }
- }
- }
-
- $conditions = array ();
- if ( $dumpIds ) {
- $formatter = function ( $dumpId ) {
- return sprintf( '"%s"', $dumpId );
- };
- $dumpIds = array_map( $formatter, $dumpIds );
- $conditions[ ] = sprintf( 'dump_id IN (%s)', implode(
',', $dumpIds ) );
- }
-
- $result = $db->select(
- DUMP_META_TABLE,
- array ( 'dump_id', 'source_qid', 'import_date',
'language', 'source_url', 'size', 'license_qid' ),
- $conditions
- );
-
- $dumpMetaInformation = array ();
- foreach ( $result as $row ) {
- $dumpId = $row->dump_id;
- $sourceItemId = new ItemId( $row->source_qid );
- $importDate = DateTime::createFromFormat( 'YmdHis',
$row->import_date, new DateTimeZone( 'UTC' ) );
- if ( !$importDate ) {
- throw new UnexpectedValueException( 'Cannot
convert import_date from violations table to YmdHis format.' );
- }
- $language = $row->language;
- $sourceUrl = $row->source_url;
- $size = (int)$row->size;
- $licenseItemId = new ItemId( $row->license_qid );
-
- $dumpMetaInformation[ $dumpId ] = new
DumpMetaInformation( $dumpId, $sourceItemId, $importDate, $language,
$sourceUrl, $size, $licenseItemId );
- }
-
- if ( $dumpMetaInformation ) {
- if ( $dumpIds && count( $dumpIds ) === 1 ) {
- $dumpMetaInformation = array_values(
$dumpMetaInformation );
- return $dumpMetaInformation[ 0 ];
- } else {
- return $dumpMetaInformation;
- }
- }
- }
-}
\ No newline at end of file
diff --git a/includes/DumpMetaInformation/DumpMetaInformation.php
b/includes/DumpMetaInformation/DumpMetaInformation.php
new file mode 100755
index 0000000..83db058
--- /dev/null
+++ b/includes/DumpMetaInformation/DumpMetaInformation.php
@@ -0,0 +1,149 @@
+<?php
+
+namespace WikidataQuality\ExternalValidation\DumpMetaInformation;
+
+use DateTime;
+use Doctrine\Instantiator\Exception\InvalidArgumentException;
+use Doctrine\Instantiator\Exception\UnexpectedValueException;
+use Wikibase\DataModel\Entity\ItemId;
+
+
+/**
+ * @package WikidataQuality\ExternalValidation\DumpMetaInformation
+ * @author BP2014N1
+ * @license GNU GPL v2+
+ */
+class DumpMetaInformation {
+
+ /**
+ * Id of the dump
+ *
+ * @var string
+ */
+ private $dumpId;
+
+ /**
+ * Id of the item that represents the data source of the dump
+ *
+ * @var ItemId
+ */
+ private $sourceItemId;
+
+ /**
+ * Date of import
+ *
+ * @var DateTime
+ */
+ private $importDate;
+
+ /**
+ * Language of data in the dump
+ *
+ * @var string
+ */
+ private $language;
+
+ /**
+ * Source url of the downloaded dump
+ *
+ * @var string
+ */
+ private $sourceUrl;
+
+ /**
+ * Size of the imported dump
+ *
+ * @var int
+ */
+ private $size;
+
+ /**
+ * Id of the item that represents the license of the database
+ *
+ * @var ItemId
+ */
+ private $licenseItemId;
+
+ /**
+ * @param string $dumpId
+ * @param ItemId $sourceItemId
+ * @param DateTime $importDate
+ * @param string $language
+ * @param string $sourceUrl
+ * @param int $size
+ * @param ItemId $licenseItemId
+ *
+ * @throws InvalidArgumentException
+ */
+ public function __construct( $dumpId, ItemId $sourceItemId, DateTime
$importDate, $language, $sourceUrl, $size, ItemId $licenseItemId ) {
+ if ( !is_string( $dumpId ) ) {
+ throw new InvalidArgumentException( '$dumpId must be
string.' );
+ }
+ if ( !is_string( $language ) ) {
+ throw new InvalidArgumentException( '$language must be
string.' );
+ }
+ if ( !is_string( $sourceUrl ) ) {
+ throw new InvalidArgumentException( '$sourceUrl must be
string.' );
+ }
+ if ( !is_int( $size ) ) {
+ throw new InvalidArgumentException( '$size must be
integer.' );
+ }
+
+ $this->dumpId = $dumpId;
+ $this->sourceItemId = $sourceItemId;
+ $this->importDate = $importDate;
+ $this->language = $language;
+ $this->sourceUrl = $sourceUrl;
+ $this->size = $size;
+ $this->licenseItemId = $licenseItemId;
+ }
+
+ /**
+ * @return string
+ */
+ public function getDumpId() {
+ return $this->dumpId;
+ }
+
+ /**
+ * @return ItemId
+ */
+ public function getSourceItemId() {
+ return $this->sourceItemId;
+ }
+
+ /**
+ * @return DateTime
+ */
+ public function getImportDate() {
+ return $this->importDate;
+ }
+
+ /**
+ * @return string
+ */
+ public function getLanguage() {
+ return $this->language;
+ }
+
+ /**
+ * @return string
+ */
+ public function getSourceUrl() {
+ return $this->sourceUrl;
+ }
+
+ /**
+ * @return int
+ */
+ public function getSize() {
+ return $this->size;
+ }
+
+ /**
+ * @return ItemId
+ */
+ public function getLicenseItemId() {
+ return $this->licenseItemId;
+ }
+}
\ No newline at end of file
diff --git a/includes/DumpMetaInformation/DumpMetaInformationLookup.php
b/includes/DumpMetaInformation/DumpMetaInformationLookup.php
new file mode 100755
index 0000000..78d31bc
--- /dev/null
+++ b/includes/DumpMetaInformation/DumpMetaInformationLookup.php
@@ -0,0 +1,128 @@
+<?php
+
+namespace WikidataQuality\ExternalValidation\DumpMetaInformation;
+
+use DateTime;
+use DateTimeZone;
+use ResultWrapper;
+use Wikibase\DataModel\Entity\ItemId;
+use Doctrine\Instantiator\Exception\InvalidArgumentException;
+use Doctrine\Instantiator\Exception\UnexpectedValueException;
+
+/**
+ * @package WikidataQuality\ExternalValidation\DumpMetaInformation
+ * @author BP2014N1
+ * @license GNU GPL v2+
+ */
+class DumpMetaInformationLookup {
+
+ private $db;
+
+ private $dumpIds;
+
+ /**
+ * @param string|array $dumpIds
+ *
+ * @throws InvalidArgumentException
+ */
+ public function __construct( $dumpIds = null ) {
+
+ if ( $dumpIds ) {
+ if ( is_string( $dumpIds ) ) {
+ $dumpIds = array ( $dumpIds );
+ } elseif ( !is_array( $dumpIds ) ) {
+ throw new InvalidArgumentException( '$dumpIds must be array of
strings or string.' );
+ } else {
+ foreach ( $dumpIds as $dumpId ) {
+ if ( !is_string( $dumpId ) ) {
+ throw new InvalidArgumentException( '$dumpIds must be
array of strings.' );
+ }
+ }
+ }
+ }
+
+ $this->dumpIds = $dumpIds;
+ $this->getDBConnection();
+ }
+
+ /**
+ * Gets DumpMetaInformation for specific dump ids from database
+ *
+ * @throws UnexpectedValueException
+ *
+ * @return array|DumpMetaInformation
+ */
+ public function findDumpMetaInformation() {
+
+ $conditions = $this->setConditions();
+
+ $result = $this->db->select(
+ DUMP_META_TABLE,
+ array ( 'dump_id', 'source_qid', 'import_date', 'language',
'source_url', 'size', 'license_qid' ),
+ $conditions
+ );
+
+ $dumpMetaInformation = $this->buildDumpMetaInformationFromResult(
$result );
+ if ( $dumpMetaInformation ) {
+ if ( $this->dumpIds && count( $this->dumpIds ) === 1 ) {
+ $dumpMetaInformation = array_values( $dumpMetaInformation );
+ return $dumpMetaInformation[ 0 ];
+ } else {
+ return $dumpMetaInformation;
+ }
+ }
+ }
+
+ /**
+ * @return array
+ */
+ private function setConditions() {
+ $conditions = array ();
+ if ( $this->dumpIds ) {
+ $formatter = function ( $dumpId ) {
+ return sprintf( '"%s"', $dumpId );
+ };
+ $this->dumpIds = array_map( $formatter, $this->dumpIds );
+ $conditions[ ] = sprintf( 'dump_id IN (%s)', implode( ',',
$this->dumpIds ) );
+ }
+
+ return $conditions;
+ }
+
+ /**
+ * @param ResultWrapper $result
+ *
+ * @throws UnexpectedValueException
+ *
+ * @return array
+ */
+ private function buildDumpMetaInformationFromResult( ResultWrapper $result
){
+ $dumpMetaInformation = array ();
+ foreach ( $result as $row ) {
+ $dumpId = $row->dump_id;
+ $sourceItemId = new ItemId( $row->source_qid );
+ $importDate = DateTime::createFromFormat( 'YmdHis',
$row->import_date, new DateTimeZone( 'UTC' ) );
+ if ( !$importDate ) {
+ throw new UnexpectedValueException( 'Cannot convert
import_date from violations table to YmdHis format.' );
+ }
+ $language = $row->language;
+ $sourceUrl = $row->source_url;
+ $size = (int)$row->size;
+ $licenseItemId = new ItemId( $row->license_qid );
+
+ $dumpMetaInformation[ $dumpId ] = new DumpMetaInformation(
$dumpId, $sourceItemId, $importDate, $language, $sourceUrl, $size,
$licenseItemId );
+ }
+
+ return $dumpMetaInformation;
+ }
+
+ /**
+ * @throws \DBError
+ * @throws \MWException
+ */
+ private function getDBConnection() {
+ wfWaitForSlaves();
+ $loadBalancer = wfGetLB();
+ $this->db = $loadBalancer->getConnection( DB_MASTER );
+ }
+}
\ No newline at end of file
diff --git a/includes/DumpMetaInformation/DumpMetaInformationStore.php
b/includes/DumpMetaInformation/DumpMetaInformationStore.php
new file mode 100755
index 0000000..8e72c2a
--- /dev/null
+++ b/includes/DumpMetaInformation/DumpMetaInformationStore.php
@@ -0,0 +1,76 @@
+<?php
+
+namespace WikidataQuality\ExternalValidation\DumpMetaInformation;
+
+/**
+ * @package WikidataQuality\ExternalValidation\DumpMetaInformation
+ * @author BP2014N1
+ * @license GNU GPL v2+
+ */
+class DumpMetaInformationStore {
+
+ private $db;
+
+ /**
+ * Saves dump meta information to database
+ *
+ * @param DumpMetaInformation $dumpMetaInformation
+ *
+ * @return boolean $result
+ */
+ public function save( DumpMetaInformation $dumpMetaInformation ) {
+
+ $accumulator = $this->getDumpInformationArray( $dumpMetaInformation );
+
+ $this->getDBConnection();
+
+ $dumpId = $dumpMetaInformation->getDumpId();
+ $existing = $this->db->selectRow(
+ DUMP_META_TABLE,
+ array ( 'dump_id' ),
+ array ( "dump_id='$dumpId'" )
+ );
+
+ if ( $existing ) {
+ $result = $this->db->update(
+ DUMP_META_TABLE,
+ $accumulator,
+ array ( "dump_id='$dumpId'" )
+ );
+ } else {
+ $result = $this->db->insert(
+ DUMP_META_TABLE,
+ $accumulator
+ );
+ }
+
+ return $result;
+ }
+
+ /**
+ * @param DumpMetaInformation $dumpMetaInformation
+ *
+ * @return array
+ */
+ private function getDumpInformationArray( DumpMetaInformation
$dumpMetaInformation ) {
+ return array (
+ 'dump_id' => $dumpMetaInformation->getDumpId(),
+ 'source_qid' =>
$dumpMetaInformation->getSourceItemId()->getSerialization(),
+ 'import_date' => $dumpMetaInformation->getImportDate()->format(
'YmdHis' ),
+ 'language' => $dumpMetaInformation->getLanguage(),
+ 'source_url' => $dumpMetaInformation->getSourceUrl(),
+ 'size' => $dumpMetaInformation->getSize(),
+ 'license_qid' =>
$dumpMetaInformation->getLicenseItemId()->getSerialization()
+ );
+ }
+
+ /**
+ * @throws \DBError
+ * @throws \MWException
+ */
+ private function getDBConnection() {
+ wfWaitForSlaves();
+ $loadBalancer = wfGetLB();
+ $this->db = $loadBalancer->getConnection( DB_MASTER );
+ }
+}
\ No newline at end of file
diff --git a/includes/Serializer/DumpMetaInformationSerializer.php
b/includes/Serializer/DumpMetaInformationSerializer.php
old mode 100644
new mode 100755
index b263ed3..02ffa60
--- a/includes/Serializer/DumpMetaInformationSerializer.php
+++ b/includes/Serializer/DumpMetaInformationSerializer.php
@@ -6,7 +6,7 @@
use Serializers\DispatchableSerializer;
use Serializers\Exceptions\UnsupportedObjectException;
use Serializers\Serializer;
-use WikidataQuality\ExternalValidation\DumpMetaInformation;
+use WikidataQuality\ExternalValidation\DumpMetaInformation\DumpMetaInformation;
/**
diff --git a/includes/UpdateTable/Importer.php
b/includes/UpdateTable/Importer.php
old mode 100644
new mode 100755
index 60d0e39..ceab3f3
--- a/includes/UpdateTable/Importer.php
+++ b/includes/UpdateTable/Importer.php
@@ -9,7 +9,8 @@
use MWException;
use PharData;
use Wikibase\DataModel\Entity\ItemId;
-use WikidataQuality\ExternalValidation\DumpMetaInformation;
+use WikidataQuality\ExternalValidation\DumpMetaInformation\DumpMetaInformation;
+use
WikidataQuality\ExternalValidation\DumpMetaInformation\DumpMetaInformationStore;
/**
@@ -201,11 +202,9 @@
/**
* Inserts meta information stored in csv file into database
*
- * @param DatabaseBase $db
- *
* @return array
*/
- protected function insertMetaInformation( DatabaseBase $db ) {
+ protected function insertMetaInformation() {
if ( !$this->importContext->isQuiet() ) {
print "Insert new dump meta information\n";
}
@@ -224,7 +223,8 @@
intval( $data[ 5 ] ),
new ItemId( $data[ 6 ] )
);
- $metaInformation->save( $db );
+ $dumpMetaInformationStore = new DumpMetaInformationStore();
+ $dumpMetaInformationStore->save( $metaInformation );
$dumpIds[ ] = $metaInformation->getDumpId();
diff --git a/specials/SpecialExternalDbs.php b/specials/SpecialExternalDbs.php
old mode 100644
new mode 100755
index 6897fcf..d493feb
--- a/specials/SpecialExternalDbs.php
+++ b/specials/SpecialExternalDbs.php
@@ -8,7 +8,7 @@
use Language;
use Linker;
use Wikibase\DataModel\Entity\ItemId;
-use WikidataQuality\ExternalValidation\DumpMetaInformation;
+use
WikidataQuality\ExternalValidation\DumpMetaInformation\DumpMetaInformationLookup;
use WikidataQuality\Html\HtmlTable;
use WikidataQuality\Html\HtmlTableCell;
use WikidataQuality\Specials\SpecialWikidataQualityPage;
@@ -49,10 +49,9 @@
. Html::closeElement( 'h3' )
);
- wfWaitForSlaves();
- $loadBalancer = wfGetLB();
- $db = $loadBalancer->getConnection( DB_SLAVE );
- $dumps = DumpMetaInformation::get( $db );
+
+ $dumpMetaInformationLookup = new DumpMetaInformationLookup();
+ $dumps = $dumpMetaInformationLookup->findDumpMetaInformation();
if ( $dumps ) {
$groupedDumpMetaInformation = array ();
diff --git a/tests/phpunit/Api/CrossCheckTest.php
b/tests/phpunit/Api/CrossCheckTest.php
index f6c1df4..a649642 100755
--- a/tests/phpunit/Api/CrossCheckTest.php
+++ b/tests/phpunit/Api/CrossCheckTest.php
@@ -18,7 +18,7 @@
* @group API
* @group medium
*
- * @uses WikidataQuality\ExternalValidation\DumpMetaInformation
+ * @uses
WikidataQuality\ExternalValidation\DumpMetaInformation\DumpMetaInformation
* @uses WikidataQuality\ExternalValidation\CrossCheck\CrossChecker
* @uses WikidataQuality\ExternalValidation\CrossCheck\ReferenceHandler
* @uses
WikidataQuality\ExternalValidation\CrossCheck\Comparer\DataValueComparer
diff --git a/tests/phpunit/CheckForCrossCheckViolationsJobTest.php
b/tests/phpunit/CheckForCrossCheckViolationsJobTest.php
old mode 100644
new mode 100755
index 7642d8b..2eda54c
--- a/tests/phpunit/CheckForCrossCheckViolationsJobTest.php
+++ b/tests/phpunit/CheckForCrossCheckViolationsJobTest.php
@@ -17,7 +17,7 @@
use DataValues\StringValue;
use Wikibase\Repo\WikibaseRepo;
use WikidataQuality\ExternalValidation\CrossCheck\Result\ReferenceResult;
-use WikidataQuality\ExternalValidation\DumpMetaInformation;
+use WikidataQuality\ExternalValidation\DumpMetaInformation\DumpMetaInformation;
use WikidataQuality\ExternalValidation\CheckForCrossCheckViolationsJob;
@@ -30,7 +30,7 @@
* @uses WikidataQuality\ExternalValidation\CrossCheck\Result\ReferenceResult
* @uses WikidataQuality\ExternalValidation\CrossCheck\Result\CrossCheckResult
* @uses
WikidataQuality\ExternalValidation\CrossCheck\Result\CrossCheckResultList
- * @uses WikidataQuality\ExternalValidation\DumpMetaInformation
+ * @uses
WikidataQuality\ExternalValidation\DumpMetaInformation\DumpMetaInformation
* @uses WikidataQuality\ExternalValidation\CrossCheck\CrossChecker
*
* @author BP2014N1
diff --git a/tests/phpunit/CrossCheck/Comparer/DataValueComparerTest.php
b/tests/phpunit/CrossCheck/Comparer/DataValueComparerTest.php
old mode 100644
new mode 100755
index 962f3fb..7915b0d
--- a/tests/phpunit/CrossCheck/Comparer/DataValueComparerTest.php
+++ b/tests/phpunit/CrossCheck/Comparer/DataValueComparerTest.php
@@ -14,13 +14,13 @@
use Wikibase\DataModel\Entity\EntityIdValue;
use Wikibase\DataModel\Entity\ItemId;
use WikidataQuality\ExternalValidation\CrossCheck\Comparer\DataValueComparer;
-use WikidataQuality\ExternalValidation\DumpMetaInformation;
+use WikidataQuality\ExternalValidation\DumpMetaInformation\DumpMetaInformation;
/**
* @covers
WikidataQuality\ExternalValidation\CrossCheck\Comparer\DataValueComparer
*
- * @uses WikidataQuality\ExternalValidation\DumpMetaInformation
+ * @uses
WikidataQuality\ExternalValidation\DumpMetaInformation\DumpMetaInformation
* @uses
WikidataQuality\ExternalValidation\CrossCheck\Comparer\MultilingualTextValueComparer
*
* @author BP2014N1
@@ -176,7 +176,7 @@
* @return \PHPUnit_Framework_MockObject_MockObject
*/
public function getDumpMetaInformationMock() {
- $mock = $this->getMockBuilder(
'WikidataQuality\ExternalValidation\DumpMetaInformation' )
+ $mock = $this->getMockBuilder(
'WikidataQuality\ExternalValidation\DumpMetaInformation\DumpMetaInformation' )
->disableOriginalConstructor()
->getMock();
diff --git a/tests/phpunit/CrossCheck/Comparer/DataValueComparerTestBase.php
b/tests/phpunit/CrossCheck/Comparer/DataValueComparerTestBase.php
old mode 100644
new mode 100755
index a7380ae..4f11cff
--- a/tests/phpunit/CrossCheck/Comparer/DataValueComparerTestBase.php
+++ b/tests/phpunit/CrossCheck/Comparer/DataValueComparerTestBase.php
@@ -52,7 +52,7 @@
* @return \PHPUnit_Framework_MockObject_MockObject
*/
protected function getDumpMetaInformationMock( $language ) {
- $mock = $this->getMockBuilder(
'WikidataQuality\ExternalValidation\DumpMetaInformation' )
+ $mock = $this->getMockBuilder(
'WikidataQuality\ExternalValidation\DumpMetaInformation\DumpMetaInformation' )
->setMethods( array( 'getLanguage' ) )
->disableOriginalConstructor()
->getMock();
diff --git a/tests/phpunit/CrossCheck/CrossCheckerTest.php
b/tests/phpunit/CrossCheck/CrossCheckerTest.php
index ff44f81..905694b 100755
--- a/tests/phpunit/CrossCheck/CrossCheckerTest.php
+++ b/tests/phpunit/CrossCheck/CrossCheckerTest.php
@@ -2,7 +2,6 @@
namespace WikidataQuality\ExternalValidation\Tests\CrossCheck;
-use DataValues\MonolingualTextValue;
use DataValues\StringValue;
use Wikibase\DataModel\Entity\Item;
use Wikibase\DataModel\Entity\ItemId;
@@ -26,7 +25,7 @@
* @uses WikidataQuality\ExternalValidation\CrossCheck\Result\CompareResult
* @uses
WikidataQuality\ExternalValidation\CrossCheck\Result\CrossCheckResult
* @uses WikidataQuality\ExternalValidation\CrossCheck\Result\ReferenceResult
- * @uses WikidataQuality\ExternalValidation\DumpMetaInformation
+ * @uses
WikidataQuality\ExternalValidation\DumpMetaInformation\DumpMetaInformation
* @uses WikidataQuality\ExternalValidation\CrossCheck\ReferenceHandler
*
* @author BP2014N1
diff --git a/tests/phpunit/CrossCheck/ReferenceHandlerTest.php
b/tests/phpunit/CrossCheck/ReferenceHandlerTest.php
old mode 100644
new mode 100755
index 6baa0c8..18de5b3
--- a/tests/phpunit/CrossCheck/ReferenceHandlerTest.php
+++ b/tests/phpunit/CrossCheck/ReferenceHandlerTest.php
@@ -120,7 +120,7 @@
}
private function getDumpMetaInformationMock( ItemId $sourceItemId ) {
- $mock = $this->getMockBuilder(
'WikidataQuality\ExternalValidation\DumpMetaInformation' )
+ $mock = $this->getMockBuilder(
'WikidataQuality\ExternalValidation\DumpMetaInformation\DumpMetaInformation' )
->disableOriginalConstructor()
->getMock();
$mock->expects( $this->any() )
diff --git a/tests/phpunit/CrossCheck/Result/CrossCheckResultTest.php
b/tests/phpunit/CrossCheck/Result/CrossCheckResultTest.php
old mode 100644
new mode 100755
index a9699af..e4f2d5e
--- a/tests/phpunit/CrossCheck/Result/CrossCheckResultTest.php
+++ b/tests/phpunit/CrossCheck/Result/CrossCheckResultTest.php
@@ -134,7 +134,7 @@
private function getDumpMetaInformationMock()
{
- $mock = $this->getMockBuilder(
'WikidataQuality\ExternalValidation\DumpMetaInformation' )
+ $mock = $this->getMockBuilder(
'WikidataQuality\ExternalValidation\DumpMetaInformation\DumpMetaInformation' )
->disableOriginalConstructor()
->getMock();
diff --git a/tests/phpunit/DumpMetaInformationTest.php
b/tests/phpunit/DumpMetaInformationTest.php
old mode 100644
new mode 100755
index 45f9d1b..559c4c4
--- a/tests/phpunit/DumpMetaInformationTest.php
+++ b/tests/phpunit/DumpMetaInformationTest.php
@@ -5,10 +5,15 @@
use DateTime;
use Wikibase\DataModel\Entity\Item;
use Wikibase\DataModel\Entity\ItemId;
-use WikidataQuality\ExternalValidation\DumpMetaInformation;
+use WikidataQuality\ExternalValidation\DumpMetaInformation\DumpMetaInformation;
+use
WikidataQuality\ExternalValidation\DumpMetaInformation\DumpMetaInformationStore;
+use
WikidataQuality\ExternalValidation\DumpMetaInformation\DumpMetaInformationLookup;
/**
- * @covers WikidataQuality\ExternalValidation\DumpMetaInformation
+ * @covers
WikidataQuality\ExternalValidation\DumpMetaInformation\DumpMetaInformation
+ *
+ * @uses
WikidataQuality\ExternalValidation\DumpMetaInformation\DumpMetaInformationStore
+ * @uses
WikidataQuality\ExternalValidation\DumpMetaInformation\DumpMetaInformationLookup
*
* @group Database
* @group medium
@@ -175,7 +180,10 @@
public function testGetDumpMetaInformation( $dumpIds,
$expectedDumpMetaInformation, $expectedException ) {
$this->setExpectedException( $expectedException );
- $this->assertEquals( $expectedDumpMetaInformation,
DumpMetaInformation::get( $this->db, $dumpIds ) );
+ $dumpMetaInformationLookup = new DumpMetaInformationLookup( $dumpIds );
+ $dumpMetaInformation =
$dumpMetaInformationLookup->findDumpMetaInformation();
+
+ $this->assertEquals( $expectedDumpMetaInformation,
$dumpMetaInformation );
}
/**
@@ -237,9 +245,12 @@
public function testSaveDumpMetaInformation( $dumpId, $sourceItemId,
$importDate, $language, $sourceUrl, $size, $license ) {
$dumpMetaInformation = new DumpMetaInformation( $dumpId,
$sourceItemId, $importDate, $language, $sourceUrl, $size, $license );
- $dumpMetaInformation->save( $this->db );
- $metaInformationFromDatabase = DumpMetaInformation::get( $this->db,
$dumpId );
+ $dumpMetaInformationStore = new DumpMetaInformationStore();
+ $dumpMetaInformationStore->save( $dumpMetaInformation );
+
+ $dumpMetaInformationLookup = new DumpMetaInformationLookup( $dumpId );
+ $metaInformationFromDatabase =
$dumpMetaInformationLookup->findDumpMetaInformation();
$this->assertEquals( $dumpMetaInformation,
$metaInformationFromDatabase );
}
diff --git a/tests/phpunit/Serializer/CrossCheckResultSerializerTest.php
b/tests/phpunit/Serializer/CrossCheckResultSerializerTest.php
old mode 100644
new mode 100755
index 8b04eb7..692ff41
--- a/tests/phpunit/Serializer/CrossCheckResultSerializerTest.php
+++ b/tests/phpunit/Serializer/CrossCheckResultSerializerTest.php
@@ -32,7 +32,7 @@
new CrossCheckResult(
new PropertyId( 'P42' ),
'Q42$26ca5e18-90fb-4c5c-bb22-ed8a70f1948f',
- $this->getMockWithoutConstructor(
'WikidataQuality\ExternalValidation\DumpMetaInformation' ),
+ $this->getMockWithoutConstructor(
'WikidataQuality\ExternalValidation\DumpMetaInformation\DumpMetaInformation' ),
$this->getMockWithoutConstructor(
'WikidataQuality\ExternalValidation\CrossCheck\Result\CompareResult' ),
$this->getMockWithoutConstructor(
'WikidataQuality\ExternalValidation\CrossCheck\Result\ReferenceResult' )
)
@@ -64,7 +64,7 @@
new CrossCheckResult(
new PropertyId( 'P42' ),
'Q42$26ca5e18-90fb-4c5c-bb22-ed8a70f1948f',
- $this->getMockWithoutConstructor(
'WikidataQuality\ExternalValidation\DumpMetaInformation' ),
+ $this->getMockWithoutConstructor(
'WikidataQuality\ExternalValidation\DumpMetaInformation\DumpMetaInformation' ),
$this->getMockWithoutConstructor(
'WikidataQuality\ExternalValidation\CrossCheck\Result\CompareResult' ),
$this->getMockWithoutConstructor(
'WikidataQuality\ExternalValidation\CrossCheck\Result\ReferenceResult' )
)
diff --git a/tests/phpunit/Serializer/DumpMetaInformationSerializerTest.php
b/tests/phpunit/Serializer/DumpMetaInformationSerializerTest.php
old mode 100644
new mode 100755
index 0486873..aa69170
--- a/tests/phpunit/Serializer/DumpMetaInformationSerializerTest.php
+++ b/tests/phpunit/Serializer/DumpMetaInformationSerializerTest.php
@@ -4,13 +4,13 @@
use Wikibase\DataModel\Entity\ItemId;
-use WikidataQuality\ExternalValidation\DumpMetaInformation;
+use WikidataQuality\ExternalValidation\DumpMetaInformation\DumpMetaInformation;
use
WikidataQuality\ExternalValidation\Serializer\DumpMetaInformationSerializer;
/**
* @covers
WikidataQuality\ExternalValidation\Serializer\DumpMetaInformationSerializer
*
- * @uses WikidataQuality\ExternalValidation\DumpMetaInformation
+ * @uses
WikidataQuality\ExternalValidation\DumpMetaInformation\DumpMetaInformation
*
* @author BP2014N1
* @license GNU GPL v2+
diff --git a/tests/phpunit/Serializer/SerializerFactoryTest.php
b/tests/phpunit/Serializer/SerializerFactoryTest.php
old mode 100644
new mode 100755
index 370308f..194b184
--- a/tests/phpunit/Serializer/SerializerFactoryTest.php
+++ b/tests/phpunit/Serializer/SerializerFactoryTest.php
@@ -18,7 +18,7 @@
use WikidataQuality\ExternalValidation\CrossCheck\Result\CrossCheckResult;
use WikidataQuality\ExternalValidation\CrossCheck\Result\CrossCheckResultList;
use WikidataQuality\ExternalValidation\CrossCheck\Result\ReferenceResult;
-use WikidataQuality\ExternalValidation\DumpMetaInformation;
+use WikidataQuality\ExternalValidation\DumpMetaInformation\DumpMetaInformation;
use WikidataQuality\ExternalValidation\Serializer\SerializerFactory;
/**
@@ -28,7 +28,7 @@
* @uses WikidataQuality\ExternalValidation\CrossCheck\Result\ReferenceResult
* @uses WikidataQuality\ExternalValidation\CrossCheck\Result\CrossCheckResult
* @uses
WikidataQuality\ExternalValidation\CrossCheck\Result\CrossCheckResultList
- * @uses WikidataQuality\ExternalValidation\DumpMetaInformation
+ * @uses
WikidataQuality\ExternalValidation\DumpMetaInformation\DumpMetaInformation
* @uses WikidataQuality\ExternalValidation\Serializer\IndexedTagsSerializer
* @uses WikidataQuality\ExternalValidation\Serializer\CompareResultSerializer
* @uses
WikidataQuality\ExternalValidation\Serializer\ReferenceResultSerializer
diff --git a/tests/phpunit/Specials/SpecialCrossCheckTest.php
b/tests/phpunit/Specials/SpecialCrossCheckTest.php
index 330e09f..505ed49 100755
--- a/tests/phpunit/Specials/SpecialCrossCheckTest.php
+++ b/tests/phpunit/Specials/SpecialCrossCheckTest.php
@@ -14,7 +14,8 @@
use Wikibase\DataModel\Statement\Statement;
use Wikibase\Lib\ClaimGuidGenerator;
use Wikibase\Repo\WikibaseRepo;
-use WikidataQuality\ExternalValidation\DumpMetaInformation;
+use WikidataQuality\ExternalValidation\DumpMetaInformation\DumpMetaInformation;
+use
WikidataQuality\ExternalValidation\DumpMetaInformation\DumpMetaInformationStore;
use Wikibase\DataModel\Entity\EntityId;
/**
@@ -23,7 +24,8 @@
* @group Database
* @group medium
*
- * @uses WikidataQuality\ExternalValidation\DumpMetaInformation
+ * @uses
WikidataQuality\ExternalValidation\DumpMetaInformation\DumpMetaInformation
+ * @uses
WikidataQuality\ExternalValidation\DumpMetaInformation\DumpMetaInformationStore
* @uses WikidataQuality\ExternalValidation\CrossCheck\CrossChecker
* @uses WikidataQuality\ExternalValidation\CrossCheck\ReferenceHandler
* @uses
WikidataQuality\ExternalValidation\CrossCheck\Comparer\DataValueComparer
@@ -157,7 +159,8 @@
42,
new ItemId( 'Q6938433' )
);
- $dumpMetaInformation->save( $this->db );
+ $dumpMetaInformationStore = new DumpMetaInformationStore();
+ $dumpMetaInformationStore->save( $dumpMetaInformation );
// Insert identifier property
$this->db->insert(
diff --git a/tests/phpunit/Specials/SpecialExternalDbsTest.php
b/tests/phpunit/Specials/SpecialExternalDbsTest.php
old mode 100644
new mode 100755
index cb36811..7d3d048
--- a/tests/phpunit/Specials/SpecialExternalDbsTest.php
+++ b/tests/phpunit/Specials/SpecialExternalDbsTest.php
@@ -4,7 +4,8 @@
use Wikibase\Test\SpecialPageTestBase;
use WikidataQuality\ExternalValidation\Specials\SpecialExternalDbs;
-use WikidataQuality\ExternalValidation\DumpMetaInformation;
+use WikidataQuality\ExternalValidation\DumpMetaInformation\DumpMetaInformation;
+use
WikidataQuality\ExternalValidation\DumpMetaInformation\DumpMetaInformationStore;
use Wikibase\DataModel\Entity\ItemId;
/**
@@ -13,7 +14,8 @@
* @group Database
* @group medium
*
- * @uses WikidataQuality\ExternalValidation\DumpMetaInformation
+ * @uses
WikidataQuality\ExternalValidation\DumpMetaInformation\DumpMetaInformation
+ * @uses
WikidataQuality\ExternalValidation\DumpMetaInformation\DumpMetaInformationStore
* @uses WikidataQuality\Html\HtmlTable
* @uses WikidataQuality\Html\HtmlTableHeader
* @uses WikidataQuality\Html\HtmlTableCell
@@ -62,8 +64,8 @@
42,
new ItemId( 'Q6938433' )
);
-
- $dumpMetaInformation->save( $this->db );
+ $dumpMetaInformationStore = new DumpMetaInformationStore();
+ $dumpMetaInformationStore->save( $dumpMetaInformation );
}
/**
diff --git a/tests/phpunit/UpdateTable/UpdateTableTest.php
b/tests/phpunit/UpdateTable/UpdateTableTest.php
old mode 100644
new mode 100755
index e06bf84..e6f3b98
--- a/tests/phpunit/UpdateTable/UpdateTableTest.php
+++ b/tests/phpunit/UpdateTable/UpdateTableTest.php
@@ -5,7 +5,8 @@
use DateTime;
use Wikibase\DataModel\Entity\ItemId;
-use WikidataQuality\ExternalValidation\DumpMetaInformation;
+use WikidataQuality\ExternalValidation\DumpMetaInformation\DumpMetaInformation;
+use
WikidataQuality\ExternalValidation\DumpMetaInformation\DumpMetaInformationStore;
use WikidataQuality\ExternalValidation\Maintenance\UpdateTable;
@@ -14,7 +15,8 @@
* @covers WikidataQuality\ExternalValidation\UpdateTable\ImportContext
* @covers WikidataQuality\ExternalValidation\Maintenance\UpdateTable
*
- * @uses WikidataQuality\ExternalValidation\DumpMetaInformation
+ * @uses
WikidataQuality\ExternalValidation\DumpMetaInformation\DumpMetaInformation
+ * @uses
WikidataQuality\ExternalValidation\DumpMetaInformation\DumpMetaInformationStore
*
* @group Database
* @group medium
@@ -57,7 +59,8 @@
);
// Insert external test data
- $dumpMetaInformation->save( $this->db );
+ $dumpMetaInformationStore = new DumpMetaInformationStore();
+ $dumpMetaInformationStore->save( $dumpMetaInformation );
// Insert identifier properties
$this->db->insert(
--
To view, visit https://gerrit.wikimedia.org/r/207049
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I8de0e2ed3a8460bccff374480caa3a5ae936594d
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/WikidataQualityExternalValidation
Gerrit-Branch: v1
Gerrit-Owner: Dominic.sauer <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits