[[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.)