[[BackLinksMenu]] [[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|)]] = Analysis = == Overview == 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. [[BR]] * Move things to the base.persistence module. [[BR]] * Provide class/dependency diagrams with the new structure. [[BR]] * Ensure the existing unit tests pass and provide new if necessary. [[BR]] == Task result == The result of this task should be : * Source code [[BR]] * Class/dependency diagrams [[BR]] * Working unit tests [[BR]] == 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 == Related == [wiki:BASE_PERSISTENCE_COMMONS_R0] == How to demo == * Show the new classes and describe their relations. * Run unit tests. * Open Sophie2 and demonstrate loading/saving. = Design = * The Storage class will be moved to module org.sophie2.base.persistence as a part of [wiki:BASE_PERSISTENCE_COMMONS_R0]. * See [wiki:BASE_PERSISTENCE_COMMONS_R0#Design] 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 [wiki:BASE_PERSISTENCE_COMMONS_R0] task. = Implementation = ^(Implementation results should be described and linked here (from the wiki or the repository))^ = Testing = = Comments = * All important wiki content should be put in the corresponding section of a wiki page => [wiki:BASE_PERSISTENCE]