Media Library

##Architecture Diagram: ArchitectureDiagram ##Architecture layers: ######Layer 1: Presentation layer

  • Cli View
  • GUI
  • TCP client
  • UDP client ######Layer 2: Event handler
  • Event handler ######Layer 3: Cli Event listeners
  • ExitEventListener
  • MediaLibraryCliController.ChangeModeInputListener (user select input mode)
  • MediaLibraryCliController.CreateInputListener (:c)
  • MediaLibraryCliController.ViewInputListener (:r)
  • MediaLibraryCliController.DeleteInputListener (:d)
  • MediaLibraryCliController.IncreaseAccessCountListener (:u)
  • MediaLibraryCliController.PersistenceInputListener (:p)
  • MediaLibraryCliController.ConfigInputListener (:config) ######Layer 4: Control layer:
  • GUI-Control
  • Cli-Control
  • UDP server
  • TCP server ######Layer 5: Observers:
  • MediaStorageObserver
  • TagsObserver ######Layer 6: Business Logic (GL)
  • MediaLibraryAdmin
  • CRUD ######Layer 7: Data layer
  • Persistence (JPB, JOS and Random Access File)
  • MediaStorage (in memory storage)

##Layers communication: Top -> down ######Layer 1 (Presentation layer) -> Layer 2 (Event handler)

  • Cli view notifies EventHandler of the input events ######Layer 1 (Presentation layer) -> Layer 4 (Control layer):
  • TCP client connect to TCP sever using a socket
  • UDP client sends Datagram packet to UDP server
  • GUI sends user actions and input to GUI-Control ######Layer 2 -> Layer 3 (Cli Event listeners) Event handler notifies the listeners of the input event ######Layer 3 (Cli Event listeners) -> Layer 4 (Control layer):
  • Cli-Control gets the updates from listeners ######Layer 4 (Control layer) -> Layer 5 (Observers)
  • Cli-Control register observers based on user input ######Layer 4 (Control layer) -> Layer 6 (GL)
  • Cli-Control updates the GL from events (create, update, delete, list, persistence)
  • GUI-Control updates the GL from user input and actions ######Layer 5 (Observers) -> Layer 6 (GL)
  • Tags Observer registered to get the GL updates ######Layer 5 (Observers) -> Layer 7 (Data layer)
  • Storage Observer registered to get the storage updates ######Layer 6 (GL) -> Layer 7 (Data layer)
  • GL saves media to in memory storage (MediaStorage)
  • GL saves to file system using JOS or JBP or random access files

##Layers communication: Bottom -> Up ######Layer 4 (Control layer) -> Layer 1 (Presentation layer)

  • Cli-Control updates Cli-View from GL
  • GUI-Control updates GUI-View from GL
  • UDP server sends Datagram to the UDP client ######Layer 6 (GL) -> Layer 5 (Observers)
  • MediaLibraryAdmin notifies the observers of the updates ######Layer 7 (Data layer) -> Layer 5 (Observers)
  • Media storage notifies observers of the updates

References