Présentation simple de l'algorithme de synchronisation
Ce qui est pris en compte:
Ajout de tache/Modification de tache/Suppression de tache
Ajout de periodde/Modification de periode/Suppression de periode
La synchro se fait de l'UI vers le serveur et du serveur vers l'UI.
La synchro se fait aussi du local storage vers l'UI et de l'UI
vers le local storage.
Il existe un systeme de todoList qui va gerer la synchronisation des
elements de l'UI vers le serveur.
Elle sauvegarde les taches et temps editees et les taches et temps
crees/supprimees si la synchronisation n'a pas ete executee.
Cette todoList est sauvegardee au cours du temps dans le local Storage
de façon a ne pas perdre les modification sur les donnees si une
synchro n'a pas pu se produire.
L'Ui sauvegarde aussi son état dans le local Storage avec les webtimerdata.
Synchro Ui -> Serveur
Lors de l'ajout d'une tache dans l'UI, une demande d'ajout asynchrone
est envoyée au serveur. Si la synchronisation échoue alors le nouvel
élément est ajouté à la todolist.
Lors de la suppression d'une tache dans l'UI, une demande asynchrone
de suppression est envoyée au serveur. Si la synchronisation échoue
alors l'élément supprimé est ajouté à la todolist.
La modification d'une tache ou d'un temps ainsi que l'ajout ou la
modification d'un temps ou la suppression d'un temps, est poussé dans
la todoList, puis est traité de manière asynchrone.
Sinon selon un intervalle (à définir - disons 10 min) une méthode se
lance pour pousser de façon asynchrone les changements non traités
(présents dans la todolist) vers le serveur.
Synchro UI <- Serveur
Au démarrage de jTimer une demande est faite automatiquement pour
récupérer les tâches existante dans la base sous condition que la date
de modification soit supérieur à la date de dernière synchro au
serveur (sauvegardée dans la todolist et égale à 0 au premier
démarrage pour récupérer toutes les dates). Les éléments récupérées
sont ensuite comparé aux éléments du webtimerdata pour l'ajout ou la
maj.
Les temps sont récupérées pour chacune des sous-tâches avec
toujours cette date de modification qui permet d'écrémer un peu le
nombre d'élément rapatrié.
A intervalle régulier les nouvelles taches sont rapatriées ainsi que
les taches mise à jour.
Jusqu’à maintenant on supprimait simplement les éléments de la base
donc à la mise à jour suivante ils n'étaient pas récupérés. Ce système
peut être à changer pour les synchro de plusieurs UI car sinon il
devient difficile de repérer pour l'ui les tâches et périodes qui ont
été supprimées de la base par un tiers sans parcourir toute la liste
des tâches. Peut être avec une variable dans la base qui spécifie si
l'élément a été supprimé.