Je construis une base de données en utilisant un BST (arbre de recherche binaire) et je veux que l'utilisateur puisse annuler les 5 dernières commandes. Aucune suggestion? J'utilise Java.ROLLBACK undo redo
Répondre
Avez-vous envisagé d'utiliser Berkey DB? Il est gratuit et pris en charge les transactions imbriquées (qui vous permettra d'avoir un certain nombre de niveaux de rollback):
http://download.oracle.com/docs/cd/E17076_02/html/gsg_txn/JAVA/nestedtxn.html
Même si vous décidez de mettre en œuvre votre propre DB, il pourrait être utile en tant que référence.
Il semble que vous voulez le Memento pattern. Essentiellement, vous créez un objet qui a toutes les informations requises pour:
- De l'état de l'arborescence avant l'opération, répétez l'opération. (Redo)
- À partir de l'état de l'arborescence après l'opération, rétablissez l'opération. (Annuler)
Vous conserveriez les cinq derniers d'entre eux. Lorsque l'utilisateur demande une annulation, prenez la dernière, demandez-lui de revenir sur l'opération, puis indiquez en quelque sorte (une variable d'index, par exemple) où vous êtes dans la liste des souvenirs. Vous devriez alors être en mesure de parcourir la liste dans les deux sens, d'annuler et de refaire autant que vous le souhaitez.
Je pensais à insérer mon arbre dans une pile le pop quand l'utilisateur appelle à défaire ?? Est-ce possible?/ – user475529
Vous pouvez le faire bien sûr, mais en utilisant un souvenir, vous économiserez beaucoup d'espace tout en permettant la fonctionnalité annuler/rétablir. – cdhowie
Quelle est la taille de l'arbre? Si c'est assez petit, vous pouvez garder une copie pour les 5 dernières opérations. – leonm
Pas très grand. Comment est-ce que je copierais ces opérations lat 5? – user475529
@ user475529: ne pas conserver les cinq dernières opérations, copier l'arbre entier après chaque opération et conserver les cinq dernières. –