Skip to content
Snippets Groups Projects
Commit 64c40138 authored by Jean-Philippe Metivier's avatar Jean-Philippe Metivier
Browse files

Attrappage des exceptions

parent 31f4bf13
No related branches found
No related tags found
No related merge requests found
Pipeline #24984 passed
......@@ -5,7 +5,8 @@ namespace UnicaenSynchro\Controller;
use Unicaen\Console\Controller\AbstractConsoleController;
use UnicaenSynchro\Service\Synchronisation\SynchronisationServiceAwareTrait;
class SynchronisationConsoleController extends AbstractConsoleController {
class SynchronisationConsoleController extends AbstractConsoleController
{
use SynchronisationServiceAwareTrait;
private array $configs;
......
......@@ -3,6 +3,7 @@
namespace UnicaenSynchro\Service\Synchronisation;
use DateTime;
use Exception;
use UnicaenSynchro\Service\SqlHelper\SqlHelperServiceAwareTrait;
class SynchronisationService {
......@@ -47,9 +48,12 @@ class SynchronisationService {
public function synchronise(string $name) : string
{
echo "Synchronisation [".$name."]\n"; flush();
try {
echo "Synchronisation [" . $name . "]\n";
flush();
$debut = new DateTime();
echo "Debut: ".$debut->format('d/m/y H:i:s:u')."\n"; flush();
echo "Debut: " . $debut->format('d/m/y H:i:s:u') . "\n";
flush();
$correspondance = $this->getFromConfig($name, 'correspondance');
$orm_source = $this->entityManagers[$this->getFromConfig($name, 'orm_source')];
......@@ -61,29 +65,34 @@ class SynchronisationService {
$id_destination = $correspondance[$id_source];
$data_source = $this->getSqlHelperService()->fetch($orm_source, $table_source, $correspondance, 'source', $id_source);
echo count($data_source). " entrées dans les données sources.\n"; flush();
echo count($data_source) . " entrées dans les données sources.\n";
flush();
$data_destination = $this->getSqlHelperService()->fetch($orm_destination, $table_destination, $correspondance, 'destination', $id_destination);
$data_destination_on = []; $data_destination_off = [];
$data_destination_on = [];
$data_destination_off = [];
foreach ($data_destination as $item) {
if ($item['deleted_on'] !== null) $data_destination_off[] = $item; else $data_destination_on[] = $item;
}
echo count($data_destination_on) . "(~". count($data_destination_off).")". " entrées dans les données cibles actives.\n"; flush();
echo count($data_destination_on) . "(~" . count($data_destination_off) . ")" . " entrées dans les données cibles actives.\n";
flush();
$read = new DateTime();
echo "Lecture: ".$read->format('d/m/y H:i:s:u'). "(" . ($read->diff($debut))->format('%H:%m:%s:%F').")\n"; flush();
echo "Lecture: " . $read->format('d/m/y H:i:s:u') . "(" . ($read->diff($debut))->format('%H:%m:%s:%F') . ")\n";
flush();
//check for removal
$nbRetrait = 0;
// $texte_retrait = "";
foreach ($data_destination as $id => $item) {
if ($item['deleted_on'] === null AND !isset($data_source[$id])) {
if ($item['deleted_on'] === null and !isset($data_source[$id])) {
$nbRetrait++;
// $texte_retrait .= "Retrait de ".$id." des données destination.\n";
$this->getSqlHelperService()->delete($orm_destination, $table_destination, $id);
}
}
echo "#Retrait: ".$nbRetrait."\n"; flush();
echo "#Retrait: " . $nbRetrait . "\n";
flush();
// $log .= $texte_retrait;
//check for adding
......@@ -96,33 +105,36 @@ class SynchronisationService {
$this->getSqlHelperService()->insert($orm_destination, $table_destination, $item, $correspondance, $source);
}
}
echo "#Ajout: ".$nbAjout."\n"; flush();
echo "#Ajout: " . $nbAjout . "\n";
flush();
// $log .= $texte_ajout;
//check for restauration
$nbRestauration = 0;
// $texte_restauration = "";
foreach ($data_source as $id => $item) {
if (isset($data_destination[$id]) AND $data_destination[$id]["deleted_on"] !== null) {
if (isset($data_destination[$id]) and $data_destination[$id]["deleted_on"] !== null) {
$nbRestauration++;
// $texte_restauration .= "Restauration de ".$id." des données destinations.\n";
$this->getSqlHelperService()->restore($orm_destination, $table_destination, $id);
}
}
echo "#Restauration: ".$nbRestauration."\n"; flush();
echo "#Restauration: " . $nbRestauration . "\n";
flush();
// $log .= $texte_restauration;
//check for modification
$nbModification = 0;
// $texte_modication = "";
foreach ($data_source as $id => $item) {
if (isset($data_destination[$id]) AND $this->checkDifferences($item, $data_destination[$id], $correspondance, $source)) {
if (isset($data_destination[$id]) and $this->checkDifferences($item, $data_destination[$id], $correspondance, $source)) {
$nbModification++;
// $texte_modication .= "Modif de ".$id." des données sources.\n";
$this->getSqlHelperService()->update($orm_destination, $table_destination, $item, $correspondance, $id, $source);
}
}
echo "#Modification: ".$nbModification."\n"; flush();
echo "#Modification: " . $nbModification . "\n";
flush();
// $log .= $texte_modication;
$fin = new DateTime();
......@@ -131,5 +143,12 @@ class SynchronisationService {
echo "Durée de la synchronisation: " . ($fin->diff($debut))->format('%H:%m:%s:%F') . "\n";
return "";
} catch (Exception $e) {
do {
echo "\033[31m".$e->getMessage() . "\033[0m\n";
$e = $e->getPrevious();
} while ($e !== null);
die();
}
}
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment