Rollback to a previous state of the model [message #1792391] |
Mon, 16 July 2018 20:39 |
Parsa Pourali Messages: 210 Registered: February 2014 |
Senior Member |
|
|
Hello,
[I have already asked this question on XText forum but didn't get the answer I wanted, so I thought maybe someone here could help]. I was wondering if there is a way to get a snapshot of the model at some point and then revert back everything to it. I can't use RecordingCommand for some reasons. So, basically, I need to do:
1- keeping the snapshot in the memory,
2- do sth with the model and modify it.
3- if the modification is not what I wanted, then revert everything back to the snapshot that is taken in the step 1.
I tried to create an element (i.e. snapshot resource) in the memory and use ecoreutils.copy to copy everything from the original resource to the snapshot resource. But the copy back from the snapshot to the original resource does not seem to work :(
Any help would be appreciated.
Thanks,
Parsa
[Updated on: Tue, 17 July 2018 14:49] Report message to a moderator
|
|
|
Re: Rollback to a previous state of the model [message #1792488 is a reply to message #1792391] |
Wed, 18 July 2018 15:13 |
|
EMF Transaction handles all of this so you do not have to. Sirius uses EMF Transaction to manager all model changes made in the context of a Sirius session.
What you need in your case is to register a org.eclipse.emf.transaction.ResourceSetListener configured as a pre-commit listener on the session's TransactionalEditingDomain, and override the transactionAboutToCommit(ResourceSetChangeEvent). That method will get called when a model change is about to be commited, and you can throw a org.eclipse.emf.transaction.RollbackException to indicate to EMF Transaction that something is wrong with the change and it should be rolled back.
Pierre-Charles David - Obeo
Need training or professional services for Sirius?
http://www.obeodesigner.com/sirius
|
|
|
|
|
|
Powered by
FUDForum. Page generated in 0.07666 seconds