|
Re: [argouml-dev] Demo undo for deleting an attribute: msg#00046db.axion.devel
Hi Bob, et al., So we both see the same problem. I'll try to keep the discussion structured with ABC, but in reverse order: C. Before discussing your solution B, there is maybe another possibility, and that is to start working with synonym UUIDs (let's call this solution C): if an item is deleted, its UUID is stored as string, and when it needs to be recreated, you will get a new UUID from MDR for the replacing element. The idea is to maintain a set of sets of synonyms somewhere, and when other elements need to be recreated by undo/redo, use the synonyms to reconnect it. Is this a feasible solution? B. Now about B - the principle: I do not recall any other application that really works like this, except for the requirements management tool Doors, but there must be others: If you delete something, it stays present in the database, it is just not shown anywhere. Deleted items stay in the database forever intentionally, unless you would "flush" them, another function. In Doors, you even have a checkbox menu-item "show deleted" that makes them visible. There must be other applications that use this pattern (databases, filesystems, change-management tools, ...). Persistence is not a problem, since the deleted items will never be persisted anyhow. BTW, Andrea's quest for a regular autosave may be gravely complicated - but that should not stop us. Now about B - the way to implement it: I do not know if you noticed, but in fact you could use the old Trashcan (in the Project class) in ArgoUML instead of the «deleted» stereotype: the story is the same, instead of testing on the presence of the stereotype «deleted», you test on the presence of the UUID in the Trashcan collection. I prefer to work with the Trashcan above the «deleted». A. Your solution A is indeed not the way to go according my intuition, too. A slightly different approach is to not store the complete repository, but only the delta - err.. this is a wild idea (do not take too serious): store the MDR repository in a Subversion repository after each and every change (commit). This will make it "easy" to undo a few steps, by reverting to a previous version. It may even open a solution for the multi-user problem. I think the bottleneck for performance would be the conversion of the MDR repository to XMI for every edit, and vice versa for every undo. Not likely, this solution. So, C needs some more thought - please help! Otherwise B seems the only feasible way to me. Regards, Michiel ----- Original Message ----- From: "Bob Tarling" <bob.tarling@xxxxxxxxx> To: <dev@xxxxxxxxxxxxxxxxxx> Sent: Saturday, November 25, 2006 7:14 PM Subject: Re: [argouml-dev] Demo undo for deleting an attribute Hi Michiel -- No virus found in this outgoing message. Checked by AVG Free Edition. Version: 7.1.409 / Virus Database: 268.14.16/551 - Release Date: 25/11/2006 |
|
| <Prev in Thread] | Current Thread | [Next in Thread> |
|---|---|---|
| Previous by Date: | Re: [argouml-dev] Demo undo for deleting an attribute: 00046, Bob Tarling |
|---|---|
| Next by Date: | Re: [argouml-dev] Problem with the persistence/load of diagrams.: 00046, Christian López Espínola |
| Previous by Thread: | Re: [argouml-dev] Demo undo for deleting an attributei: 00046, Bob Tarling |
| Next by Thread: | RE: [argouml-dev] Demo undo for deleting an attribute: 00046, Tom Morris |
| Indexes: | [Date] [Thread] [Top] [All Lists] |
| News | FAQ | advertise |