[[BackLinksMenu]] [[TicketQuery(summary=BASE_PERSISTENCE_PROPERTY_FORMAT_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 == This task is about persisting ProObjects/Properties. Generally the idea is that in Sophie 2 we have immutables and ProObjects/Properties and they have to be persisted. This task is responsible for persisting the property part. == Task requirements == * !ProObjects should be persisted and the following should be taken into consideration when designing how this will be done: * ProObjects and immutables form an acyclic graph of dependencies in Sophie 2. Having this in mind, persisting should be designed in such a way that: * saving and especially loading shouldn't be affected by the order of traversal. * usage of SharedSaver and SharedLoader should be explained in the context of persisting ProObjects/Properties. * sample use case with explanations should be provided. * explanations on why the proposed design won't be affected by the loading order. * immutables are the leaves in this graph of dependencies. Explain how persisting ProObject/Properties should collaborate with persisting of immutables to achieve a working scheme for persisting the whole graph. * Think of scenarios and define the way properties save/load. * Create a wiki page with the design of the format that will handle the things stated above. * provide scenarios to show that this format is really needed. * create diagrams. * give concrete explanations. * All important wiki content should be put in the corresponding section of a wiki page => [wiki:BASE_PERSISTENCE] == Task result == * wiki page. == Implementation idea == * view code: * => [source:trunk/sophie2-platform/modules/org.sophie2.base.persistence] * => [source:trunk/sophie2-platform/modules/org.sophie2.main.model.book.format.r1/src/main/java/org/sophie2/main/model/book/format/r1] * => [source:trunk/sophie2-platform/modules/org.sophie2.main.model.book.format.r2/src/main/java/org/sophie2/main/model/book/format/r2] * View the related things. * Design format and create a wiki page with the task requirements fulfilled. == Related == * [wiki:BASE_PERSISTENCE_COMMONS_R0] * [wiki:BASE_PERSISTENCE_INTERMEDIATE_STORAGE_R0] * [wiki:BASE_PERSISTENCE_FORMAT_REGISTRY_R0] * [wiki:BASE_PERSISTENCE_FORMAT_POINT_R0] * [wiki:BASE_PERSISTENCE_IMMUTABLES_R0] == How to demo == * show the wiki page and explain the things described there. = 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.)