[[BackLinksMenu]] [[TicketQuery(summary=PRO_CHANGE_REVISION_ACCESS_R0, format=table, col=summary|owner|status|type|component|priority|effort|importance, rows=description|analysis_owners|analysis_reviewers|analysis_score|design_owners|design_reviewers|design_score|implementation_owners|implementation_reviewers|implementation_score|test_owners|test_reviewers|test_score|)]] = Analysis = == Overview == The goal of this task is to develop a scheme on how to implement a history of changes resulting from the work of the user with Sophie 2 and provide access to any given point in time in this history. [[BR]] This way a snapshot of the state of Sophie 2 at a given time point could be obtained for various purposes such as: * debugging * reverting changes * feeding the change manager with needed info * etc. == Task requirements == * Propose ideas for the structure of the history of changes. It should be flexible enough, so the queries as the following could be answered: * get a snapshot of the state of all properties at a given time point * get the value of a given property at a given time point * get a history of all the values of a given property at a given time point * get a list of all Changes that affect a given property before and after a given time point * get a list of properties which a Change affects * Since these operations might turn out quite slow, performance should be taken into consideration as early as possible: * provide rough ideas on how these operations could be implemented algorithmically efficient * also provide ideas for suitable data structures which could improve the performance * Provide rough implementation of the above ideas, if possible * Add unit test for the implementation, if possible == Task result == * Design ideas and diagrams of the proposed solutions to the given problems in this page * New code and unit tests, if any == Implementation idea == * Consider using some data structure which provides logarithmic time for some of the queries * Try providing ideas for data structures and algorithms which perform at least some of the queries efficiently. Different approaches might be possibly combined to yield good results. == Related == [wiki:PRO_LIB_CORE_TUTORIAL] [[BR]] [wiki:PRO_CHANGE_MANAGER_R0] [[BR]] [wiki:PRO_CHANGE_MERGING_R0] [[BR]] [wiki:PRO_CHANGE_PRIMITIVES_R0] [[BR]] [wiki:PRO_CHANGE_UNDO_MANAGER_R0] == How to demo == * Show this page and explain the problems and proposed solutions * Run the unit tests, if any = Design = ^(Describe your design here.)^ = Implementation = ^(Describe and link the implementation results here (from the wiki or the repository).)^ = Testing = ^(Place the testing results here.)^ = Comments = ^(Write comments for this or later revisions here.)