Rename a File ============= Scenario -------- As a scientist, I want to rename a file to a more appropriate name so I can easily keep my files organized. Summary ------- A scientist should be able to rename a file, including data files and metadata files (folder names). The display should immediately show the new name, and they should be asychronously changed in the repository. The science metadata and containing package should be updated to reflect the change. Mockup Image ------------ .. image:: images/Edit-Metadata-Rename-a-File.png Technical Sequence Diagram -------------------------- .. @startuml images/rename-a-file-sequence-diagram.png !include ../plantuml-styles.txt skinparam SequenceGroupBorderColor #AAAAAA skinparam SequenceGroupBorderThickness #AAAAAA actor "Scientist" participant DataPackageView as PackageView <<Backbone.View>> participant DataPackage as DataPackage <<Backbone.Collection>> participant EML as EML <<DataONEObject>> participant DataObject as "dataObject:DataObject" <<DataONEObject>> participant LocalStorage as LocalStore <<Store>> participant MN as MN <<Store>> PackageView -> DataPackage : listenTo("change", showCancelSave()) note right On any change, show the Cancel/Save buttons end note PackageView -> PackageView : listenTo("change #filenameElementId", handleChange()) DataPackage -> DataPackage : on("change:filename", handleChange()) PackageView -> PackageView : on("click menu.item", handleRename()) Scientist -> PackageView : Chooses "Rename ..." menu item activate PackageView PackageView -> PackageView : handleRename() note right handleRename() moves the focus to the "#filenameElementId" element and calls select() on the existing text end note PackageView -> DataObject : set("filename", filename) activate DataObject DataObject --> PackageView : dataObject deactivate DataObject deactivate PackageView activate DataPackage DataPackage -> DataPackage : handleChange() DataPackage -> DataPackage : set("dirty", true) DataPackage -> EML : updateEntity() deactivate DataPackage activate EML EML --> DataPackage : metadata deactivate EML activate DataPackage DataPackage -> PackageView: showCancelSave() deactivate DataPackage activate PackageView PackageView -> DataPackage : listenTo("change:dirty", hideCancelSave()) deactivate PackageView Scientist -> PackageView : Chooses "Save" PackageView -> DataPackage : save() activate DataPackage DataPackage -> DataObject : saveSystemMetadata() deactivate DataPackage activate DataObject DataObject -> MN : updateSystemMetadata() deactivate DataObject activate MN MN --> DataObject : identifier deactivate MN activate DataObject DataObject -> DataPackage : success deactivate DataObject activate DataPackage DataPackage -> EML : save() deactivate DataPackage activate EML EML -> MN : update(pid, newPid, sysmeta, object) deactivate EML activate MN MN --> EML : identifier deactivate MN activate EML EML -> DataPackage : success deactivate EML activate DataPackage DataPackage -> MN : update(pid, newPid, sysmeta, object) deactivate DataPackage activate MN MN --> DataPackage : identifier deactivate MN activate DataPackage DataPackage -> DataPackage : set("dirty", false) DataPackage -> PackageView : hideCancelSave() deactivate DataPackage @enduml .. image:: images/rename-a-file-sequence-diagram.png