Jonaskeutel has uploaded a new change for review. https://gerrit.wikimedia.org/r/204030
Change subject: add ResultToViolationTranslator (basic + CheckResult) ...................................................................... add ResultToViolationTranslator (basic + CheckResult) also save violations from constraint check in table; therefore slighlty modified violation and violationStore with comments how to undo the changes Change-Id: I20ab86ae0eeaf5d7b0ce5c033b440256291b63a5 add Change-Id: I9c5e492e145d3c1319d3fb6775610df7de284bac --- A constraint-report/includes/ConstraintCheck/Result/CheckResultToViolationTranslator.php M constraint-report/specials/SpecialConstraintReport.php A includes/Result/ResultToViolationTranslator.php M includes/Violations/Violation.php M includes/Violations/ViolationStore.php 5 files changed, 92 insertions(+), 2 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/WikidataQuality refs/changes/30/204030/1 diff --git a/constraint-report/includes/ConstraintCheck/Result/CheckResultToViolationTranslator.php b/constraint-report/includes/ConstraintCheck/Result/CheckResultToViolationTranslator.php new file mode 100644 index 0000000..1c59710 --- /dev/null +++ b/constraint-report/includes/ConstraintCheck/Result/CheckResultToViolationTranslator.php @@ -0,0 +1,48 @@ +<?php + +namespace WikidataQuality\ConstraintReport\ConstraintCheck\Result; + + +use Wikibase\DataModel\Entity\ItemId; +use Wikibase\DataModel\Entity\PropertyId; +use Wikibase\Lib\ClaimGuidGenerator; +use WikidataQuality\Result\ResultToViolationTranslator; +use WikidataQuality\Violations\Violation; + + +class CheckResultToViolationTranslator extends ResultToViolationTranslator{ + + public function translateToViolation( $checkResultOrArray ) { + if( $checkResultOrArray instanceof CheckResult ) { + $checkResultArray = array( $checkResultOrArray ); + } else { + $checkResultArray = $checkResultOrArray; + } + + $violationArray = array(); + foreach( $checkResultArray as $checkResult ) { + if( $checkResult->getStatus() !== 'violation' ){ + continue; + } + + // TODO: Use these line when CheckResult has statement + //$statement = $checkResult->getStatement(); + //$entityId = $statement->getClaim()->getEntityId(); + $entityId = new ItemId( 'Q90' ); + $statement = array(); + $statement[ 'pid' ] = new PropertyId( 'P1' ); + $statement[ 'claimGuid' ] = 'Q42'; + + //TODO: Use real claimGuid + $guidGenerator = new ClaimGuidGenerator(); + $constraintClaimGuid = $guidGenerator->newGuid( $entityId ); + $constraintTypeEntityId = $checkResult->getConstraintName(); + $revisionId = $this->getRevisionIdForEntity( $entityId ); + $status = 'violation'; + + $violationArray[] = new Violation( $entityId, $statement, $constraintClaimGuid, $constraintTypeEntityId, $revisionId, $status); + } + + return $violationArray; + } +} \ No newline at end of file diff --git a/constraint-report/specials/SpecialConstraintReport.php b/constraint-report/specials/SpecialConstraintReport.php index 89050e3..f66010d 100644 --- a/constraint-report/specials/SpecialConstraintReport.php +++ b/constraint-report/specials/SpecialConstraintReport.php @@ -12,9 +12,11 @@ use Wikibase\Lib\Store\EntityTitleLookup; use Wikibase\Repo\WikibaseRepo; use WikidataQuality\ConstraintReport\ConstraintCheck\ConstraintChecker; +use WikidataQuality\ConstraintReport\ConstraintCheck\Result\CheckResultToViolationTranslator; use WikidataQuality\Html\HtmlTable; use WikidataQuality\Html\HtmlTableHeader; use WikidataQuality\Specials\SpecialCheckResultPage; +use WikidataQuality\Violations\ViolationStore; /** @@ -96,6 +98,8 @@ // Run constraint checker $constraintChecker = new ConstraintChecker( $this->entityLookup ); $results = $constraintChecker->execute( $entity ); + + $this->saveResultsInViolationsTable( $results ); return $results; } @@ -282,4 +286,14 @@ 'violation' => 'error' ); } + + /** + * @param array $results + */ + protected function saveResultsInViolationsTable( $results ) { + $translator = new CheckResultToViolationTranslator(); + $violations = $translator->translateToViolation( $results ); + $violationStore = new ViolationStore(); + $violationStore->insertViolation( $violations ); + } } \ No newline at end of file diff --git a/includes/Result/ResultToViolationTranslator.php b/includes/Result/ResultToViolationTranslator.php new file mode 100644 index 0000000..ee4d46d --- /dev/null +++ b/includes/Result/ResultToViolationTranslator.php @@ -0,0 +1,27 @@ +<?php + +namespace WikidataQuality\Result; + + +use Wikibase\DataModel\Entity\EntityId; +use Wikibase\Repo\WikibaseRepo; + + +class ResultToViolationTranslator { + private $revisionLookup; + + public function __construct() { + $this->revisionLookup = WikibaseRepo::getDefaultInstance()->getEntityRevisionLookup(); + } + + /** + * @param EntityId $entityId + * + * @return int|false + */ + + protected function getRevisionIdForEntity( EntityId $entityId ) { + return $this->revisionLookup->getLatestRevisionId( $entityId ); + } + +} \ No newline at end of file diff --git a/includes/Violations/Violation.php b/includes/Violations/Violation.php index e07bf0b..9d28de7 100644 --- a/includes/Violations/Violation.php +++ b/includes/Violations/Violation.php @@ -89,7 +89,8 @@ * @param string $status * @param string $additionalInfo */ - public function __construct( EntityId $entityId, $statement, $constraintClaimGuid, EntityId $constraintTypeEntityId, $revisionId, $status, $additionalInfo = null, $updatedAt = null ) { + // TODO: Argument 4 --> EntityId as TypeHint + public function __construct( EntityId $entityId, $statement, $constraintClaimGuid, $constraintTypeEntityId, $revisionId, $status, $additionalInfo = null, $updatedAt = null ) { $this->entityId = $entityId; if ( $statement instanceof Statement ) { $this->pid = $statement->getPropertyId(); diff --git a/includes/Violations/ViolationStore.php b/includes/Violations/ViolationStore.php index 1cdb6d9..461a136 100644 --- a/includes/Violations/ViolationStore.php +++ b/includes/Violations/ViolationStore.php @@ -40,7 +40,7 @@ 'pid' => $violation->getPropertyId()->getSerialization(), 'claim_guid' => $violation->getClaimGuid(), 'constraint_claim_guid' => $violation->getConstraintClaimGuid(), - 'constraint_type_entity_id' => $violation->getConstraintTypeEntityId()->getSerialization(), + 'constraint_type_entity_id' => $violation->getConstraintTypeEntityId(),//TODO: use this line: ->getSerialization(), 'additional_info' => $violation->getAdditionalInfo(), 'updated_at' => $updatedAt, 'revision_id' => $violation->getRevisionId(), -- To view, visit https://gerrit.wikimedia.org/r/204030 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I9c5e492e145d3c1319d3fb6775610df7de284bac Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/extensions/WikidataQuality Gerrit-Branch: master Gerrit-Owner: Jonaskeutel <jonas.keu...@student.hpi.de> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits