[[BackLinksMenu]] [[TicketQuery(summary=GROUP_RESOURCE_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 = ^(Give as much as possible of the needed information for designing and implementing the task in the following sections.)^ == Overview == Define a stable resource design. Explain and document what is achieved Resource is an object that can be persisted. Some of the resources can be used as frame content or a timeline. Resources can be nested in other resources (i.g. book can have nested another book (embedded book)).[[BR]] Base resource model should have the following information * UUID * Target * Data * URL * MetaInfo * Comment Resource Scope could be * Book * Local * Server Types of resources (the target of the resource) * Text * Plain * RTF * HTML * Image * Audio * Movie * Book * Templates * User * Group MetaInfo of the resource is: * The author of the resource * The date the resource was created * Version of the resource * The date the resource was last modified * Who was the last that modified the resource * The dimensions of the image (if the target of the resource is an image) * etc. Operations over a resource: * The resource can be created. * The resource can be modified (in a separate window). * The resource can be deleted. * The resource can be persisted. * The resource can be imported(exported) to a server. * The resource can be previewed (in a separate window). Resource Manager manages: * Resource Versioning * Resource Security * Resource save/load == Task requirements == * Define a way to refer (access) resources * The resource reference should be like UID * The resource reference should allow finding the resource even if it is not loaded yet (location) * The reference mechanism should handle the case when the resource is not available (for example - server not available) * Define methods for * Checking if a resource is available (this should be different from get method) * This should update the status property * Getting resource location * Resource getting it's parent * Resource getting list of it's children * Attaching a resource * Ensure that this method loads only the resource, the children should be loaded by other method due to performance issues * Attaching a resource should be done as late as possible * Detaching a resource * Detaching the resource should be made as soon as possible (if it should not be cached for some reasons) * Detaching a resource should also detach attached children of this resource * Renaming a resource * Cloning a resource * Explain annotations {{{ * annotations related to Resources * explain ownership related with Resources and use of @Own * make a parallel with referencing Resources }}} * Document the defined structure * Apply the defined structure for the existing resources (this may be postponed) == Task result == The result of this task is source code and wiki pages. == Implementation idea == The reference id can be combination of unique id and path like in operating system. Refering children and other resources will be easy (./ ../ etc) == Related == ^(Add links to related tasks that could be useful or helpful.)^ == How to demo == ^(Provide instructions for demonstration of the task.)^ = 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.)