Spaces:
No application file
No application file
File size: 1,346 Bytes
d2897cd |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
<?php
declare(strict_types=1);
namespace Mautic\IntegrationsBundle\Sync\SyncJudge;
use Mautic\IntegrationsBundle\Sync\DAO\Sync\InformationChangeRequestDAO;
use Mautic\IntegrationsBundle\Sync\Exception\ConflictUnresolvedException;
use Mautic\IntegrationsBundle\Sync\SyncJudge\Modes\BestEvidence;
use Mautic\IntegrationsBundle\Sync\SyncJudge\Modes\FuzzyEvidence;
use Mautic\IntegrationsBundle\Sync\SyncJudge\Modes\HardEvidence;
final class SyncJudge implements SyncJudgeInterface
{
/**
* @param string $mode
*
* @return InformationChangeRequestDAO
*
* @throws ConflictUnresolvedException
*/
public function adjudicate(
$mode,
InformationChangeRequestDAO $leftChangeRequest,
InformationChangeRequestDAO $rightChangeRequest
) {
if ($leftChangeRequest->getNewValue() === $rightChangeRequest->getNewValue()) {
return $leftChangeRequest;
}
return match ($mode) {
SyncJudgeInterface::HARD_EVIDENCE_MODE => HardEvidence::adjudicate($leftChangeRequest, $rightChangeRequest),
SyncJudgeInterface::BEST_EVIDENCE_MODE => BestEvidence::adjudicate($leftChangeRequest, $rightChangeRequest),
default => FuzzyEvidence::adjudicate($leftChangeRequest, $rightChangeRequest),
};
}
}
|