Last modified 14 years ago Last modified on 01/29/09 17:23:18

Error: Macro BackLinksMenu(None) failed
compressed data is corrupt

Error: Macro TicketQuery(summary=BASE_PERSISTENCE_INTERMEDIATE_STORAGE_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|) failed
current transaction is aborted, commands ignored until end of transaction block



The aim of this task is to revise the code of the Storage class - the intermediate format for saving Sophie2 books.

Task requirements

  • Refactor the code of the Storage class and all related classes so that it is working.
  • Move things to the base.persistence module.
  • Provide class/dependency diagrams with the new structure.
  • Ensure the existing unit tests pass and provide new if necessary.

Task result

The result of this task should be :

  • Source code
  • Class/dependency diagrams
  • Working unit tests

Implementation idea

  • Review the code in main.model.persist* packages
  • Run the existing unit tests and see where they fail.
  • Run the application and try loading/saving books. Mark the exceptions you get.
  • Fix the errors - ensured by passing unit tests and ability to load/save.
  • Move to the new module and refactor. Test again


How to demo

  • Show the new classes and describe their relations.
  • Run unit tests.
  • Open Sophie2 and demonstrate loading/saving.


  • The Storage class will be moved to module org.sophie2.base.persistence as a part of BASE_PERSISTENCE_COMMONS_R0.
  • See BASE_PERSISTENCE_COMMONS_R0 for design diagrams of the class structure.
  • Unit tests will be linked in the implementation since they are not moved to their new location yet.
  • Rest of the task includes refactoring of code (the Storage class and related to it) - it will be done in conjunction with the BASE_PERSISTENCE_COMMONS_R0 task.


(Implementation results should be described and linked here (from the wiki or the repository))



  • All important wiki content should be put in the corresponding section of a wiki page => BASE_PERSISTENCE