Spaces:
No application file
No application file
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), | |
}; | |
} | |
} | |