On Wed, 2006-12-20 at 19:14 +0100, Andrea Aime wrote:
> Hi all,
> I'm having some issues with the semantics of a rollback
> in the versioned data store, so I'm going to describe
> the problem to see if anybody has some clue.
>
> I was thinking of adding the following operation to the
> versioned datastore:
>
> void rollback(String version, String typeName, Filter filter,
> Transaction t);
>
> where:
> * version is the revision, or could be branch:revision
> once we have the
> * typeName is the feature type subject to rollback
> * filter matches the features that need to be rolled back
> * transaction allows to do multiple rollbacks on different
> feature types and carries user and commit message as properties
Seems like you are doing something much more complex than a simple
rollback.
At the start of any 'rollback' transaction, the system can generate the
trio:
(past state, diff to current state, current state).
If I understand you right, you want to get 'new state' using:
(past state, alternative diff to current state).
so semantically your operation is against the diff not either of the end
states.
Not sure what that implies, but I suspect that all of the conflicting
operations, like those you describe, arise because you can't
semantically use the start and end states to describe the diff of the
diff.
--adrian
>
> Now, my problem is the filter... what should the filter match?
> The old features, the current ones?
> That's not trivial, think about a bbox filter, and a feature
> that moved from inside to outside the bbox. Shall I rollback it?
> And what about features that were deleted? They have no
> current state.
> What about the ones that have been created? They have no old state.
>
> So, I'm lending to apply rollback to every feature that matches
> the filter in either the new or old state, but I'd like to hear
> some feedback about this before going on.
>
> Plus, there's a limitation. What if I wanted to rollback only things
> that a silly user did? Unfortunately userid is not part of the
> feature type, so it's hard to deal with it. Maybe the method should
> be:
>
> void rollback(String version, String typename, String userId, Filter
> filter, Transaction t).
>
> Opinions?
> Cheers
> Andrea
>
>
> -------------------------------------------------------------------------
> Take Surveys. Earn Cash. Influence the Future of IT
> Join SourceForge.net's Techsay panel and you'll get the chance to share your
> opinions on IT & business topics through brief surveys - and earn cash
> http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
> _______________________________________________
> Geotools-devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/geotools-devel
-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Geotools-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/geotools-devel