diff --git a/livesupport/doc/model/Architecture.svg b/livesupport/doc/model/Architecture.svg new file mode 100644 index 000000000..9bacf14e6 --- /dev/null +++ b/livesupport/doc/model/Architecture.svg @@ -0,0 +1,179 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Scheduler + + + + + + + + + + + Local storage + + + + + + + + + + + Media archive + + + + + + + + + + + Authentication + + + + + + + + + + + Playlist editor + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/livesupport/doc/model/Authentication/Authenticateuser_SequenceDiagram.svg b/livesupport/doc/model/Authentication/Authenticateuser_SequenceDiagram.svg new file mode 100644 index 000000000..f0749190e --- /dev/null +++ b/livesupport/doc/model/Authentication/Authenticateuser_SequenceDiagram.svg @@ -0,0 +1,139 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + user + + + + : + + + + User + + + + + + + + + + system + + + + : + + + + Authentication + + + + + + + + + + + + + + + + : + + + authenticated + + + := + + + authenticate + + + ( + + + authInfo + + + ) + + + diff --git a/livesupport/doc/model/Authentication/Concepts.svg b/livesupport/doc/model/Authentication/Concepts.svg new file mode 100644 index 000000000..40419681f --- /dev/null +++ b/livesupport/doc/model/Authentication/Concepts.svg @@ -0,0 +1,259 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + << + + + component + + + >> + + + Authentication + + + + + + + AuthenticationInfo + + + + + + + + + + + + + + + AuthenticationInterface + + + + + + + AuthenticationDatabase + + + + + + + + + + + + + + + Authentication + + + + + + + + + + + + + + + + + + + + + + + + + + + * + + + Stores + + + + + + + + + + + + Checks authentication info in + + + + + + + User + + + + + + + + + + + + + + + + + + + + Authenticates by + + + + + + + + + + + + Contains + + + diff --git a/livesupport/doc/model/Authentication/EssentialUseCases.svg b/livesupport/doc/model/Authentication/EssentialUseCases.svg new file mode 100644 index 000000000..e9d9969d2 --- /dev/null +++ b/livesupport/doc/model/Authentication/EssentialUseCases.svg @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Authentication + + + + + + + + + UC-1 Authenticate user + + + + + + + User + + + + + + diff --git a/livesupport/doc/model/Authentication/Systembehaviour.svg b/livesupport/doc/model/Authentication/Systembehaviour.svg new file mode 100644 index 000000000..db94174e9 --- /dev/null +++ b/livesupport/doc/model/Authentication/Systembehaviour.svg @@ -0,0 +1,145 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Authentication + + + + + + + + + + + + + + + AuthenticationInterface + + + + + + + + + + + authenticate + + + ( + + + authInfo + + + : + + + AuthenticationInfo + + + ) + + + : + + + boolean + + + + << + + + realize + + + >> + + + + + + + + + diff --git a/livesupport/doc/model/Authentication/index.html b/livesupport/doc/model/Authentication/index.html new file mode 100644 index 000000000..38ba10327 --- /dev/null +++ b/livesupport/doc/model/Authentication/index.html @@ -0,0 +1,500 @@ + + + + + LiveSupport Authentication specification + + + +

Preface

+This document is part of the LiveSupport +project, Copyright © 2004 Media +Development Loan Fund, under the GNU GPL.
+ +

Scope

+This document contains the specification of the LiveSupport +Authentication component.
+
+This document contains embedded SVG figures, thus an SVG +capable browser is needed to view it, or an SVG plugin like Adobe's SVG Viewer.
+

Requirements

+

Overview
+

+The purpose of the Authentication component is to provide +authentication services by receiving authentication information and +checking these against an authentication database. +

Goals

+The authentication component is a re-usable component, which provides +both local and remote interfaces. Different authentication methods may +be supported, with username / password authentication being the most +trivial.
+

System functions

+The main system functions are described below. There are three +categories for these functions:
+ + + + + + + + + + + + + + + + + + + +
function category
+
meaning
+
evident
+
Should perform, and the user should be cognizant +that it is performed
+
hidden
+
Should perform, but not visible to the users.
+
frill
+
Optional
+
+
+
+ + + + + + + + + + + + + + + + + + +
ref#
+
function
+
category
+
F1.1
+
Authenticate users
+
evident
+

+

+

+
+
+

System attributes

+Generic attributes
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ref#
+
attribute
+
details and constraints
+
category
+
A1.1
+
operating system platform
+
Linux
+
must
+
A1.2
+
local interface
+
locally callable API
+
must
+
A1.3
+
remote interface
+
remote interface via some RPC method like +XML-RPC or SOAP
+
want
+

+

+

+

+
+
+Attributes related to system functions
+
+ + + + + + + + + + + + + + + + + + + +
ref#
+
function
+
ref#
+
attribute
+
details and constraints
+
category
+

+

+

+

+

+

+
+
+

Essential use cases

+This section lists generic (essential) uses cases, that do not contain +architecture-specific considerations.
+
+ +

UC-1 Authenticate user
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ref# UC-1
use case Authenticate user
type primary, essential
actors User
purpose Authenticate a user
overview The user contacts the Authentication module with +the intention of verifying his integrity.
references F1.1
+

Typical course of events

+ + + + + + + + + + + + + + + + + + + + + + + + + +
actor action
+
system response
+
1. User connects to the authentication component +with the intention of authenticating
+

+

+
2. The User provides authentication +information 3. The system checks the authentication information +againts its internal database, and informs the user if the provided +information was correct.

+

+

+

+
+
+

Alternate courses

+none
+
+

Conceptual model

+The following figure displays the semantic concepts identified for the +Scheduler daemon, and the main associations between the concepts.
+
+ +
+

Concepts

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
concept
+
description
+
Authentication database
+
A database containing authentication +information, against which user-sent authentication information can be +checked.
+
Authentication
+
Component responsible for doing the +authentications
+
Authentication info
+
The information a user sends during +authentication, provides the basis for authentication
+
User
+
The party that wants to authenticate
+
Authentication interface
+
The local or remote interface for authentications
+

+

+
+
+

Associations

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
source
+
association
+
target
+
description
+
Authentication
+
Checks authentication info in
+
Authentication database
+

+
Authentication database
+
Stores
+
Authentication info
+

+
User
+
Contains
+
Authentication info
+

+
User
+
Authenticates by
+
Authentication interface
+

+

+

+

+

+
+
+

System behavior

+The behavior of the system as a whole as experienced from the outside +is discussed in this section.
+

System sequence diagrams

+System diagrams are presented for each use case below.
+

UC-1 Authenticate user
+

+ +
+

System objects

+The following figures shows the system objects and their functions, as +derived from the system sequence diagrams.
+ +

Contracts

+For all operations exposed in the system sequence diagrams, the +following contracts are defined.
+

Contract for AuthenticationInterface : authenticate

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Name
+
authenticate
+(authInfo : AuthenticationInfo)
+: boolean
+
Responsibilities
+
Check if the the +provided authentication info is recognized.
+
Type
+
system
+
Cross-reference
+
UC-1
+
Notes
+

+
Exceptions
+
none
Output
+
true if the provided +authentication is recognized, false otherwise
+
Pre-conditions
+
none
Post-conditions
+
none
+

+

+

+

+
+
+
+ + diff --git a/livesupport/doc/model/LiveSupport.zuml b/livesupport/doc/model/LiveSupport.zuml new file mode 100644 index 000000000..50913c609 Binary files /dev/null and b/livesupport/doc/model/LiveSupport.zuml differ diff --git a/livesupport/doc/model/LocalStorage/Accessrawaudiodata_SequenceDiagram.svg b/livesupport/doc/model/LocalStorage/Accessrawaudiodata_SequenceDiagram.svg new file mode 100644 index 000000000..22cd1d9c3 --- /dev/null +++ b/livesupport/doc/model/LocalStorage/Accessrawaudiodata_SequenceDiagram.svg @@ -0,0 +1,239 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + system + + + + : + + + + Local storage + + + + + + + + + + + + + + audio player + + + + : + + + + Audio player + + + + + + + + + + + + : + + + authenticated + + + := + + + authenticate + + + ( + + + authId + + + ) + + + + + + + + + + + : + + + rawAudioData + + + := + + + accessRawAudioData + + + ( + + + audioClipId + + + ) + + + + + + + : + + + releaseRawAudioData + + + ( + + + rawAudioData + + + ) + + + + + + + diff --git a/livesupport/doc/model/LocalStorage/Concepts.svg b/livesupport/doc/model/LocalStorage/Concepts.svg new file mode 100644 index 000000000..d21149446 --- /dev/null +++ b/livesupport/doc/model/LocalStorage/Concepts.svg @@ -0,0 +1,536 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + << + + + component + + + >> + + + Local storage + + + + + + + AudioClip + + + + + + + - + + + id + + + : + + + UniqueId + + + - + + + duration + + + : + + + Time + + + + + + + + + + + Authentication + + + + + + + + + + + + + + + RawAudioData + + + + + + + - + + + currentlyAccessing + + + : + + + int + + + + + + + + + + + isAccessed + + + ( + + + ) + + + : + + + boolean + + + + + + + MetaData + + + + + + + + + + + + + + + UniqueId + + + + + + + + + + + + + + + + + + + + Contains + + + + + + + + + + + + Is described by + + + + + + + + + + + + Is identified by + + + + + + + SearchCriteria + + + + + + + + + + + + + + + Audio player + + + + + + + + + + + + + + + Storage maintainer + + + + + + + + + + + + + + + + + + + + Manages + + + + + + + + + + + + Is authenticated by + + + + + + + + + + + + Is authenticated by + + + + + + + + + + + + Accesses + + + + + + + + + + + + Searches in + + + + + + + + + + + + Searches by + + + diff --git a/livesupport/doc/model/LocalStorage/Deleteaudioclip_SequenceDiagram.svg b/livesupport/doc/model/LocalStorage/Deleteaudioclip_SequenceDiagram.svg new file mode 100644 index 000000000..a959af855 --- /dev/null +++ b/livesupport/doc/model/LocalStorage/Deleteaudioclip_SequenceDiagram.svg @@ -0,0 +1,183 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + storage maintainer + + + + : + + + + Storage maintainer + + + + + + + + + + system + + + + : + + + + Local storage + + + + + + + + + + + + + + + + : + + + authenticated + + + := + + + authenticate + + + ( + + + authInfo + + + ) + + + + + + + + + + + : + + + deleteAudioClip + + + ( + + + audioClipId + + + ) + + + diff --git a/livesupport/doc/model/LocalStorage/EssentialUseCases.svg b/livesupport/doc/model/LocalStorage/EssentialUseCases.svg new file mode 100644 index 000000000..d7b96602b --- /dev/null +++ b/livesupport/doc/model/LocalStorage/EssentialUseCases.svg @@ -0,0 +1,142 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Local storage + + + + + + + + + UC-1 Store or update + Audio clip + + + + + + + UC-2 Delete Audio clip + + + + + + + UC-3 Update Audio clip + metadata + + + + + + + UC-4 Access raw audio data + + + + + + + UC-5 Search in metadata + + + + + + + Storage maintainer + + + + + + + Audio player + + + + + + + + + + + + + + + + + + diff --git a/livesupport/doc/model/LocalStorage/Searchinmetadata_SequenceDiagram.svg b/livesupport/doc/model/LocalStorage/Searchinmetadata_SequenceDiagram.svg new file mode 100644 index 000000000..787e602c0 --- /dev/null +++ b/livesupport/doc/model/LocalStorage/Searchinmetadata_SequenceDiagram.svg @@ -0,0 +1,195 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + system + + + + : + + + + Local storage + + + + + + + + + + + + + + storage maintainer + + + + : + + + + Storage maintainer + + + + + + + + + + + + : + + + authenticated + + + := + + + authenticate + + + ( + + + authId + + + ) + + + + + + + + + + + : + + + matchingUniqueIds + + + := + + + searchMetadata + + + ( + + + criteria + + + ) + + + diff --git a/livesupport/doc/model/LocalStorage/Storeorupdateaudioclip_SequenceDiagram.svg b/livesupport/doc/model/LocalStorage/Storeorupdateaudioclip_SequenceDiagram.svg new file mode 100644 index 000000000..f83d68b99 --- /dev/null +++ b/livesupport/doc/model/LocalStorage/Storeorupdateaudioclip_SequenceDiagram.svg @@ -0,0 +1,195 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + system + + + + : + + + + Local storage + + + + + + + + + + + + + + storage maintainer + + + + : + + + + Storage maintainer + + + + + + + + + + + + : + + + authenticated + + + := + + + authenticate + + + ( + + + authInfo + + + ) + + + + + + + + + + + : + + + audioClipId + + + := + + + storeAudioClip + + + ( + + + audioClip + + + ) + + + diff --git a/livesupport/doc/model/LocalStorage/Systembehaviour.svg b/livesupport/doc/model/LocalStorage/Systembehaviour.svg new file mode 100644 index 000000000..6254fefa9 --- /dev/null +++ b/livesupport/doc/model/LocalStorage/Systembehaviour.svg @@ -0,0 +1,553 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Local storage + + + + + + + + + + + + + + + authenticate + + + ( + + + authenticationInfo + + + : + + + AuthenticationInfo + + + ) + + + : + + + boolean + + + + + + + existsAudioClip + + + ( + + + audioClipId + + + : + + + UniqueId + + + ) + + + : + + + boolean + + + + + + + storeAudioClip + + + ( + + + audioClip + + + : + + + AudioClip + + + ) + + + : + + + UniqueId + + + + + + + deleteAudioClip + + + ( + + + audioClipId + + + : + + + UniqueId + + + ) + + + : + + + void + + + + + + + updateAudioClipMetadata + + + ( + + + audioClipId + + + : + + + UniqueId + + + , + + + newMetadata + + + : + + + MetaData + + + ) + + + : + + + void + + + + + + + accessRawAudioData + + + ( + + + audioClipId + + + : + + + UniqueId + + + ) + + + : + + + RawAudioData + + + + + + + releaseRawAudioData + + + ( + + + rawAudioData + + + : + + + RawAudioData + + + ) + + + : + + + void + + + + + + + searchMetadata + + + ( + + + criteria + + + : + + + SearchCriteria + + + ) + + + : + + + UniqueId + + + + + + + getAudioClip + + + ( + + + audioClipId + + + : + + + UniqueId + + + ) + + + : + + + AudioClip + + + diff --git a/livesupport/doc/model/LocalStorage/UpdateAudioclipmetadata_SequenceDiagram.svg b/livesupport/doc/model/LocalStorage/UpdateAudioclipmetadata_SequenceDiagram.svg new file mode 100644 index 000000000..9e1e07c15 --- /dev/null +++ b/livesupport/doc/model/LocalStorage/UpdateAudioclipmetadata_SequenceDiagram.svg @@ -0,0 +1,195 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + system + + + + : + + + + Local storage + + + + + + + + + + + + + + storage maintainer + + + + : + + + + Storage maintainer + + + + + + + + + + + + : + + + authenticated + + + := + + + authenticate + + + ( + + + authInfo + + + ) + + + + + + + + + + + : + + + updateAudioClipMetadata + + + ( + + + audioClipId + + + , + + + newMetadata + + + ) + + + diff --git a/livesupport/doc/model/LocalStorage/index.html b/livesupport/doc/model/LocalStorage/index.html new file mode 100644 index 000000000..8c7f9e79d --- /dev/null +++ b/livesupport/doc/model/LocalStorage/index.html @@ -0,0 +1,1908 @@ + + + + + LiveSupport Local storage specification + + + +

Preface

+This document is part of the LiveSupport +project, Copyright © 2004 Media +Development Loan Fund, under the GNU GPL.
+ +

Scope

+This document contains the specification of the LiveSupport Local +storage component.
+
+This document contains embedded SVG figures, thus an SVG +capable browser is needed to view it, or an SVG plugin like Adobe's SVG Viewer.
+

Requirements

+

Overview
+

+The purpose of the Local storage component is to store Audio Clips +locally.
+

Goals

+The goal of the local storage system is to store Audio Clips locally. +Audio Clips contain audio data bundled with metadata describing it. +Storing locally means that the binary audio data is available not just +as a stream, but also as random seekable file.
+

System functions

+The main system functions are described below. There are three +categories for these functions:
+ + + + + + + + + + + + + + + + + + + +
function category
+
meaning
+
evident
+
Should perform, and the user should be cognizant +that it is performed
+
hidden
+
Should perform, but not visible to the users.
+
frill
+
Optional
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ref#
+
function
+
category
+
F1.1
+
Store audio clips
+
evident
+
F1.2
+
Provide seekable access to audio data
+
evident
+
F1.3
+
Delete stored clips
+
evident
+
F1.4
+
Update stored clips
+
evident
+
F1.5
+
Search Audio clips by querying metadata
+
evident
+

+

+

+
+
+

System attributes

+Generic attributes
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ref#
+
attribute
+
details and constraints
+
category
+
A1.1
+
operating system platform
+
Linux
+
must
+
A1.2
+
local interface
+
locally callable API
+
must
+
A1.4
+
supported audio formats
+
Ogg Vorbis, MP3, wav
+
must
+
A1.5
+
file system level interface
+
adding, updated and delete from the local +storage can be done by moving files within the file system by legacy +tools
+
frill
+
A1.6
+
uniquely identifiable Audio clips
+
all audio clips should be uniquely identifiable, +even when moved among Local storage systems
+
must
+

+

+

+

+
+
+Attributes related to system functions
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
ref#
+
function
+
ref#
+
attribute
+
details and constraints
+
category
+
F1.2
+
Provide seekable access to audio data
+
A1.3
+
provide file handle
+
provide randomly seekable file level access to +raw +audio data
+
must
+

+

+

+

+

+

+
+
+

Essential use cases

+This section lists generic (essential) uses cases, that do not contain +architecture-specific considerations.
+
+ +

UC-1 Store or update Audio clip
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ref# UC-1
use case Store or update Audio clip
+
type primary, essential
actors Storage maintainer
purpose To store a new Audio clip in the local storage, +or update (replace) an already stored Audio clip
+
overview The Storage maintainer contacts the Local +storage with the aim +of uploading and storing a new Audio Clip. If the uploaded Audio clip +is already stored in Local storage (with respect of having the same +unique id), the stored one is replaced with the uploaded one.
+
references F1.1, F1.4, A1.6
+
+

Typical course of events

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
actor action
+
system response
+
1. Storage maintainer connects to the Local storage +with the +intention of storing an Audio clip
+

+

+
2. The Storage maintainer provides authentication +information 3. The system authenticates the Storage maintainer +and grants +access.
+
4.
+
The Storage maintainer presents the new Audio +clip data, +including raw audio data and metadata
+
5.
+
The system verifies the received data
+

+

+
6.1
+
If the presented Audio clip does not contain a +unique id, one is generated.
+

+

+
6.2
+
If the presented Audio clip contains a unique +id, and there already is an Audio clip stored with the same id, the +stored one is replaced with the uploaded Audio clip.
+

+

+
7.
+
The system stores the received Audio clip and +notifies the Storage maintainer of the actions taken and the unique id +of the stored clip.
+
8.
+
The Storage maintainer disconnects
+

+

+

+

+

+

+
+
+

Alternate courses

+ +
+

UC-2 Delete Audio clip
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ref# UC-2
use case Delete Audio clip
+
type primary, essential
actors Storage maintainer
purpose To delete an existing Audio clip in the local +storage
+
overview The Storage maintainer contacts the Local +storage with the aim +of deleting an existing Audio Clip
+
references F1.3
+

Typical course of events

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
actor action
+
system response
+
1. Storage maintainer connects to the Local storage +with the +intention of deleting an Audio clip
+

+

+
2. The Storage maintainer provides authentication +information 3. The system authenticates the Storage maintainer +and grants +access.
+
4.
+
The Storage maintainer presents the unique id of +an Audio clip stored in Local storage for deletion
+
5.
+
The system deletes the Audio clip corresponding +to the presented unique id.
+
6.
+
The Storage maintainer disconnects
+

+

+

+

+

+

+
+
+

Alternate courses

+ +
+

UC-3 Update Audio clip metadata
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ref# UC-3
use case Update Audio clip metadata
+
type primary, essential
actors Storage maintainer
purpose To update the metadata of an Audio clip, without +uploading raw audio data again.
+
overview The Storage maintainer contacts the Local +storage with the aim +of updating the metadata for an already stored Audio clip
+
references F1.4
+

Typical course of events

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
actor action
+
system response
+
1. Storage maintainer connects to the Local storage +with the +intention of updating the metadata for an Audio clip
+

+

+
2. The Storage maintainer provides authentication +information 3. The system authenticates the Storage maintainer +and grants +access.
+
4.
+
The Storage maintainer presents the unique id of +an Audio clip stored in Local storage and the new metadata for that +Audio clip
+
5.
+
The system verifies the clip id and the metadata
+

+

+
6.
+
The system replaces the metadata of the Audio +clip with the presented one
+
7.
+
The Storage maintainer disconnects
+

+

+

+

+

+

+
+
+

Alternate courses

+ +
+

UC-4 Access raw audio data
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ref# UC-4
use case Access raw audio data
+
type primary, essential
actors Audio player
+
purpose To access raw audio of Audio clips stored in the +Local storage.
+
overview The Audio player accesses the raw audio data +with the ability of randomly seeking in it.
+
references F1.2, A1.3
+
+

Typical course of events

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
actor action
+
system response
+
1. Audio player connects to the Local storage with +the +intention of accessing raw audio data
+

+

+
2. The Audio player provides authentication +information 3. The system authenticates the Audio player and +grants +access.
+
4.
+
The Audio player presents the unique id of an +Audio clip stored in Local storage that he wants to access
+
5.
+
The systems looks up the Audio clip, and +provides a seekable handle to the Audio player
+
6.
+
The Audio player accesses the raw audio data, +including seeking in it.
+

+

+
7.
+
The Audio player closes it's access and +disconnects
+

+

+

+

+

+

+
+
+

Alternate courses

+ +
+

UC-5 Search in metadata
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ref# UC-5
use case Search in metadata
+
type primary, essential
actors Storage maintainer
+
purpose To search in the metadata of audio clips
+
overview The Storage maintainer searches through the +stored Audio clips by specifying search criteria for the metadata of +the clips
+
references F1.5
+
+

Typical course of events

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
actor action
+
system response
+
1. Storage maintainer connects to the Local storage +with the +intention of searching.
+

+

+
2. The Storage maintainer provides authentication +information 3. The system authenticates the Storage maintainer +and grants +access.
+

+

+
4.
+
The system provides a way of specifying search +criteria with respect to the existing metadata structures
+
5.
+
The Storage maintainer specifies a search +criteria
+
6.
+
The system searches through the metadata of +contained Audio clips, and presents a list of matches
+
7.
+
The Storage maintainer refines his search and +searches again
+
8.
+
The system does a new search according to the +refined criteria, and presents the results to the Storage maintainer
+
9.
+
The storage maintainer reviews the results
+

+

+
10.
+
The storage maintainer disconnects
+

+

+

+

+

+

+
+
+

Alternate courses

+ +

+

+
+

Conceptual model

+The following figure displays the semantic concepts identified for the +Scheduler daemon, and the main associations between the concepts.
+
+ +
+

Concepts

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
concept
+
description
+
Authentication
+
Component responsible for doing the +authentications
+
Unique Id
+
A globally unique identifier used to to +differentiate between objects that might even be created on different +systems. Even though the whole space of Id is not known, the Ids must +be unique.
+
MetaData
+
Data about the AudioClip
+
SearchCriteria
+
Describes the search parameters when doing a +search on the MetaData
+
AudioClip
+
The basic unit of audio handled by Local storage
+
RawAudioData
+
The binary audio data contained in an Audio clip
+
Storage maintainer
+
The actor that maintains the contents of the +Local storage
+
Audio player
+
The actor that accesses the raw audio contained +in the Local storage
+

+

+
+
+

Associations

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
source
+
association
+
target
+
description
+
AudioClip
+
Is identified by
+
UniqueId
+
This is a globally unique id for each Audio clip
+
AudioClip
+
Is described by
+
MetaData
+

+
AudioClip
+
Contains
+
RawAudioData
+

+
Storage maintainer
+
Is Authenticated by
+
Authentication
+

+
Storage maintainer
+
Searches in
+
MetaData
+

+
Storage maintainer
+
Searches by
+
SearchCriteria
+
The storage maintainer specifies such a +SearchCriteria when doing a search on MetaData
+
Storage maintainer
+
Manages
+
AudioClip
+
This includes uploading, updating and deleting +AudioClips
+
Audio player
+
Is Authenticated by
+
Authentication
+

+
Audio player
+
Accesses
+
RawAudioData
+
This is a seekable access to raw audio data.
+

+

+

+

+
+
+

System behavior

+The behavior of the system as a whole as experienced from the outside +is discussed in this section.
+

System sequence diagrams

+System diagrams are presented for each use case below.
+

UC-1 Store or update Audio clip

+ +
+

UC-2 Delete Audio clip

+ +
+

UC-3 Update Audio clip metadata

+ +
+

UC-4 Access raw audio data

+ +
+

UC-5 Search in metadata

+ +

System objects

+The following figure shows the system objects and their functions, as +derived from the system sequence diagrams.
+ +

Contracts

+For all operations exposed in the system sequence diagrams, the +following contracts are defined.
+

Contract for Local storage : authenticate

+see Authentication : Authenticate
+

Contract for Local storage : existsAudioClip
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Name
+
existsAudioClip
+(audioClipId : UniqueId)
+: boolean
+
Responsibilities
+
Check if an Audio clip +with the specified id is stored in local storage
+
Type
+
system
+
Cross-reference
+
none
+
Notes
+
none
+
Exceptions
+
none
Output
+
true if an Audio clip +with the specified id is stored in Local storage, false otherwise
+
Pre-conditions
+
none
Post-conditions
+
none
+

+

+

+

+
+
+

Contract for Local storage : storeAudioClip
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Name
+
storeAudioClip
+(audioClip : AudioClip)
+: UniqueId
+
Responsibilities
+
Store a new audio clip +or replace an existing one.
+
Type
+
system
+
Cross-reference
+
UC-1
+
Notes
+
none
+
Exceptions
+
if this is an AudioClip +update, and the RawAudioData of the already existing AudioClip is is +being accessed (see UC-4), report as an error.
+
Output
+
the unique id of the +stored audio clip
+
Pre-conditions
+
none
Post-conditions
+
condition
+
type
+
if this is a new audio clip:an AudioClip object is createdinstance creation
+

+
a UniqueId is generated for the new clip
+
instance creation
+

+
the UniqueId is associated with the AudioClip
+
association formed
+

+
a MetaData object is created and filled with the +presented contents
+
instance creation
+

+
the MetaData is associated with the AudioClip
+
association formed
+

+
a RawAudioData object is created and filled with +the presented contents
+
instance creation
+

+
the RawAudioData is associated with the AudioClip
+
association formed
+
if the clip already existed:
+
the contents of MetaData for the AudioClip are +replaced by the presented contents
+
attribute modification
+

+
the contents of RawAudioData for the AudioClip +are replaced by the presented contents
+
attribute modification
+

+

+

+
+
+

Contract for Local storage : deleteAudioClip
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Name
+
deleteAudioClip
+(audioClipId : UniqueId)
+: void
+
Responsibilities
+
Delete an existing Audio +clip
+
Type
+
system
+
Cross-reference
+
UC-2
+
Notes
+
none
+
Exceptions
+
if no Audio clip with +the specified id exists, report as an error.
+if the RawAudioData for AudioClip is being accessed (see UC-4), report +as an error.
+
Output
+
none
+
Pre-conditions
+
none
Post-conditions
+
condition
+
type
+

+
the UniqueId for the AudioClip is deleted
+
instance deletion
+

+
the MetaData for the AudioClip is deleted
+
instance deletion
+

+
the RawAudioData for the AudioClip is deleted
+
instance deletion
+

+
the AudioClip is deleted
+
instance deletion
+

+

+

+
+
+

Contract for Local storage : updateAudioClipMetadata
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Name
+
updateAudioClipMetadata
+(audioClipId : UniqueId,
+newMetadata : MetaData)
+: void
+
Responsibilities
+
Update the metadata of +an Audio clip stored in Local storage
+
Type
+
system
+
Cross-reference
+
UC-3
+
Notes
+
none
+
Exceptions
+
if no Audio clip with +the specified id exists, report as an error.
+
Output
+
none
+
Pre-conditions
+
none
Post-conditions
+
condition
+
type
+

+
the contents of MetaData for the AudioClip are +replaced with the presented contents
+
attribute modification
+

+

+

+
+
+

Contract for Local storage : accessRawAudioData
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Name
+
accessRawAudioData
+(audioClipId : UniqueId)
+: RawAudioData
+
Responsibilities
+
Get access to raw audio +data of an AudioClip
+
Type
+
system
+
Cross-reference
+
UC-4
+
Notes
+
none
+
Exceptions
+
if no Audio clip with +the specified id exists, report as an error.
+
Output
+
the RawAudioData for the +AudioClip identified with the supplied UniqueId
+
Pre-conditions
+
none
Post-conditions
+
condition
+
type
+

+
the currentlyAccessing attribute for +RawAudioData for AudioClip is increased by one
+
attribute modification
+

+

+

+
+
+

Contract for Local storage : releaseRawAudioData
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Name
+
releaseRawAudioData
+(rawAudioData : RawAudioData)
+: void
+
Responsibilities
+
Release access for raw +audio data
+
Type
+
system
+
Cross-reference
+
UC-4
+
Notes
+
none
+
Exceptions
+
if the specified +RrawAudioData is not stored in Local storage, indicate as an error
+
Output
+
none
+
Pre-conditions
+
none
Post-conditions
+
condition
+
type
+

+
the currentlyAccessing attribute for +RawAudioData for AudioClip is decreased by one
+
attribute modification
+

+

+

+
+
+

Contract for Local storage : searchMetadata
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Name
+
searchMetadata
+(criteria : SearchCriteria)
+: UniqueId
+
Responsibilities
+
Search through the +metadata of stored AudioClips, and return all matching clip ids
+
Type
+
system
+
Cross-reference
+
UC-5
+
Notes
+
none
+
Exceptions
+
none
+
Output
+
A range of Audio clip +ids, for which MetaData matches the supplied search criteria
+
Pre-conditions
+
none
Post-conditions
+
none
+

+

+

+

+
+
+

Contract for Local storage : getAudioClip
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Name
+
getAudioClip
+(audioClipId : UniqueId)
+: AudioClip
+
Responsibilities
+
Return the contents of +an Audio clip.
+
Type
+
system
+
Cross-reference
+
see Playlist editor
+
Notes
+
none
+
Exceptions
+
if no Audio clip by the +specified id exists, report as an error.
+
Output
+
The Audio clip, +specified by the supplied id.
+
Pre-conditions
+
none
Post-conditions
+
none
+

+

+

+

+
+
+
+ + diff --git a/livesupport/doc/model/MediaArchive/Concepts.svg b/livesupport/doc/model/MediaArchive/Concepts.svg new file mode 100644 index 000000000..ecdc23162 --- /dev/null +++ b/livesupport/doc/model/MediaArchive/Concepts.svg @@ -0,0 +1,476 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + << + + + component + + + >> + + + Media archive + + + + + + + Authentication + + + + + + + + + + + + + + + AudioClip + + + + + + + - + + + id + + + : + + + UniqueId + + + - + + + duration + + + : + + + Time + + + + + + + + + + + MetaData + + + + + + + + + + + + + + + SearchCriteria + + + + + + + + + + + + + + + RawAudioData + + + + + + + + + + + + + + + + + + + + Is described by + + + + + + + + + + + + Contains + + + + + + + UniqueId + + + + + + + + + + + + + + + + + + + + Is identified by + + + + + + + Archive maintainer + + + + + + + + + + + + + + + Archive client + + + + + + + + + + + + + + + + + + + + Is authenticated by + + + + + + + + + + + + Is authenticated by + + + + + + + + + + + + Searches in + + + + + + + + + + + + Searches by + + + + + + + + + + + + Downloads + + + + + + + + + + + + Manages + + + diff --git a/livesupport/doc/model/MediaArchive/DeleteAudioclip_SequenceDiagram.svg b/livesupport/doc/model/MediaArchive/DeleteAudioclip_SequenceDiagram.svg new file mode 100644 index 000000000..cb21fd1aa --- /dev/null +++ b/livesupport/doc/model/MediaArchive/DeleteAudioclip_SequenceDiagram.svg @@ -0,0 +1,183 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + archive maintainer + + + + : + + + + Archive maintainer + + + + + + + + + + system + + + + : + + + + Media archive + + + + + + + + + + + + + + + + : + + + authenticated + + + := + + + authenticate + + + ( + + + authInfo + + + ) + + + + + + + + + + + : + + + deleteAudioClip + + + ( + + + audioClipId + + + ) + + + diff --git a/livesupport/doc/model/MediaArchive/Downloadrawaudiodata_SequenceDiagram.svg b/livesupport/doc/model/MediaArchive/Downloadrawaudiodata_SequenceDiagram.svg new file mode 100644 index 000000000..f5009664d --- /dev/null +++ b/livesupport/doc/model/MediaArchive/Downloadrawaudiodata_SequenceDiagram.svg @@ -0,0 +1,207 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + system + + + + : + + + + Media archive + + + + + + + + + + + + + + archive client + + + + : + + + + Archive client + + + + + + + + + + + + : + + + authneticated + + + := + + + authenticate + + + ( + + + authInfo + + + ) + + + + + + + + + + + : + + + rawAudioData + + + := + + + downloadAudioData + + + ( + + + audioClipId + + + , + + + offset + + + ) + + + diff --git a/livesupport/doc/model/MediaArchive/EssentialUseCases.svg b/livesupport/doc/model/MediaArchive/EssentialUseCases.svg new file mode 100644 index 000000000..fd67a1ed1 --- /dev/null +++ b/livesupport/doc/model/MediaArchive/EssentialUseCases.svg @@ -0,0 +1,143 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Archive maintainer + + + + + + + LiveSupport Media archive + + + + + + + + + UC-3 Update Audio + clip metadata + + + + + + + UC-5 Search in metadata + + + + + + + UC-2 Delete Audio clip + + + + + + + UC-4 Download raw + audio data + + + + + + + UC-1 Store or update + Audio clip + + + + + + + + + + + + + + + + Archive client + + + + + + + + + diff --git a/livesupport/doc/model/MediaArchive/Searchinmetadata_SequenceDiagram.svg b/livesupport/doc/model/MediaArchive/Searchinmetadata_SequenceDiagram.svg new file mode 100644 index 000000000..3b2e45569 --- /dev/null +++ b/livesupport/doc/model/MediaArchive/Searchinmetadata_SequenceDiagram.svg @@ -0,0 +1,195 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + system + + + + : + + + + Media archive + + + + + + + + + + + + + + archive client + + + + : + + + + Archive client + + + + + + + + + + + + : + + + authenticated + + + := + + + authenticate + + + ( + + + authInfo + + + ) + + + + + + + + + + + : + + + audioClipIds + + + := + + + searchMetadata + + + ( + + + criteria + + + ) + + + diff --git a/livesupport/doc/model/MediaArchive/StoreorupdateAudioclip_SequenceDiagram.svg b/livesupport/doc/model/MediaArchive/StoreorupdateAudioclip_SequenceDiagram.svg new file mode 100644 index 000000000..ac0c96dc5 --- /dev/null +++ b/livesupport/doc/model/MediaArchive/StoreorupdateAudioclip_SequenceDiagram.svg @@ -0,0 +1,195 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + archive maintainer + + + + : + + + + Archive maintainer + + + + + + + + + + system + + + + : + + + + Media archive + + + + + + + + + + + + + + + + : + + + authenticated + + + := + + + authenticate + + + ( + + + authId + + + ) + + + + + + + + + + + : + + + audioClipId + + + := + + + storeAudioClip + + + ( + + + audioClip + + + ) + + + diff --git a/livesupport/doc/model/MediaArchive/Systembehaviour.svg b/livesupport/doc/model/MediaArchive/Systembehaviour.svg new file mode 100644 index 000000000..97cf502bb --- /dev/null +++ b/livesupport/doc/model/MediaArchive/Systembehaviour.svg @@ -0,0 +1,469 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Media archive + + + + + + + + + + + + + + + authenticate + + + ( + + + authenticationInfo + + + : + + + AuthenticationInfo + + + ) + + + : + + + boolean + + + + + + + retrieveAudioClip + + + ( + + + audioClipId + + + : + + + + + + ) + + + : + + + + + + + + + + storeAudioClip + + + ( + + + audioClip + + + : + + + AudioClip + + + ) + + + : + + + UniqueId + + + + + + + deleteAudioClip + + + ( + + + audioClipId + + + : + + + UniqueId + + + ) + + + : + + + void + + + + + + + updateAudioClipMetadata + + + ( + + + audioClipId + + + : + + + UniqueId + + + , + + + newMetadata + + + : + + + MetaData + + + ) + + + : + + + void + + + + + + + downloadAudioData + + + ( + + + audioClipId + + + : + + + UniqueId + + + , + + + offset + + + : + + + int + + + ) + + + : + + + RawAudioData + + + + + + + searchMetadata + + + ( + + + criteria + + + : + + + SearchCriteria + + + ) + + + : + + + UniqueId + + + diff --git a/livesupport/doc/model/MediaArchive/UpdateAudioclipmetadata_SequenceDiagram.svg b/livesupport/doc/model/MediaArchive/UpdateAudioclipmetadata_SequenceDiagram.svg new file mode 100644 index 000000000..6b07cb22c --- /dev/null +++ b/livesupport/doc/model/MediaArchive/UpdateAudioclipmetadata_SequenceDiagram.svg @@ -0,0 +1,195 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + system + + + + : + + + + Media archive + + + + + + + + + + + + + + archive maintainer + + + + : + + + + Archive maintainer + + + + + + + + + + + + : + + + authenticated + + + := + + + authenticate + + + ( + + + AuthInfo + + + ) + + + + + + + + + + + : + + + updateAudioClipMetadata + + + ( + + + audioClipId + + + , + + + newMetadata + + + ) + + + diff --git a/livesupport/doc/model/MediaArchive/index.html b/livesupport/doc/model/MediaArchive/index.html new file mode 100644 index 000000000..7dda615e3 --- /dev/null +++ b/livesupport/doc/model/MediaArchive/index.html @@ -0,0 +1,1678 @@ + + + + + LiveSupport Media archive specification + + + +

Preface

+This document is part of the LiveSupport +project, Copyright © 2004 Media +Development Loan Fund, under the GNU GPL.
+ +

Scope

+This document contains the specification of the LiveSupport Media +archive component.
+
+This document contains embedded SVG figures, thus an SVG +capable browser is needed to view it, or an SVG plugin like Adobe's SVG Viewer.
+

Requirements

+

Overview
+

+The purpose of the Media archive is to store Audio clips with metadata +information, and offer remote access to these clips.
+

Goals

+The goal of the Media storage system is to store Audio Clips and share +them over the network. Another aim is to provide extensive search +possibilities based on the metadata bundled with the audio clips.
+

System functions

+The main system functions are described below. There are three +categories for these functions:
+ + + + + + + + + + + + + + + + + + + +
function category
+
meaning
+
evident
+
Should perform, and the user should be cognizant +that it is performed
+
hidden
+
Should perform, but not visible to the users.
+
frill
+
Optional
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ref#
+
function
+
category
+
F1.1
+
Store audio clips
+
evident
+
F1.2
+
Provide remote access to audio data
+
evident
+
F1.3
+
Delete stored clips
+
evident
+
F1.4
+
Update stored clips
+
evident
+
F1.5
+
Search Audio clips by querying metadata
+
evident
+

+

+

+
+
+

System attributes

+Generic attributes
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ref#
+
attribute
+
details and constraints
+
category
+
A1.1
+
operating system platform
+
Linux
+
must
+
A1.2
+
remote interface
+
the Media archive is remotely accessible
+
must
+
A1.3
+
supported audio formats
+
Ogg Vorbis, MP3, wav
+
must
+
A1.4
+
uniquely identifiable Audio clips
+
all audio clips should be uniquely identifiable, +even when moved among Media archive systems
+
must
+
A1.6
+
consistent downloads during updates
+
when an audio clip is being updated while also +being downloaded, make sure that the downloads can continue with the +original content
+
frill
+

+

+

+

+
+
+Attributes related to system functions
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
ref#
+
function
+
ref#
+
attribute
+
details and constraints
+
category
+
F1.2
+
Provide remote access to audio data A1.5
+
partial downloads
+
provide the possibility of interrupted (partial) +downloads of raw audio data
+
must
+

+

+

+

+

+

+
+
+

Essential use cases

+This section lists generic (essential) uses cases, that do not contain +architecture-specific considerations.
+
+ +

UC-1 Store or update Audio clip
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ref# UC-1
use case Store or update Audio clip
+
type primary, essential
actors Archive maintainer
purpose To store a new Audio clip in the media archive, +or update (replace) an already stored Audio clip
+
overview The Archive maintainer contacts the Media +archive with the aim +of uploading and storing a new Audio Clip. If the uploaded Audio clip +is already stored in Media archive (with respect of having the same +unique id), the stored one is replaced with the uploaded one.
+
references F1.1, F1.4, A1.4
+
+

Typical course of events

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
actor action
+
system response
+
1. Archive maintainer connects to the Media archive +with the +intention of storing an Audio clip
+

+

+
2. The Archive maintainer provides authentication +information 3. The system authenticates the Archive maintainer +and grants +access.
+
4.
+
The Archive maintainer presents the new Audio +clip data, +including raw audio data and metadata
+
5.
+
The system verifies the received data
+

+

+
6.1
+
If the presented Audio clip does not contain a +unique id, one is generated.
+

+

+
6.2
+
If the presented Audio clip contains a unique +id, and there already is an Audio clip stored with the same id, the +stored one is replaced with the uploaded Audio clip.
+

+

+
7.
+
The system stores the received Audio clip and +notifies the Archive maintainer of the actions taken and the unique id +of the stored clip.
+
8.
+
The Archive maintainer disconnects
+

+

+

+

+

+

+
+
+

Alternate courses

+ +
+

UC-2 Delete Audio clip
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ref# UC-2
use case Delete Audio clip
+
type primary, essential
actors Archive maintainer
purpose To delete an existing Audio clip in the media +archive
+
overview The Archive maintainer contacts the Media +archive with the aim +of deleting an existing Audio Clip
+
references F1.3
+

Typical course of events

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
actor action
+
system response
+
1. Archive maintainer connects to the Media archive +with the +intention of deleting an Audio clip
+

+

+
2. The Archive maintainer provides authentication +information 3. The system authenticates the Archive maintainer +and grants +access.
+
4.
+
The Archive maintainer presents the unique id of +an Audio clip stored in Media archive for deletion
+
5.
+
The system deletes the Audio clip corresponding +to the presented unique id.
+
6.
+
The Archive maintainer disconnects
+

+

+

+

+

+

+
+
+

Alternate courses

+ +
+

UC-3 Update Audio clip metadata
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ref# UC-3
use case Update Audio clip metadata
+
type primary, essential
actors Archive maintainer
purpose To update the metadata of an Audio clip, without +uploading raw audio data again.
+
overview The Archive maintainer contacts the Media +archive with the aim +of updating the metadata for an already stored Audio clip
+
references F1.4
+

Typical course of events

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
actor action
+
system response
+
1. Archive maintainer connects to the Media archive +with the +intention of updating the metadata for an Audio clip
+

+

+
2. The Archive maintainer provides authentication +information 3. The system authenticates the Archive maintainer +and grants +access.
+
4.
+
The Archive maintainer presents the unique id of +an Audio clip stored in Media archive and the new metadata for that +Audio clip
+
5.
+
The system verifies the clip id and the metadata
+

+

+
6.
+
The system replaces the metadata of the Audio +clip with the presented one
+
7.
+
The Archive maintainer disconnects
+

+

+

+

+

+

+
+
+

Alternate courses

+ +
+

UC-4 Download raw audio data
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ref# UC-4
use case Download audio data
+
type primary, essential
actors Archive client
+
purpose To download raw audio data stored in the Media +archive
+
overview The Archive client downloads the raw audio data.
+
references F1.2, A1.3
+
+

Typical course of events

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
actor action
+
system response
+
1. Archive client connects to the Media archive +with +the +intention of downloading raw audio data
+

+

+
2. The Archive client provides authentication +information 3. The system authenticates the Archive client and +grants +access.
+
4.
+
The Archive client presents the unique id of an +Audio clip stored in Media archive that he wants to download
+
5.
+
The systems looks up the Audio clip, and starts +to send the raw audio content as a stream
+
6.
+
The Archive client receives the stream of raw +audio data and saves it.
+

+

+
7.
+
The Archive client closes it's access and +disconnects
+

+

+

+

+

+

+
+
+

Alternate courses

+ +
+

UC-5 Search in metadata
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ref# UC-5
use case Search in metadata
+
type primary, essential
actors Archive client
+
purpose To search in the metadata of audio clips
+
overview The Archive client searches through the +stored Audio clips by specifying search criteria for the metadata of +the clips
+
references F1.5
+
+

Typical course of events

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
actor action
+
system response
+
1. Archive client connects to the Media archive +with the +intention of searching.
+

+

+
2. The Archive cleint provides authentication +information 3. The system authenticates the Archive client +and grants +access.
+

+

+
4.
+
The system provides a way of specifying search +criteria with respect to the existing metadata structures
+
5.
+
The Archive client specifies a search +criteria
+
6.
+
The system searches through the metadata of +contained Audio clips, and presents a list of matches
+
7.
+
The Archive client refines his search and +searches again
+
8.
+
The system does a new search according to the +refined criteria, and presents the results to the Archive client
+
9.
+
The Archive client reviews the results
+

+

+
10.
+
The Archive client disconnects
+

+

+

+

+

+

+
+
+

Alternate courses

+ +

+

+
+

Conceptual model

+The following figure displays the semantic concepts identified for the +Scheduler daemon, and the main associations between the concepts.
+
+ +
+

Concepts

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
concept
+
description
+
Authentication
+
Component responsible for doing the +authentications
+
Unique Id
+
A globally unique identifier used to to +differentiate between objects that might even be created on different +systems. Even though the whole space of Id is not known, the Ids must +be unique.
+
MetaData
+
Data about the AudioClip
+
SearchCriteria
+
Describes the search parameters when doing a +search on the MetaData
+
AudioClip
+
The basic unit of audio handled by Media archive
+
RawAudioData
+
The binary audio data contained in an Audio clip
+
Archive maintainer
+
The actor that maintains the contents of the +Media archive
+
Archive client
+
The actor that accesses the data stored in the +Media archive
+

+

+
+
+

Associations

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
source
+
association
+
target
+
description
+
AudioClip
+
Is identified by
+
UniqueId
+
This is a globally unique id for each Audio clip
+
AudioClip
+
Is described by
+
MetaData
+

+
AudioClip
+
Contains
+
RawAudioData
+

+
Archive maintainer
+
Is Authenticated by
+
Authentication
+

+
Archive client
+
Searches in
+
MetaData
+

+
Archive client
+
Searches by
+
SearchCriteria
+
The Archive client specifies such a +SearchCriteria when doing a search on MetaData
+
Archive maintainer
+
Manages
+
AudioClip
+
This includes uploading, updating and deleting +AudioClips
+
Archive client
+
Is Authenticated by
+
Authentication
+

+
Archice client
+
Downloads
+
RawAudioData
+
Download RawAudioData as a binary stream.
+

+

+

+

+
+
+

System behavior

+The behavior of the system as a whole as experienced from the outside +is discussed in this section.
+

System sequence diagrams

+System diagrams are presented for each use case below.
+

UC-1 Store or update Audio clip

+ +
+

UC-2 Delete Audio clip

+ +
+

UC-3 Update Audio clip metadata

+ +
+

UC-4 Download raw audio data

+ +
+

UC-5 Search in metadata

+ +

System objects

+The following figures shows the system objects and their functions, as +derived from the system sequence diagrams.
+ +

Contracts

+For all operations exposed in the system sequence diagrams, the +following contracts are defined.
+

Contract for Media archive : authenticate

+see Authentication : Authenticate
+

Contract for Media archive : storeAudioClip
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Name
+
storeAudioClip
+(audioClip : AudioClip)
+: UniqueId
+
Responsibilities
+
Store a new audio clip +or replace an existing one.
+
Type
+
system
+
Cross-reference
+
UC-1
+
Notes
+
none
+
Exceptions
+
if this is an AudioClip +update, and the RawAudioData of the already existing TODO: handle the +case of the raw audio data of the Audio clip is +currently +being downloaded (see UC-4, A1.6)
Output
+
the unique id of the +stored audio clip
+
Pre-conditions
+
none
Post-conditions
+
condition
+
type
+
if this is a new audio clip:an AudioClip object is createdinstance creation
+

+
a UniqueId is generated for the new clip
+
instance creation
+

+
the UniqueId is associated with the AudioClip
+
association formed
+

+
a MetaData object is created and filled with the +presented contents
+
instance creation
+

+
the MetaData is associated with the AudioClip
+
association formed
+

+
a RawAudioData object is created and filled with +the presented contents
+
instance creation
+

+
the RawAudioData is associated with the AudioClip
+
association formed
+
if the clip already existed:
+
the contents of MetaData for the AudioClip are +replaced by the presented contents
+
attribute modification
+

+
the contents of RawAudioData for the AudioClip +are replaced by the presented contents
+
attribute modification
+

+

+

+
+
+

Contract for Media archive : deleteAudioClip
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Name
+
deleteAudioClip
+(audioClipId : UniqueId)
+: void
+
Responsibilities
+
Delete an existing Audio +clip
+
Type
+
system
+
Cross-reference
+
UC-2
+
Notes
+
none
+
Exceptions
+
if no Audio clip with +the specified id exists, report as an error.
+TODO: handle the case of the raw audio data of the Audio clip is +currently +being downloaded (see UC-4, A1.6)
+
Output
+
none
+
Pre-conditions
+
none
Post-conditions
+
condition
+
type
+

+
the UniqueId for the AudioClip is deleted
+
instance deletion
+

+
the MetaData for the AudioClip is deleted
+
instance deletion
+

+
the RawAudioData for the AudioClip is deleted
+
instance deletion
+

+
the AudioClip is deleted
+
instance deletion
+

+

+

+
+
+

Contract for Media archive : updateAudioClipMetadata
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Name
+
updateAudioClipMetadata
+(audioClipId : UniqueId,
+newMetadata : MetaData)
+: void
+
Responsibilities
+
Update the metadata of +an Audio clip stored in Media archive
+
Type
+
system
+
Cross-reference
+
UC-3
+
Notes
+
none
+
Exceptions
+
if no Audio clip with +the specified id exists, report as an error.
+
Output
+
none
+
Pre-conditions
+
none
Post-conditions
+
condition
+
type
+

+
the contents of MetaData for the AudioClip are +replaced with the presented contents
+
attribute modification
+

+

+

+
+
+

Contract for Media archive : accessRawAudioData
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Name
+
downloadRawAudioData
+(audioClipId : UniqueId,
+offset : int)
+: RawAudioData
+
Responsibilities
+
Get access to raw audio +data of an AudioClip as a data stream.
+
Type
+
system
+
Cross-reference
+
UC-4
+
Notes
+
none
+
Exceptions
+
if no Audio clip with +the specified id exists, report as an error.
+
Output
+
the RawAudioData as a +stream for the +AudioClip identified with the supplied UniqueId, started at the +specified offset.
+
Pre-conditions
+
none
Post-conditions
+
none
+

+

+

+

+
+
+

Contract for Media archive : searchMetadata
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Name
+
searchMetadata
+(criteria : SearchCriteria)
+: UniqueId
+
Responsibilities
+
Search through the +metadata of stored AudioClips, and return all matching clip ids
+
Type
+
system
+
Cross-reference
+
UC-5
+
Notes
+
none
+
Exceptions
+
none
+
Output
+
A range of Audio clip +ids, for which MetaData matches the supplied search criteria
+
Pre-conditions
+
none
Post-conditions
+
none
+

+

+

+

+
+
+
+ + diff --git a/livesupport/doc/model/PlaylistEditor/AddanAudiocliptoLocalstorage_SequenceDiagram.svg b/livesupport/doc/model/PlaylistEditor/AddanAudiocliptoLocalstorage_SequenceDiagram.svg new file mode 100644 index 000000000..473c2a24e --- /dev/null +++ b/livesupport/doc/model/PlaylistEditor/AddanAudiocliptoLocalstorage_SequenceDiagram.svg @@ -0,0 +1,388 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + playlist Maintainer + + + + : + + + + Playlist maintainer + + + + + + + + + + + + + + system + + + + : + + + + Playlist editor + + + + + + + + + + + + + + local storage + + + + : + + + + Local storage + + + + + + + + + + + + + + + : + + + retrun audioClipId + + + + + + + + + + + : + + + authenticated + + + := + + + authenticate + + + ( + + + authInfo + + + ) + + + + + + + + + + + : + + + audioClipId + + + := + + + addAudioClip + + + ( + + + rawAudioData + + + , + + + metaData + + + ) + + + + + + + + + + + : + + + authenticated + + + := + + + authenticate + + + ( + + + authInfo + + + ) + + + + + + + + + + + : + + + audioClipId + + + := + + + storeAudioClip + + + ( + + + audioClip + + + ) + + + diff --git a/livesupport/doc/model/PlaylistEditor/AddanAudiocliptoaPlaylist_SequenceDiagram.svg b/livesupport/doc/model/PlaylistEditor/AddanAudiocliptoaPlaylist_SequenceDiagram.svg new file mode 100644 index 000000000..1990d6b18 --- /dev/null +++ b/livesupport/doc/model/PlaylistEditor/AddanAudiocliptoaPlaylist_SequenceDiagram.svg @@ -0,0 +1,444 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + playlist Maintainer + + + + : + + + + Playlist maintainer + + + + + + + + + + system + + + + : + + + + Playlist editor + + + + + + + + + + + + + + + + + + local storage + + + + : + + + + Local storage + + + + + + + + + + + + + + media archive + + + + : + + + + Media archive + + + + + + + + + + + + + + + + : + + + authenticated + + + := + + + authenticate + + + ( + + + authInfo + + + ) + + + + + + + + + + + : + + + addAudioClipToPlaylist + + + ( + + + playlist + + + , + + + audioClipId + + + , + + + offset + + + ) + + + + + + + + + + + : + + + authenticated + + + := + + + authenticate + + + ( + + + authInfo + + + ) + + + + + + + + + + + : + + + authenticated + + + := + + + authenticate + + + ( + + + authInfo + + + ) + + + + [if requested] + + + : + + + mirrorAudioClipInLocalStorage + + + ( + + + audioClipId + + + ) + + + + + + + diff --git a/livesupport/doc/model/PlaylistEditor/AddorupdateanAudiocliptoMediaarchive_SequenceDiagram.svg b/livesupport/doc/model/PlaylistEditor/AddorupdateanAudiocliptoMediaarchive_SequenceDiagram.svg new file mode 100644 index 000000000..fd1151849 --- /dev/null +++ b/livesupport/doc/model/PlaylistEditor/AddorupdateanAudiocliptoMediaarchive_SequenceDiagram.svg @@ -0,0 +1,488 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + playlist Maintainer + + + + : + + + + Playlist maintainer + + + + + + + + + + system + + + + : + + + + Playlist editor + + + + + + + + + + + + + + + + + + local storage + + + + : + + + + Local storage + + + + + + + + + + + + + + media archive + + + + : + + + + Media archive + + + + + + + + + + + + + + + + : + + + authenticated + + + := + + + authenticate + + + ( + + + authInfo + + + ) + + + + + + + + + + + : + + + addAudioClipToMediaArchive + + + ( + + + audioClipId + + + ) + + + + + + + + + + + : + + + authenticated + + + := + + + authenticate + + + ( + + + authInfo + + + ) + + + + + + + + + + + : + + + audioClip + + + := + + + getAudioClip + + + ( + + + audioClipId + + + ) + + + + + + + + + + + : + + + authenticated + + + := + + + authenticate + + + ( + + + authInfo + + + ) + + + + + + + + + + + : + + + audioClipId + + + := + + + storeAudioClip + + + ( + + + audioClip + + + ) + + + diff --git a/livesupport/doc/model/PlaylistEditor/Concepts.svg b/livesupport/doc/model/PlaylistEditor/Concepts.svg new file mode 100644 index 000000000..159cdea14 --- /dev/null +++ b/livesupport/doc/model/PlaylistEditor/Concepts.svg @@ -0,0 +1,1032 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Local storage + + + (from + + + Local storage + + + ) + + + + + + + Scheduler + + + (from + + + Scheduler + + + ) + + + + + + + Media archive + + + (from + + + Media archive + + + ) + + + + + + + Playlist maintainer + + + + + + + + + + + + + + + << + + + component + + + >> + + + Playlist editor + + + + + + + Authentication + + + + + + + + + + + + + + + MetaData + + + + + + + + + + + + + + + SearchCriteria + + + + + + + + + + + + + + + Audio layer + + + + + + + + + + + + + + + FadeInfo + + + + + + + + + + + + + + + Configuration + + + + + + + + + + + + + + + AudioClip + + + + + + + - + + + id + + + : + + + UniqueId + + + - + + + duration + + + : + + + Time + + + + + + + + + + + Playlist player + + + + + + + + + + + + + + + Playlist uploader + + + + + + + + + + + + + + + Clip retriever + + + + + + + Playlist + + + + + + + - + + + duration + + + : + + + Time + + + - + + + lockedForEditing + + + : + + + boolean + + + + + + + + + + + isValid + + + ( + + + ) + + + : + + + boolean + + + + + + + + + + + + Is described by + + + + + + + + + + PlaylistElement + + + + + + + - + + + relativeOffset + + + : + + + Time + + + + + + + + + + + + + + + + + + + Plays + + + + + + + + + + + + Uploads + + + + + + + + + + + + Fades out with + + + + + + + + + + + + * + + + Contains + + + + + + + + + + + + References + + + + + + + + + + + + Is authenticated by + + + + + + + + + + + + Searches by + + + + + + + + + + + + Edits + + + + + + + + + + + + Maintains + + + + + + + + + + + + * + + + Contains + + + + + + + + + + + + * + + + Contains + + + + + + + + + + + + Accesses audio data from + + + + + + + + + + + + Uploads to + + + + + + + + + + + + Retrieves clips from + + + + + + + + + + + + Stores clips in + + + + + + + + + + + + Stores clips in + + + + + + + + + + + + Creates and edits + + + + + + + + + + + + Listens to + + + + + + + + + + + + Fades in with + + + diff --git a/livesupport/doc/model/PlaylistEditor/CreateaPlaylist_SequenceDiagram.svg b/livesupport/doc/model/PlaylistEditor/CreateaPlaylist_SequenceDiagram.svg new file mode 100644 index 000000000..45c0ce55e --- /dev/null +++ b/livesupport/doc/model/PlaylistEditor/CreateaPlaylist_SequenceDiagram.svg @@ -0,0 +1,189 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + playlist Maintainer + + + + : + + + + Playlist maintainer + + + + + + + + + + system + + + + : + + + + Playlist editor + + + + + + + + + + + + + + + + : + + + authenticated + + + := + + + authenticate + + + ( + + + authInfo + + + ) + + + + + + + + + + + : + + + playlist + + + := + + + createPlaylist + + + ( + + + ) + + + diff --git a/livesupport/doc/model/PlaylistEditor/DeleteanAudioclipfromLocalstorage_SequenceDiagram.svg b/livesupport/doc/model/PlaylistEditor/DeleteanAudioclipfromLocalstorage_SequenceDiagram.svg new file mode 100644 index 000000000..647d9cef2 --- /dev/null +++ b/livesupport/doc/model/PlaylistEditor/DeleteanAudioclipfromLocalstorage_SequenceDiagram.svg @@ -0,0 +1,327 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + local storage + + + + : + + + + Local storage + + + + + + + + + + + + + + system + + + + : + + + + Playlist editor + + + + + + + + + + + + + + + + + + playlist Maintainer + + + + : + + + + Playlist maintainer + + + + + + + + + + + + : + + + authenticated + + + := + + + authenticate + + + ( + + + authInfo + + + ) + + + + + + + + + + + : + + + deleteAudiClipFromLocalStorage + + + ( + + + audioClipId + + + ) + + + + + + + + + + + : + + + authenticated + + + := + + + authenticate + + + ( + + + authInfo + + + ) + + + + + + + + + + + : + + + deleteAudioClip + + + ( + + + audioClipId + + + ) + + + diff --git a/livesupport/doc/model/PlaylistEditor/EditthetransitionofanAudioclip_SequenceDiagram.svg b/livesupport/doc/model/PlaylistEditor/EditthetransitionofanAudioclip_SequenceDiagram.svg new file mode 100644 index 000000000..d48aabac1 --- /dev/null +++ b/livesupport/doc/model/PlaylistEditor/EditthetransitionofanAudioclip_SequenceDiagram.svg @@ -0,0 +1,207 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + playlist Maintainer + + + + : + + + + Playlist maintainer + + + + + + + + + + system + + + + : + + + + Playlist editor + + + + + + + + + + + + + + + + : + + + authenticated + + + := + + + authenticate + + + ( + + + authInfo + + + ) + + + + + + + + + + + : + + + updateFadeParameters + + + ( + + + playlistElement + + + , + + + newFadeInInfo + + + , + + + newFadeOutInfo + + + ) + + + diff --git a/livesupport/doc/model/PlaylistEditor/EssentialUseCases.svg b/livesupport/doc/model/PlaylistEditor/EssentialUseCases.svg new file mode 100644 index 000000000..48e5b9567 --- /dev/null +++ b/livesupport/doc/model/PlaylistEditor/EssentialUseCases.svg @@ -0,0 +1,344 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Playlist editor + + + + + + + + + UC-1 Create a Playlist + + + + + + + UC-10 Edit the transition + of an Audio clip + + + + + + + UC-12 Upload a Playlist + to a Scheduler daemon + + + + + + + UC-13 Maintain + configuration information + + + + + + + UC-2 Add an Audio clip + to Local storage + + + + + + + UC-3 Delete an Audio clip + from Local storage + + + + + + + UC-4 Update an Audio clip + in Local storage + + + + + + + UC-11 Listen to a Playlist + + + + + + + UC-8 Add an Audio clip + to a Playlist + + + + + + + UC-6 Search for Audio clips + + + + + + + UC-7 Mirror an Audio clip + from a remote Media archive + in Local storage + + + + + + + UC-5 Add or update an Audio clip + to Media archive + + + + + + + UC-9 Move the position + of an Audio clip in a Playlist + + + + + + + Playlist maintainer + + + + + + + Local storage + + + + + + + Media archive + + + + + + + Scheduler + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/livesupport/doc/model/PlaylistEditor/ListentoaPlaylist_SequenceDiagram.svg b/livesupport/doc/model/PlaylistEditor/ListentoaPlaylist_SequenceDiagram.svg new file mode 100644 index 000000000..19e5b45db --- /dev/null +++ b/livesupport/doc/model/PlaylistEditor/ListentoaPlaylist_SequenceDiagram.svg @@ -0,0 +1,559 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + playlist Maintainer + + + + : + + + + Playlist maintainer + + + + + + + + + + system + + + + : + + + + Playlist editor + + + + + + + + + + + + + + + + + + + + + + + + + + local storage + + + + : + + + + Local storage + + + + + + + + + + + + + + + + : + + + authenticated + + + := + + + authenticate + + + ( + + + authInfo + + + ) + + + + + + + + + + + : + + + playPlaylist + + + ( + + + playlist + + + , + + + 0 + + + ) + + + + + + + + + + + : + + + authenticated + + + := + + + authenticate + + + ( + + + authInfo + + + ) + + + + + + + + + + + : + + + rawAudioData + + + := + + + accessRawAudioData + + + ( + + + audioClipId + + + ) + + + + + + + + + + + : + + + playPlaylist + + + ( + + + playlist + + + , + + + seekOffset + + + ) + + + + + + + + + + + : + + + rawAudioData + + + := + + + accessRawAudioData + + + ( + + + audioClipId + + + ) + + + + + + + + + + + : + + + stopPlaying + + + ( + + + ) + + + + + + + + + + + : + + + releaseRawAudioData + + + ( + + + rawAudioData + + + ) + + + diff --git a/livesupport/doc/model/PlaylistEditor/Maintainconfigurationinformation_SequenceDiagram.svg b/livesupport/doc/model/PlaylistEditor/Maintainconfigurationinformation_SequenceDiagram.svg new file mode 100644 index 000000000..f03e85462 --- /dev/null +++ b/livesupport/doc/model/PlaylistEditor/Maintainconfigurationinformation_SequenceDiagram.svg @@ -0,0 +1,271 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + playlist Maintainer + + + + : + + + + Playlist maintainer + + + + + + + + + + system + + + + : + + + + Playlist editor + + + + + + + + + + + + + + + + : + + + authenticated + + + := + + + authenticate + + + ( + + + authInfo + + + ) + + + + + + + + + + + : + + + addConfiguration + + + ( + + + configuration + + + ) + + + + + + + + + + + : + + + updateConfiguration + + + ( + + + configuration + + + ) + + + + + + + + + + + : + + + deleteConfiguration + + + ( + + + configuration + + + ) + + + diff --git a/livesupport/doc/model/PlaylistEditor/MirroranAudioclipfromaremoteMediaarchiveinLocalstorage_SequenceDiagram.svg b/livesupport/doc/model/PlaylistEditor/MirroranAudioclipfromaremoteMediaarchiveinLocalstorage_SequenceDiagram.svg new file mode 100644 index 000000000..5b0609e73 --- /dev/null +++ b/livesupport/doc/model/PlaylistEditor/MirroranAudioclipfromaremoteMediaarchiveinLocalstorage_SequenceDiagram.svg @@ -0,0 +1,488 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + playlist Maintainer + + + + : + + + + Playlist maintainer + + + + + + + + + + system + + + + : + + + + Playlist editor + + + + + + + + + + + + + + + + + + local storage + + + + : + + + + Local storage + + + + + + + + + + + + + + media archive + + + + : + + + + Media archive + + + + + + + + + + + + + + + + : + + + authenticated + + + := + + + authenticate + + + ( + + + authInfo + + + ) + + + + + + + + + + + : + + + authenticated + + + := + + + authenticate + + + ( + + + authInfo + + + ) + + + + + + + + + + + : + + + mirrorAudioClipInLocalStorage + + + ( + + + audioClipId + + + ) + + + + + + + + + + + : + + + authenticated + + + := + + + authenticate + + + ( + + + authInfo + + + ) + + + + + + + + + + + : + + + audioClip + + + := + + + retrieveAudioClip + + + ( + + + audioClipId + + + ) + + + + + + + + + + + : + + + audioClipId + + + := + + + storeAudioClip + + + ( + + + audioClip + + + ) + + + diff --git a/livesupport/doc/model/PlaylistEditor/MovethepositionofanAudioclipinaPlaylist_SequenceDiagram.svg b/livesupport/doc/model/PlaylistEditor/MovethepositionofanAudioclipinaPlaylist_SequenceDiagram.svg new file mode 100644 index 000000000..c8f964c9c --- /dev/null +++ b/livesupport/doc/model/PlaylistEditor/MovethepositionofanAudioclipinaPlaylist_SequenceDiagram.svg @@ -0,0 +1,275 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + playlist Maintainer + + + + : + + + + Playlist maintainer + + + + + + + + + + system + + + + : + + + + Playlist editor + + + + + + + + + + + + + + + + : + + + authenticated + + + := + + + authenticate + + + ( + + + authInfo + + + ) + + + + + + + + + + + : + + + updateAudioClipPositionInPlaylist + + + ( + + + playlist + + + , + + + playlistElement + + + , + + + newOffset + + + ) + + + + + + + + + + + : + + + moveAudioClipToOtherLayer + + + ( + + + playlist + + + , + + + playlistElement + + + , + + + newLayer + + + ) + + + diff --git a/livesupport/doc/model/PlaylistEditor/SearchforAudioclips_SequenceDiagram.svg b/livesupport/doc/model/PlaylistEditor/SearchforAudioclips_SequenceDiagram.svg new file mode 100644 index 000000000..79bf08cdf --- /dev/null +++ b/livesupport/doc/model/PlaylistEditor/SearchforAudioclips_SequenceDiagram.svg @@ -0,0 +1,532 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + playlist Maintainer + + + + : + + + + Playlist maintainer + + + + + + + + + + + + + + system + + + + : + + + + Playlist editor + + + + + + + + + + + + + + + + + + local storage + + + + : + + + + Local storage + + + + + + + + + + + + + + media archive + + + + : + + + + Media archive + + + + + + + + + + + + + + + + : + + + authenticated + + + := + + + authenticate + + + ( + + + authInfo + + + ) + + + + + + + + + + + : + + + authenticated + + + := + + + authenticate + + + ( + + + authInfo + + + ) + + + + + + + + + + + : + + + authenticated + + + := + + + authenticate + + + ( + + + authInfo + + + ) + + + + + + + + + + + : + + + audioClipIds + + + := + + + searchMetadata + + + ( + + + criteria + + + ) + + + + + + + + + + + : + + + audioClipIds + + + := + + + searchMetadata + + + ( + + + criteria + + + ) + + + + + + + + + + + : + + + audioClipIds + + + := + + + searchMetadata + + + ( + + + criteria + + + ) + + + + + + + : + + + return matching AudioClipIds + + + + + + diff --git a/livesupport/doc/model/PlaylistEditor/Systembehaviour.svg b/livesupport/doc/model/PlaylistEditor/Systembehaviour.svg new file mode 100644 index 000000000..17a9deb0f --- /dev/null +++ b/livesupport/doc/model/PlaylistEditor/Systembehaviour.svg @@ -0,0 +1,1291 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Playlist editor + + + + + + + + + + + + + + + authenticate + + + ( + + + authInfo + + + : + + + AuthenticationInfo + + + ) + + + : + + + boolean + + + + + + + createPlaylist + + + ( + + + ) + + + : + + + Playlist + + + + + + + addAudioClip + + + ( + + + rawAudioData + + + : + + + RawAudioData + + + , + + + metaData + + + : + + + MetaData + + + ) + + + : + + + UniqueId + + + + + + + deleteAudiClipFromLocalStorage + + + ( + + + audioClipId + + + : + + + UniqueId + + + ) + + + : + + + void + + + + + + + updateAudioClipInLocalStorage + + + ( + + + audioClipId + + + : + + + UniqueId + + + , + + + rawAudioData + + + : + + + RawAudioData + + + , + + + metaData + + + : + + + MetaData + + + ) + + + : + + + void + + + + + + + addAudioClipToMediaArchive + + + ( + + + audioClipId + + + : + + + UniqueId + + + ) + + + : + + + void + + + + + + + searchMetadata + + + ( + + + criteria + + + : + + + SearchCriteria + + + ) + + + : + + + UniqueId + + + + + + + mirrorAudioClipInLocalStorage + + + ( + + + audioClipId + + + : + + + UniqueId + + + ) + + + : + + + void + + + + + + + addAudioClipToPlaylist + + + ( + + + playlist + + + : + + + Playlist + + + , + + + audioClipId + + + : + + + UniqueId + + + , + + + offset + + + : + + + Time + + + ) + + + : + + + void + + + + + + + updateAudioClipPositionInPlaylist + + + ( + + + playlist + + + : + + + Playlist + + + , + + + playlistElement + + + : + + + PlaylistElement + + + , + + + newOffset + + + : + + + Time + + + ) + + + : + + + void + + + + + + + moveAudioClipToOtherLayer + + + ( + + + playlist + + + : + + + Playlist + + + , + + + playlistElement + + + : + + + PlaylistElement + + + , + + + newLayer + + + : + + + Audio layer + + + ) + + + : + + + void + + + + + + + updateFadeParameters + + + ( + + + playlistElement + + + : + + + PlaylistElement + + + , + + + newFadeInInfo + + + : + + + FadeInfo + + + , + + + newFadeOutInfo + + + : + + + FadeInfo + + + ) + + + : + + + void + + + + + + + playPlaylist + + + ( + + + playlist + + + : + + + Playlist + + + , + + + offset + + + : + + + Time + + + ) + + + : + + + void + + + + + + + stopPlaying + + + ( + + + ) + + + : + + + void + + + + + + + schedulePlaylist + + + ( + + + playlist + + + : + + + Playlist + + + , + + + schedule + + + : + + + Schedule + + + ) + + + : + + + void + + + + + + + addConfiguration + + + ( + + + configuration + + + : + + + Configuration + + + ) + + + : + + + void + + + + + + + updateConfiguration + + + ( + + + configuration + + + : + + + Configuration + + + ) + + + : + + + void + + + + + + + deleteConfiguration + + + ( + + + configuration + + + : + + + Configuration + + + ) + + + : + + + void + + + diff --git a/livesupport/doc/model/PlaylistEditor/UpdateanAudioclipinLocalstorage_SequenceDiagram.svg b/livesupport/doc/model/PlaylistEditor/UpdateanAudioclipinLocalstorage_SequenceDiagram.svg new file mode 100644 index 000000000..2818a3789 --- /dev/null +++ b/livesupport/doc/model/PlaylistEditor/UpdateanAudioclipinLocalstorage_SequenceDiagram.svg @@ -0,0 +1,363 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + local storage + + + + : + + + + Local storage + + + + + + + + + + + + + + playlist Maintainer + + + + : + + + + Playlist maintainer + + + + + + + + + + system + + + + : + + + + Playlist editor + + + + + + + + + + + + + + + + + + + + : + + + authenticated + + + := + + + authenticate + + + ( + + + authInfo + + + ) + + + + + + + + + + + : + + + updateAudioClipInLocalStorage + + + ( + + + audioClipId + + + , + + + rawAudioData + + + , + + + metaData + + + ) + + + + + + + + + + + : + + + authenticated + + + := + + + authenticate + + + ( + + + authInfo + + + ) + + + + + + + + + + + : + + + audioClipId + + + := + + + storeAudioClip + + + ( + + + audioClip + + + ) + + + diff --git a/livesupport/doc/model/PlaylistEditor/UploadaPlaylisttoaSchedulerdaemon_SequenceDiagram.svg b/livesupport/doc/model/PlaylistEditor/UploadaPlaylisttoaSchedulerdaemon_SequenceDiagram.svg new file mode 100644 index 000000000..040fa803c --- /dev/null +++ b/livesupport/doc/model/PlaylistEditor/UploadaPlaylisttoaSchedulerdaemon_SequenceDiagram.svg @@ -0,0 +1,351 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + playlist Maintainer + + + + : + + + + Playlist maintainer + + + + + + + + + + system + + + + : + + + + Playlist editor + + + + + + + + + + + + + + + + + + scheduler + + + + : + + + + Scheduler + + + + + + + + + + + + + + + + : + + + authenticated + + + := + + + authenticate + + + ( + + + authInfo + + + ) + + + + + + + + + + + : + + + schedulePlaylist + + + ( + + + playlist + + + , + + + schedule + + + ) + + + + + + + + + + + : + + + authInfo + + + := + + + authenticate + + + ( + + + authenticated + + + ) + + + + + + + + + + + : + + + uploadPlaylist + + + ( + + + playlist + + + , + + + schedule + + + ) + + + diff --git a/livesupport/doc/model/PlaylistEditor/index.html b/livesupport/doc/model/PlaylistEditor/index.html new file mode 100644 index 000000000..ca838b4e6 --- /dev/null +++ b/livesupport/doc/model/PlaylistEditor/index.html @@ -0,0 +1,4277 @@ + + + + + LiveSupport Playlist editor specification + + + +

Preface

+This document is part of the LiveSupport +project, Copyright © 2004 Media +Development Loan Fund, under the GNU GPL.
+ +

Scope

+This document contains the specification of the LiveSupport Playlist +editor component.
+
+This document contains embedded SVG figures, thus an SVG +capable browser is needed to view it, or an SVG plugin like Adobe's SVG Viewer.
+

Requirements

+

Overview
+

+The purpose of the Playlist editor component is to provide a user +interface enabling creation, editing and publishing playlists.
+

Goals

+The playlist editor is an easy to use user interface tool. It provides +the possibility to create and edit playlists, made up of a sequence of +audio clips store in Local storage or in a remote Media archive. The +created playlist then can be uploaded to a Scheduler daemon for +execution.
+
+The transition between audio clips can be visually specified though the +user interface. The playlist editor provides an easy to use user +interface to search the audio clips stored in Local storage or a remote +Media archive, based on metadata criteria. The playlist editor provides +the possibility to listen to the whole or any part of the created +playlist.
+

System functions

+The main system functions are described below. There are three +categories for these functions:
+ + + + + + + + + + + + + + + + + + + +
function category
+
meaning
+
evident
+
Should perform, and the user should be cognizant +that it is performed
+
hidden
+
Should perform, but not visible to the users.
+
frill
+
Optional
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ref#
+
function
+
category
+
F1.1
+
Create and edit playlists
+
evident
+
F1.2
+
Access to Local storage
+
hidden
+
F1.3
+
Access to Media archive
+
hidden
+
F1.4
+
Search in Local storage or Media archive
+
evident
+
F1.5
+
Upload playlist to Scheduler daemon
+
evident
+
F1.6
+
Smooth transitions between Audio clips
+
evident
+
F1.7
+
Play back created playlist
+
evident
+
F1.8
+
Maintain configuration information
+
evident
+

+

+

+
+
+

System attributes

+Generic attributes
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ref#
+
attribute
+
details and constraints
+
category
+
A1.1
+
operating system platform
+
Linux
+
must
+
A1.2
+
easy to use user interface
+
intuitive user interface
+
must
+
A1.3
+
supported audio formats
+
Ogg Vorbis, wav, possibly MP3
+
must
+
A1.4
+
Playlist support for Audio clips from Local +storage Created playlists may include audio sources from +Local storage must
+
A1.5
+
Playlist support for Audio clips from Media +archive
+
Created playlists may include audio sources from +a remote Media archive
+
must
+
A1.6
+
Playlist support for remotely accessible audio +files
+
Created playlists may include remotely +accessible audio sources, e.g. audio files downloadable via HTTP
+
must
+
A1.7
+
Playlist support for audio streams
+
Created playlists may include remotely +accessible audio streams, e.g. icecast or shoutcast streams
+
must
+
A1.12
+
Playlist format
+
SMIL 2.0
+
frill
+
A1.13
+
Standalone GUI application
+
The Playlist editor is a standalone graphical +user interface application
+
must
+
A1.14
+
Supported audio interfaces
+
ALSA (maybe also OSS?)
+
must
+

+

+

+

+
+
+Attributes related to system functions
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ref#
+
function
+
ref#
+
attribute
+
details and constraints
+
category
+
F1.6
+
Smooth transitions between Audio clips
+
A1.8
+
Fade-in / fade-out support
+
Support for fade-in / fade-out as a transitions, +with customizable fade curve
+
must
+
F1.2
+
Access to Local storage
+
A1.9
+
Full access to Local storage
+
The Playlist editor is a user interface to Local +storage, enabling uploading, deletion and updating of Audio clips in +Local storage
+
must
+
F1.3
+
Access to Media archive
+
A1.10
+
Full access to Media archive
+
The Playlist editor is a user interface to Media +archive, enabling +uploading, deletion and updating of Audio clips in Media archive
+
must
+
F1.7
+
Play back created playlist
+
A1.11
+
Complete and partial playback
+
The Playlist editor provides the possibility of +complete playback, and random seeks for the whole of the playlist +duration
+
must
+

+

+

+

+

+

+
+
+

Essential use cases

+This section lists generic (essential) uses cases, that do not contain +architecture-specific considerations.
+
+ +

UC-1 Create a Playlist
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ref# UC-1
use case Create a Playlist
+
type primary, essential
actors Playlist maintainer
+
purpose To create a new, empty Playlist
+
overview The Playlist maintainer accesses the Playlist +editor application with the purpose of creating a new, empty Playlist.
+
references F1.1
+

Typical course of events

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
actor action
+
system response
+
1. Playlist maintainer starts the Playlist editor +application.
+

+

+
2. The Playlist maintainer provides authentication +information 3. The system checks that the provided +authentication information is correct, and grants access.
+
4.
+
The Playlist maintainer creates a new, empty +playlist
+
5.
+
The system creates a new, empty playlist.
+

+

+

+

+
+
+

Alternate courses

+ +
+

UC-2 Add an Audio clip to Local storage
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ref# UC-2
use case Add an Audio clip to Local storage
+
type primary, essential
actors Playlist maintainer, Local storage
+
purpose To add a new Audio clip to local storage.
+
overview The Playlist maintainer accesses the Playlist +editor application with the purpose of adding a new audio file to the +Local storage associated with the Playlist editor.
+
references F1.2, A1.9
+
+

Typical course of events

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
actor action
+
system response
+
1. Playlist maintainer starts the Playlist editor +application.
+

+

+
2. The Playlist maintainer provides authentication +information 3. The system checks that the provided +authentication information is correct, and grants access.
+
4.
+
The Playlist maintainer provides an audio file +and corresponding metadata description.
+
5.
+
The system receives the data, and contacts +Local storage with the purpose of storing it.
+

+

+
6.
+
The system provides authentication information +to Local storage
+
7.
+
The Local storage checks for the provided +authentication information, and grants access.
+
8.
+
The system presents the audio data and metadata +to the Local storage
+
9.
+
The Local storage receives the provided audio +file and metadata, and stores it, returning the unique id for the +newly created Audio clip
+
10.
+
The system receives the new unique id from Local +storage, and presents it to the Playlist maintainer.
+

+

+

+

+
+
+

Alternate courses

+ +
+

UC-3 Delete an Audio clip from Local storage
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ref# UC-3
use case Delete an Audio clip from Local storage
+
type primary, essential
actors Playlist maintainer, Local storage
+
purpose To delete an Audio clip from local storage.
+
overview The +Playlist maintainer accesses the Playlist editor application with the +purpose of deleting an Audio clip stored in Local storage
+
references F1.2, A1.9
+
+

Typical course of events

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
actor action
+
system response
+
1. Playlist maintainer starts the Playlist editor +application.
+

+

+
2. The Playlist maintainer provides authentication +information 3. The system checks that the provided +authentication information is correct, and grants access.
+

+

+
4.
+
The system provides authentication information +to Local storage
+
5.
+
The Local storage checks for the provided +authentication information, and grants access.
+

+

+
6.
+
The Playlist maintainer selects an Audio clip +from the Local storage through the Playlist manager
+

+

+
7.
+
The Playlist maintainer indicates the selected +Audio clip to be deleted.
+
8.
+
The system contacts Local storage with the +selected Audio clip to be deleted.
+
9.
+
Local storage deletes the specified Audio clip
+
10.
+
The system notifies the Playlist maintainer of +the deletion of the selected Audio clip
+

+

+

+

+
+
+

Alternate courses

+ +
+

UC-4 Update an Audio clip in Local storage
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ref# UC-4
use case Update an Audio clip in Local storage
+
type primary, essential
actors Playlist maintainer, Local storage
+
purpose To update an already existing Audio clip in +local storage.
+
overview The +Playlist maintainer accesses the Playlist editor application with the +purpose of replacing the data for an Audio clip in Local storage
+
references F1.2, A1.9
+
+

Typical course of events

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
actor action
+
system response
+
1. Playlist maintainer starts the Playlist editor +application.
+

+

+
2. The Playlist maintainer provides authentication +information 3. The system checks that the provided +authentication information is correct, and grants access.
+

+

+
4.
+
The system provides authentication information +to Local storage
+
5.
+
The Local storage checks for the provided +authentication information, and grants access.
+

+

+
6.
+
The Playlist maintainer selects an Audio clip +from the Local storage through the Playlist editor.
+

+

+
7.
+
The Playlist maintainer presents the new audio +data and metadata for the selected Audio clip.
+
8.
+
The system receives the audio data and metadata +for the new Audio clip.
+

+

+
9.
+
The system presents the new audio data and +metadata for the specified Audio Clip to Local storage.
+
10.
+
The Local storage updates the specified Audio +clips contents with the presented content, and notifies the system of +this.
+
11.
+
The system notifies the Playlist maintainer of +the changes made.
+

+

+

+

+
+
+

Alternate courses

+ +
+

UC-5 Add or update an Audio clip to Media archive
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ref# UC-5
use case Add or update an Audio clip to Media archive
+
type primary, essential
actors Playlist maintainer, Local storage, Media archive
+
purpose To add or update an Audio clip to Media archive
+
overview The +Playlist maintainer accesses the Playlist editor application with the +purpose of adding or updating an Audio clip already in Local storage to +the remote Media archive
+
references F1.2, F1.3, A1.9, A1.10
+
+

Typical course of events

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
actor action
+
system response
+
1. Playlist maintainer starts the Playlist editor +application.
+

+

+
2. The Playlist maintainer provides authentication +information 3. The system checks that the provided +authentication information is correct, and grants access.
+

+

+
4.
+
The system provides authentication information +to the Local storage
5.
+
The Local storage checks for the provided +authentication information, and grants access.
+

+
6.
+
The Playlist maintainer selects an Audio clip +from Local storage through the Playlist editor.
+

+

+
7.
+
The Playlist maintainer indicates the selected +Audio clip to be added to the Media archive.
+
8.
+
The system provides authentication information +to the Media archive
9.
+
The Media archive checks for the provided +authentication information, and grants access. 10.
+
The system transfers the Audio clip from Local +storage to the Media archive, adding it to the Media archive
+
11.
+
The Local storage provides the contents of the +requested Audio clip to the system.
+

+

+
12.
+
Media archive receives the Audio clip
+

+
13.1
+
If no Audio clip with the unique id of the +supplied clip exists in Media archive, it is stored as a new Audio +clip. The Media archive notifies the system of the acceptance of the +Audio clip.
+

+

+
13.2
+
If an Audio clip with the unique id of the +supplied clip already exists in +Media archive, its contens are updated with that of the supplied Audio +clip. The Media archive +notifies the system of the acceptance of the Audio clip.
+

+

+

+
14.
+
The system notifies the Playlist maintainer +about the result of adding the Audio clip to the Media archive
+

+

+

+

+
+
+

Alternate courses

+ +
+

UC-6 Search for Audio clips
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ref# UC-6
use case Search for Audio clips
+
type primary, essential
actors Playlist maintainer, Local storage, Media archive
+
purpose To search for Audio clips by metadata search +criteria in both Local storage and Media archive
+
overview The +Playlist maintainer accesses the Playlist editor application with the +purpose of searching for Audio clips based on some metadata search +criteria. The list if matching Audio clips is presented, both from +Local storage and Media archive.
+
references F1.2, F1.3, F1.4, A1.9, A1.10
+
+

Typical course of events

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
actor action
+
system response
+
1. Playlist maintainer starts the Playlist editor +application.
+

+

+
2. The Playlist maintainer provides authentication +information 3. The system checks that the provided +authentication information is correct, and grants access.
+

+

+
4.
+
The system provides authentication information +to the Local storage
5.
+
The Local storage checks for the provided +authentication information, and grants access.
+

+

+

+
6.
+
The system provides authentication information +to the Media archive
7.
+
The Media archive checks for the provided +authentication information, and grants access. 8.
+
The system provides an interface to enter search +criteria
+
9.
+
The Playlist maintainer enters a search criteria.
+
10.
+
The system executes a search with the search +criteria on Local storage
+
11.
+
Local storage returns a list of marching Audio +clips.
+
12.
+
If the Media archive is accessible, the system +executes a search on it with the search criteria
+
13.
+
The Media archive returns a list of matching +Audio clips.
+
14.
+
The system displays the list of matching Audio +clips to the Playlist maintainer.
+

+

+

+

+
+
+

Alternate courses

+ +
+

UC-7 Mirror an Audio clip from a remote Media archive in Local +storage
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ref# UC-7
use case Mirror an Audio clip from a remote Media archive +in Local storage
+
type primary, essential
actors Playlist maintainer, Local storage, Media archive
+
purpose To mirror an Audio clip stored in Media archive +in Local storage
+
overview The +Playlist maintainer accesses the Playlist editor application with the +purpose of downloading and mirroring an Audio clip from the Media +archive into Local storage.
+
references F1.1, F1.2, F1.3
+
+

Typical course of events

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
actor action
+
system response
+
1. Playlist maintainer starts the Playlist editor +application.
+

+

+
2. The Playlist maintainer provides authentication +information 3. The system checks that the provided +authentication information is correct, and grants access.
+

+

+
4.
+
The system provides authentication information +to the Media archive
+
5.
+
The Media archive checks that the provided +authentication information is correct, and grants access.
+
6.
+
The system provides authentication information +to Local storage
+
7.
+
Local storage checks that the provided +authentication information is correct, and grants access.
+

+
8.
+
The Playlist maintainer selects an Audio clip +from the Media archive, via the Playlist editor, for mirroring.
+
9.
+
The system accesses the Media archive, +downloading the requested Audio clip.
+
10.
+
The Media archive presents the requested Audio +clip
+
11.
+
The system stores the downloaded Audio clip in +Local storage
+
12.
+
Local storage stores the Audio clip
+
13.
+
The system notifies the Playlist maintainer of +the success of the operation.
+

+

+

+

+
+
+

Alternate courses

+ +
+

UC-8 Add an Audio clip to a Playlist
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ref# UC-8
use case Add an Audio clip to a Playlist
+
type primary, essential
actors Playlist maintainer, Local storage, Media archive
+
purpose To add an Audio clip to a Playlist, either from +Local storage or the Media archive
+
overview The Playlist maintainer accesses the Playlist +editor application with the purpose of adding an Audio clip to a +Playlist. The Audio clip may reside in Local storage or a Media archive.
+The details of the added Audio clip are stored locally, even if it's +from a remote Media archive. When adding a remote Audio clip (from +Media archive), the possibility is given to mirror the clip in Local +storage (see UC-7).
+
references F1.1, F1.2, F1.3
+
+

Typical course of events

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
actor action
+
system response
+
1. Playlist maintainer starts the Playlist editor +application.
+

+

+
2. The Playlist maintainer provides authentication +information 3. The system checks that the provided +authentication information is correct, and grants access.
+
4.
+
The Playlist maintainer selects a Playlist.
+

+

+

+

+
5.
+
The system provides authentication information +to Local storage
+
6.
+
Local storage checks that the provided +authentication information is correct, and grants access.7.
+
The system provides authentication information +to the Media archive
8.
+
The Media archive checks that the provided +authentication information is correct, and grants access.
+

+
9.
+
The Playlist maintainer selects an Audio clip, +to be added to the Playlist. The Playlist manager also provides an +offset in the playlist where he wants the Audio clip to be.
+
10.
+
The system adds the selected Audio clip at the +specified offset to the playlist. If this is overlapping with existing +clips on all audio layers, the clip is added to an additional audio +layer.
+

+

+
11.
+
If the added clip is from a remote Media +archive, the Playlist editor is presented with a choice of downloading +it to Local storage.
+
12.
+
The Playlist editor specifies if he wants the +clip to be downloaded to Local storage.
+

+

+

+

+

+

+
+
+

Alternate courses

+ +
+

UC-9 Move the position of an Audio clip in a Playlist
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ref# UC-9
use case Move the position of an Audio clip in a Playlist
+
type primary, essential
actors Playlist maintainer
+
purpose To change the offset of when an Audio clip is +played in a Playlist
+
overview The +Playlist maintainer accesses the Playlist editor application with the +purpose of changing the offset of an Audio clip in a Playlist.
+
references F1.1
+
+

Typical course of events

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
actor action
+
system response
+
1. Playlist maintainer starts the Playlist editor +application.
+

+

+
2. The Playlist maintainer provides authentication +information 3. The system checks that the provided +authentication information is correct, and grants access.
+
4.
+
The Playlist maintainer selects a Playlist.
+

+

+
5.
+
The Playlist maintainer selects an Audio clip in +the Playlist
+

+

+
6.
+
The Playlist maintainer moves the selected Audio +clip to a new offset.
+
7.
+
The system updates the offset information for +the selected Audio clip.
+
8.
+
The Playlist maintainer moves the Audio clip to +another layer.
+
9.
+
The system moves the Audio clip to the new layer.
+

+

+

+

+
+
+

Alternate courses

+ +
+

UC-10 Edit the transition of an Audio clip
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ref# UC-10
use case Edit the transition of an Audio clip
+
type primary, essential
actors Playlist maintainer
+
purpose To change the fade-in / fade-out of an Audio clip
+
overview The +Playlist maintainer accesses the Playlist editor application with the +purpose of changing the fade-in / fade-out of an Audio clip
+
references F1.1
+
+

Typical course of events

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
actor action
+
system response
+
1. Playlist maintainer starts the Playlist editor +application.
+

+

+
2. The Playlist maintainer provides authentication +information 3. The system checks that the provided +authentication information is correct, and grants access.
+
4.
+
The Playlist maintainer selects a Playlist.
+

+

+
5.
+
The Playlist maintainer selects an Audio clip in +the Playlist
+

+

+
6.
+
The Playlist maintainer edits the fade-in +parameters of the Audio clip
+
7.
+
The system updates the fade-in parameters of the +Audio clip.
+
8.
+
The Playlist maintainer edits the fade-out +parameters of the Audio clip
+
9.
+
The system updated the fade-out parameters of +the Audio clip.
+

+

+

+

+
+
+

Alternate courses

+ +
+

UC-11 Listen to a Playlist
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ref# UC-11
use case Listen to a Playlist
+
type primary, essential
actors Playlist maintainer, Local storage
+
purpose To preview a Playlist
+
overview The +Playlist maintainer accesses the Playlist editor application with the +purpose of listening to a Playlist, to verify that when it is played, +it will have the desired effect.
+
references F1.7, A1.11, A1.14
+
+

Typical course of events

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
actor action
+
system response
+
1. Playlist maintainer starts the Playlist editor +application.
+

+

+
2. The Playlist maintainer provides authentication +information 3. The system checks that the provided +authentication information is correct, and grants access.
+

+

+
4.
+
The system provides authentication information +to Local storage
+
5.
+
Local storage checks that the provided +authentication information is correct, and grants access.
+

+

+
6.
+
The Playlist maintainer selects a Playlist.
+

+

+
7.
+
The Playlist maintainer starts to play the +Playlist.
+
8.
+
The system looks up the Audio clips to be played +in the immediate future, and accesses them from Local storage.
+
9.1
+
If the requested Audio clip is contained in +Local storage, seekable access to the raw audio data of the requested +Audio clips is provided
+

+

+
9.2
+
If the requested Audio clip is not in Local +storage, the system is notified.
+

+

+

+

+
10.
+
The system plays the raw audio data on the local +audio interface if available, silence otherwise.
+
11.
+
The Playlist maintainer seeks into the Playlist
+
12.
+
The system updates the offset where the audio +clips are to be played from, and continues playing from there.
+
13.
+
The Playlist maintainer ends playing
+
14.
+
The system release access to all accessed Audio +clips from Local storage
+

+

+

+

+
+
+

Alternate courses

+ +
+

UC-12 Upload a Playlist to a Scheduler daemon
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ref# UC-12
use case Upload a Playlist to a Scheduler daemon
+
type primary, essential
actors Playlist maintainer, Scheduler
+
purpose To publish a Playlist
+
overview The +Playlist maintainer accesses the Playlist editor application with the +purpose of uploading a Playlist to a Scheduler daemon, so that it would +be executed at a specified time.
+
references F1.5
+
+

Typical course of events

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
actor action
+
system response
+
1. Playlist maintainer starts the Playlist editor +application.
+

+

+
2. The Playlist maintainer provides authentication +information 3. The system checks that the provided +authentication information is correct, and grants access.
+

+

+
4.
+
The system provides authentication information +to the Scheduler
+
5.
+
The Scheduler checks that the provided +authentication information is correct, and grants access.
+

+

+
6.
+
The Playlist maintainer selects a Playlist.
+

+

+
7.
+
The Playlist maintainer indicates the selected +Playlist to be uploaded to a Scheduler daemon, to be played at a +specified time.
+
8.
+
The system connects to the Scheduler with the +specified Audio clip and time, and uploads the Playlist.
+
9.
+
The Scheduler receives the playlist, and +schedules it for playing. The system is notified of this.
+
10.
+
The system notifies the Playlist maintainer of +the success of the operation.
+

+

+

+

+
+
+

Alternate courses

+ +
+

UC-13 Maintain configuration information
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ref# UC-13
use case Maintain configuration information
+
type primary, essential
actors Playlist maintainer
+
purpose To add, update or delete the systems that the +Playlist editor knows about.
+
overview The +Playlist maintainer accesses the Playlist editor application with the +purpose of reviewing and possibly changing the registered system the +Playlist editor connects to. These include Local storage, Media archive +and Scheduler, but also other details, like the local audio interface.
+
references F1.8
+
+

Typical course of events

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
actor action
+
system response
+
1. Playlist maintainer starts the Playlist editor +application.
+

+

+
2. The Playlist maintainer provides authentication +information 3. The system checks that the provided +authentication information is correct, and grants access.
+
4.
+
The Playlist maintainer selects to to view the +configuration information
+
5.
+
The system displays the configuration +information to the Playlist maintainer
+
6.
+
The Playlist maintainer selects to add a new +registered external system.
+
7.
+
The system verifies the new registry entry, and +adds it to the configuration
+
8.
+
The Playlist maintainer selects to update a +registered external system.
+
9.
+
The system verifies the new values for the +registry entry, and updates the configuration
+
10.
+
The Playlist maintainer deletes a registered +external system.
+
11.
+
The system deletes the external system, if there +remain a minimum required of such system.
+

+

+

+

+
+
+

Alternate courses

+ +
+

+

+

+

+

Conceptual model

+The following figure displays the semantic concepts identified for the +Scheduler daemon, and the main associations between the concepts.
+
+ +
+

Concepts

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
concept
+
description
+
Scheduler
+
The Scheduler daemon, executing playlists.
+
Local storage
+
The Local storage, holding Audio clips locally.
+
Media archive
+
The remote Media archive, holding Audio clips +remotely
+
Playlist uploader
+
The component responsible for uploading +Playlists to the Scheduler
+
Playlist player
+
Plays Playlists for preview locally.
+
Clip retriever
+
Responsible for the transfer of Audio clips to +and from Local storage and Media archive
+
Playlist
+
A series of Audio clips, and information on how +they come one after the other.
+
Playlist element
+
A connection object about a specific appearance +of an Audio clip in a Playlist
+
Audio clip
+
The basic unit of audio data handled by the +system.
+
Audio layer
+
An audio layer in the playlist, a sequence of +non-overlapping Audio clips
+
FadeInfo
+
The details of the transition of the specific +instance of the Audio clip on a Playlist. Basically a fade-in and +fade-out info
+
MetaData
+
The metadata associated with an Audio clip
+
SearchCriteria
+
Criteria for searching Metadata
+
Configuration
+
The configuration parameters of the Playlist +editor
+
Authentication
+
Component providing authentication services
+

+

+
+
+

Associations

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
source
+
association
+
target
+
description
+
Playlist uploader
+
Uploads to
+
Scheduler
+
The Playlist uploader uploads Playlists to the +Scheduler
+
Playlist player
+
Accesses audio data from
+
Local storage
+
For playing on the local audio interface
+
Clip retriever
+
Stores clips in
+
Local storage
+

+
Clip retriever
+
Stores clips in
+
Media archive
+

+
Clip retriever
+
Retrievers clips from
+
Media archive
+

+
Local storage
+
Contains
+
Audio clip
+

+
Media archive
+
Contains
+
Audio clip
+

+
Playlist uploader
+
Uploads
+
Playlist
+

+
Playlist player
+
Plays
+
Playlist
+

+
Playlist
+
Contains
+
Audio layer
+

+
Playlist element
+
References
+
Audio layer
+
Shows which layer the given Audio clip is on
+
Playlist element
+
Fades in with
+
FadeInfo
+

+
Playlist element
+
Fades out with
+
FadeInfo
+

+
Audio clip
+
Is described by
+
MetaData
+

+
Playlist maintainer
+
Searches by
+
SearchCriteria
+

+
Playlist maintainerCreates and edits
+
Playlist
+

+
Playlist maintainerListens to
+
Playlist
+

+
Playlist maintainerEdits
+
FadeInfo
+

+
Playlist maintainerMaintains
+
Configuration
+

+
Playlist maintainerIs authenticated by
+
Authentication
+

+

+

+

+

+
+
+

System behavior

+The behavior of the system as a whole as experienced from the outside +is discussed in this section.
+

System sequence diagrams

+System diagrams are presented for each use case below.
+

UC-1 Create a Playlist

+ +
+

UC-2 Add an Audio clip to Local storage

+ +
+

UC-3 Delete an Audio clip from Local storage

+ +
+

UC-4 Update an Audio clip in Local storage

+ +
+

UC-5 Add or update an Audio clip to Media archive

+ +
+

UC-6 Search for Audio clips

+ +
+

UC-7 Mirror an Audio clip from a remote Media archive in Local +storage

+ +
+

UC-8 Add an Audio clip to a Playlist

+ +
+

UC-9 Move the position of an Audio clip in a Playlist

+ +
+

UC-10 Edit the transition of an Audio clip

+ +
+

UC-11 Listen to a Playlist

+ +
+

UC-12 Upload a Playlist to a Scheduler daemon

+ +
+

UC-13 Maintain configuration information

+ +
+

System objects

+The following figures shows the system objects and their functions, as +derived from the system sequence diagrams.
+ +
+
+

Contracts

+For all operations exposed in the system sequence diagrams, the +following contracts are defined.
+

Contract for Playlist editor : authenticate

+See Authentication : authenticate
+

Contract for Playlist editor : createPlaylist
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Name
+
createPlaylist
+()
+: Playlist
+
Responsibilities
+
Create a new, empty +Playlist
+
Type
+
system
+
Cross-reference
+
UC-1
+
Notes
+
none
+
Exceptions
+
none
Output
+
a new, empty Playlist
+
Pre-conditions
+
none
Post-conditions
+
condition
+
type
+

+
a Playlist is created
+
instance creation
+

+

+

+
+
+

Contract for Playlist editor : addAudioClip
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Name
+
addAudioClip
+(rawAudioData : RawAudioData,
+metaData : MetaData)
+: UniqueId
+
Responsibilities
+
add an Audio Clip to +Local storage through the Playlist editor
+
Type
+
system
+
Cross-reference
+
UC-2
+
Notes
+
All the relevant work is +done in Local storage
+
Exceptions
+
none
Output
+
the unique id of the +added audio clip
+
Pre-conditions
+
none
Post-conditions
+
none
+

+

+

+

+
+
+

Contract for Playlist editor : deleteAudioClipFromLocalStorage
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Name
+
deleteAudioClipFromLocalStorage
+(audioClipId : UniqueId)
+: void
+
Responsibilities
+
delete an Audio Clip +from Local storage through the Playlist editor
+
Type
+
system
+
Cross-reference
+
UC-3
+
Notes
+
All the relevant work is +done in Local storage
+
Exceptions
+
if no Audio clip exists +in Local storage with the specified id, indicate as an error.
Output
+
none
+
Pre-conditions
+
none
Post-conditions
+
none
+

+

+

+

+
+
+

Contract for Playlist editor : updateAudioClipInLocalStorage
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Name
+
updateAudioClipInLocalStorage
+(audioClipId : UniqueId,
+rawAudioData : RawAudioData,
+metaData : MetaData)
+: void
+
Responsibilities
+
update the contents of +an Audio Clip in Local storage through the Playlist editor
+
Type
+
system
+
Cross-reference
+
UC-4
+
Notes
+
All the relevant work is +done in Local storage
+
Exceptions
+
if no Audio clip exists +in Local storage with the specified id, indicate as an error.
+
Output
+
none
+
Pre-conditions
+
none
Post-conditions
+
none
+

+

+

+

+
+
+

Contract for Playlist editor : addAudioClipToMediaArchive
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Name
+
addAudioClipToMediaArchive
+(audioClipId : UniqueId)
+: void
+
Responsibilities
+
add an Audio clip stored +in Local storage to the Media archive
+
Type
+
system
+
Cross-reference
+
UC-5
+
Notes
+
All the relevant work is +done in Local storage and Media archive.
+
Exceptions
+
if no Audio clip exists +in Local storage with the specified id, indicate as an error.
Output
+
none
+
Pre-conditions
+
none
Post-conditions
+
none
+

+

+

+

+
+
+

Contract for Playlist editor : searchMetadata
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Name
+
searchMetadata
+(criteria : SearchCriteria)
+: audioClipIds
+
Responsibilities
+
to search the Local +storage and remote Media archive accessible through the Playlist editor.
+
Type
+
system
+
Cross-reference
+
UC-6
+
Notes
+
All the relevant work is +done in Local storage and Media archive.
+
Exceptions
+
none
Output
+
a list of Audio clip +ids, which have metadata matching the search criteria.
+
Pre-conditions
+
none
Post-conditions
+
none
+

+

+

+

+
+
+

Contract for Playlist editor : mirrorAudioClipInLocalStorage
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Name
+
mirrorAudioClipInLocalStorage
+(audioClipId : UniqueId)
+: void
+
Responsibilities
+
to download and store an +Audio clip in Local storage, which is available in the remote Media +archive.
+
Type
+
system
+
Cross-reference
+
UC-7
+
Notes
+
All the relevant work is +done in Local storage and Media archive.
+
Exceptions
+
if no Audio clip exists +in Media archive with the specified id, indicate as an error.
Output
+
none
+
Pre-conditions
+
none
Post-conditions
+
none
+

+

+

+

+
+
+

Contract for Playlist editor : addAudioClipToPlaylist
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Name
+
addAudioClipToPlaylist
+(playlist : Playlist,
+audioClipId : UniqueId,
+offset : Time)
+: void
+
Responsibilities
+
to add an Audio clip to +a Playlist, with the specified offset
+
Type
+
system
+
Cross-reference
+
UC-8
+
Notes
+
none
+
Exceptions
+
if no Audio clip exists +in either Local storage or Media archive with the specified id, +indicate as an error.
Output
+
none
+
Pre-conditions
+
none
Post-conditions
+
condition
+
type
+

+
create a new PlaylistElement instance
+
instance creation
+

+
associate the PlaylistElement with the specified +Playlist
+
association formed
+

+
associate the PlaylistElement with the specified +Audio clip
+
association formed
+

+
set the relativeOffset value of PlaylistElement +to the supplied offset
+
attribute modification
+
find an Audio layer in the Playlist in which the +new clip at specified offset does not overlap other clips
+
associate the found Audio layer with the created +PlaylistElement
+
association formed
+
if the Audio clip is overlapping other clips in +all Audio layers in the Playlist
+
create a new Audio layer
+
instance creation
+

+
associate the Audio layer with the Playlist
+
association formed
+

+
associate the Audio layer with the +PlaylistElement
+
association formed
+

+

+

+
+
+

Contract for Playlist editor : updateAudioClipPositionInPlaylist
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Name
+
updateAudioClipPositionInPlaylist
+(playlist : Playlist,
+playlistElement : PlaylistElement,
+newOffset : Time)
+: void
+
Responsibilities
+
to move an Audio clip +within a playlist to an other offset
+
Type
+
system
+
Cross-reference
+
UC-9
+
Notes
+
none
+
Exceptions
+
if the new position of +the Audio clip in its present Audio layer overlaps with other clips, +indicate as an error.
+
Output
+
none
+
Pre-conditions
+
none
Post-conditions
+
condition
+
type
+

+
set the relativeOffset value of PlaylistElement +to the supplied offset
+
attribute modification
+

+

+

+
+
+

Contract for Playlist editor : moveAudioClipToOtherLayer
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Name
+
moveAudioClipToOtherLayer
+(playlist : Playlist,
+playlistElement : PlaylistElement,
+newLayer : Audio layer)
+: void
+
Responsibilities
+
to move an Audio clip +within a playlist to another Audio layer
+
Type
+
system
+
Cross-reference
+
UC-9
+
Notes
+
none
+
Exceptions
+
if the specified Audio +layer is not associated with the specified Playlist, indicate as an +error.
+if the Audio clip overlaps other clips in the new Audio layer, indicate +as an error.
+
Output
+
none
+
Pre-conditions
+
none
Post-conditions
+
condition
+
type
+

+
remove association between the PlaylistElement +and its current Audio layer
+
association broken
+

+
associate PlaylistElement with the supplied +Audio layer
+
association formed
+

+

+

+
+
+

Contract for Playlist editor : updateFadeParameters
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Name
+
updateFadeParameters
+(playlistElement : PlaylistElement,
+newFadeInInfo : fadeInfo,
+newFadeOutInfo : fadeInfo)
+: void
+
Responsibilities
+
to update the fade-in +and fade-out of an Audio clip in a Playlist
+
Type
+
system
+
Cross-reference
+
UC-10
+
Notes
+
none
+
Exceptions
+
none
+
Output
+
none
+
Pre-conditions
+
none
Post-conditions
+
condition
+
type
+

+
replace the contents of the fadeInInfo +associated with the playlistElement with that of the supplied fadeInInfo
+
attribute modification
+

+
replace the contents of the fadeOutInfo +associated with the playlistElement with that of the supplied +fadeOutInfo attribute modification

+

+

+
+
+

Contract for Playlist editor : playPlaylist
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Name
+
playPlaylist
+(playlist : Playlist,
+offset : Time)
+: void
+
Responsibilities
+
to play a playlist on +the local audio interface
+
Type
+
system
+
Cross-reference
+
UC-11
+
Notes
+
none
+
Exceptions
+
if offset points outside +of playlist, report as an error.
+
Output
+
none
+
Pre-conditions
+
none
Post-conditions
+
none
+

+

+

+

+
+
+

Contract for Playlist editor : stopPlaying
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Name
+
stopPlaying
+()
+: void
+
Responsibilities
+
to stop playing whatever +is played.
+
Type
+
system
+
Cross-reference
+
UC-11
+
Notes
+
none
+
Exceptions
+
if there is no Playlist +currently playing, indicate as an error.
+
Output
+
none
+
Pre-conditions
+
none
Post-conditions
+
none
+

+

+

+

+
+
+

Contract for Playlist editor : schedulePlaylist
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Name
+
schedulePlaylist
+(playlist : Playlist,
+schedule : Schedule)
+: void
+
Responsibilities
+
to upload a Playlist to +a Scheduler daemon for later execution
+
Type
+
system
+
Cross-reference
+
UC-12
+
Notes
+
All the relevant work is +done in the Scheduler daemon.
Exceptions
+
none
+
Output
+
none
+
Pre-conditions
+
none
Post-conditions
+
none
+

+

+

+

+
+
+

Contract for Playlist editor : addConfiguration
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Name
+
addConfiguration
+(configuration : Configuration)
+: void
+
Responsibilities
+
to add a new +Configuration item
+
Type
+
system
+
Cross-reference
+
UC-13
+
Notes
+
none
Exceptions
+
none
+
Output
+
none
+
Pre-conditions
+
none
Post-conditions
+
condition
+
type
+

+
create a new Configuration instance
+
instance creation
+

+
fill the created configuration instance with the +supplied information
+
attribute modification
+

+

+

+
+
+

Contract for Playlist editor : updateConfiguration
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Name
+
updateConfiguration
+(configuration : Configuration)
+: void
Responsibilities
+
to update a +Configuration item
+
Type
+
system
+
Cross-reference
+
UC-13
+
Notes
+
none
Exceptions
+
none
+
Output
+
none
+
Pre-conditions
+
none
Post-conditions
+
condition
+
type
+

+
fill the corresponding configuration instance +with the supplied information
+
attribute modification
+

+

+

+
+
+

Contract for Playlist editor : deleteConfiguration
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Name
+
deleteConfiguration
+(configuration : Configuration)
+: void
Responsibilities
+
to delete a +Configuration item
+
Type
+
system
+
Cross-reference
+
UC-13
+
Notes
+
none
Exceptions
+
none
+
Output
+
none
+
Pre-conditions
+
none
Post-conditions
+
condition
+
type
+

+
delete the corresponding configuration item
+
instance deletion
+

+

+

+
+
+
+ + diff --git a/livesupport/doc/model/Scheduler/Concepts.svg b/livesupport/doc/model/Scheduler/Concepts.svg new file mode 100644 index 000000000..b6f2b73d7 --- /dev/null +++ b/livesupport/doc/model/Scheduler/Concepts.svg @@ -0,0 +1,1438 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + << + + + component + + + >> + + + Scheduler + + + + + + + Authentication + + + + + + + + + + + + + + + + + + + FadeInfo + + + + + + + + + + + + + + + + + + + AudioClip + + + + + + + + + - + + + id + + + : + + + UniqueId + + + - + + + duration + + + : + + + Time + + + + + + + + + + + + + Media archive + + + (from + + + Media archive + + + ) + + + + + + + + + + Retrieves clips from + + + + + + + + + + * + + + Contains + + + + + + + Broadcast auditor + + + + + + + + + - + + + authenticationInfo + + + : + + + AuthenticationInfo + + + + + + + + + + + + + + + + Browses entries from + + + + + + + + + + Is authentitcated by + + + + + + + Playlist editor + + + + + + + + + - + + + authenticationInfo + + + : + + + AuthenticationInfo + + + + + + + + + + + + + + + + Uploads playlists to + + + + + + + + + + Manages schedule in + + + + + + + + + + Is authenticated by + + + + + + + + + + Requests + + + + + + + Local storage + + + (from + + + Local storage + + + ) + + + + + + + + + + * + + + Contains + + + + + + + + + + Stores clips in + + + + + + + Scheduler daemon + + + + + + + + + + + + + + + + + + + start + + + ( + + + ) + + + : + + + void + + + + + + + stop + + + ( + + + ) + + + : + + + void + + + + + + + isRunning + + + ( + + + ) + + + : + + + boolean + + + + + + + Play log entry + + + + + + + + + - + + + time + + + : + + + TimeStamp + + + + + + + + + + + + + Playlist store + + + + + + + + + + + + + + + + + + + Schedule entry + + + + + + + + + - + + + time + + + : + + + TimeStamp + + + + + + + + + + + + + Playlist + + + + + + + + + - + + + duration + + + : + + + Time + + + - + + + lockedForEditing + + + : + + + boolean + + + + + + + + + + + + + isValid + + + ( + + + ) + + + : + + + boolean + + + + + + + Play log + + + + + + + + + + + + + + + + + + + Play report + + + + + + + + + - + + + from + + + : + + + TimeStamp + + + - + + + to + + + : + + + TimeStamp + + + + + + + + + + + + + Schedule + + + + + + + + + + + + + + + + + + + Clip retriever + + + + + + + + + - + + + authenticationInfo + + + : + + + + + + + + + + + + + + + + * + + + Contains + + + + * + + + + + + + References + + + + + + + + + + Executes + + + + + + + + + + Logs into + + + + + + + + + + References + + + + + + + + + + * + + + Contains + + + + + + + + + + Generates + + + + + + + + + + * + + + Contains + + + + + + + + + + PlaylistElement + + + + + + + + + - + + + relativeOffset + + + : + + + Time + + + + + + + + + + + + + + + + + + + Fades in with + + + + + + + + + + Fades out with + + + + + + + + + + Stores clips in + + + + + + + Administrator + + + + + + + + + + + + + + + + + + + + + + Manages + + + diff --git a/livesupport/doc/model/Scheduler/Createplaylist_SequenceDiagram.svg b/livesupport/doc/model/Scheduler/Createplaylist_SequenceDiagram.svg new file mode 100644 index 000000000..131eba7f2 --- /dev/null +++ b/livesupport/doc/model/Scheduler/Createplaylist_SequenceDiagram.svg @@ -0,0 +1,199 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + playlistEditor + + + + : + + + + Playlist editor + + + + + + + + + + system + + + + : + + + + Scheduler + + + + + + + + + + + + + + + + : + + + authenticated + + + := + + + authenticate + + + ( + + + authInfo + + + ) + + + + + + + + + + + : + + + playlist + + + := + + + createPlaylist + + + ( + + + ) + + + + + + + For editing the playlist see UC-7 Edit playlist + + + diff --git a/livesupport/doc/model/Scheduler/Editplaylist_SequenceDiagram.svg b/livesupport/doc/model/Scheduler/Editplaylist_SequenceDiagram.svg new file mode 100644 index 000000000..c22ae16c6 --- /dev/null +++ b/livesupport/doc/model/Scheduler/Editplaylist_SequenceDiagram.svg @@ -0,0 +1,779 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + system + + + + : + + + + Scheduler + + + + + + + + + + + + + + playlistEditor + + + + : + + + + Playlist editor + + + + + + + + These three constitute + selecting and adding an + audio clip to the playlist, + use case actions 7-12 + + + + + + + Selecting and removing + an aduio clip from the + playlist, actions 13-14 + + + + + + + + + + + : + + + authenticated + + + := + + + authenticate + + + ( + + + authInfo + + + ) + + + + + + + + + + + : + + + playlists + + + := + + + displayPlaylists + + + ( + + + ) + + + + + + + + + + + : + + + openPlaylistForEditing + + + ( + + + playlist + + + ) + + + + + + + + + + + + + + : + + + addAudioClipToPlaylist + + + ( + + + audioClip + + + , + + + playlist + + + , + + + relativeOffset + + + ) + + + + + + + + + + + : + + + audioClips + + + := + + + displayAudioClips + + + ( + + + ) + + + + + + + + + + + + + + : + + + audioClip + + + := + + + displayAudioClip + + + ( + + + audioClipId + + + ) + + + + + + + + + + + + + + : + + + playlist + + + := + + + displayPlaylist + + + ( + + + playlistId + + + ) + + + + + + + + + + + + + + : + + + removeAudioClipFromPlaylist + + + ( + + + playlist + + + , + + + audioClip + + + ) + + + + + + + + + + + + + + : + + + updateFadeInOut + + + ( + + + playlist + + + , + + + audioClip + + + ) + + + + [save playlist] + + + : + + + playlistValid + + + := + + + validatePlaylist + + + ( + + + playlist + + + ) + + + + + + + + + + + + + + + : + + + savePlaylist + + + ( + + + playlist + + + ) + + + + [revert to old version] + + + : + + + revertEditedPlaylist + + + ( + + + playlist + + + ) + + + + + + + + + + + either + save, or + revert to + the old + version + + + + + + + + + diff --git a/livesupport/doc/model/Scheduler/EssentialUseCases.svg b/livesupport/doc/model/Scheduler/EssentialUseCases.svg new file mode 100644 index 000000000..4ab353d17 --- /dev/null +++ b/livesupport/doc/model/Scheduler/EssentialUseCases.svg @@ -0,0 +1,218 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + LiveSupport Scheduler + + + + + + + + + + + + + UC-5 Review play log + + + + + + + UC-4 Retrieve remote files + + + + + + + UC-3 Manage playlists + + + + + + + UC-1 Upload playlist + + + + + + + UC-2 Manage schedule + + + + + + + UC-6 Create playlist + + + + + + + UC-7 Edit playlist + + + + + + + UC-8 Start/stop scheduler + + + + + + + Playlist editor + + + + + + + Broadcast auditor + + + + + + + + + + + + + Local storage + + + + + + + + + + + + + + + + + + + + + + Administrator + + + + + + diff --git a/livesupport/doc/model/Scheduler/Manageplaylists_SequenceDiagram.svg b/livesupport/doc/model/Scheduler/Manageplaylists_SequenceDiagram.svg new file mode 100644 index 000000000..5351b1e96 --- /dev/null +++ b/livesupport/doc/model/Scheduler/Manageplaylists_SequenceDiagram.svg @@ -0,0 +1,289 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + playlistEditor + + + + : + + + + Playlist editor + + + + + + + + + + system + + + + : + + + + Scheduler + + + + + + + + + + + + + + + + : + + + authenticated + + + := + + + authenticate + + + ( + + + authInfo + + + ) + + + + + + + + + + + : + + + playlists + + + := + + + displayPlaylists + + + ( + + + ) + + + + + + + + + + + : + + + playlist + + + := + + + displayPlaylist + + + ( + + + playlistId + + + ) + + + + + + + + + + + : + + + deletePlaylist + + + ( + + + playlist + + + ) + + + diff --git a/livesupport/doc/model/Scheduler/Manageschedule_SequenceDiagram.svg b/livesupport/doc/model/Scheduler/Manageschedule_SequenceDiagram.svg new file mode 100644 index 000000000..93518cf85 --- /dev/null +++ b/livesupport/doc/model/Scheduler/Manageschedule_SequenceDiagram.svg @@ -0,0 +1,455 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + system + + + + : + + + + Scheduler + + + + + + + + + + + + + + playlistEditor + + + + : + + + + Playlist editor + + + + + + + + + + + + : + + + authenticated + + + := + + + authenticate + + + ( + + + authInfo + + + ) + + + + + + + + + + + : + + + schedulEntries + + + := + + + displaySchedule + + + ( + + + from + + + , + + + to + + + ) + + + + + + + + + + + : + + + playlist + + + := + + + displayPlaylist + + + ( + + + playlistId + + + ) + + + + + + + + + + + : + + + removeFromSchedule + + + ( + + + scheduleEntry + + + , + + + playlist + + + ) + + + + + + + + + + + : + + + reschedule + + + ( + + + scheduleEntry + + + , + + + playlist + + + , + + + newPlaytime + + + ) + + + + + + + + + + + : + + + scheduleEntries + + + := + + + displaySchedule + + + ( + + + from + + + , + + + to + + + ) + + + diff --git a/livesupport/doc/model/Scheduler/Retrieveremotefiles_SequenceDiagram.svg b/livesupport/doc/model/Scheduler/Retrieveremotefiles_SequenceDiagram.svg new file mode 100644 index 000000000..27649a6cd --- /dev/null +++ b/livesupport/doc/model/Scheduler/Retrieveremotefiles_SequenceDiagram.svg @@ -0,0 +1,388 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + system + + + + : + + + + Scheduler + + + + + + + + + + localStorage + + + + : + + + + Local storage + + + + + + + + + + + + + + mediaArchive + + + + : + + + + Media archive + + + + + + + + + + + + + + + + : + + + authenticated + + + := + + + authenticate + + + ( + + + authInfo + + + ) + + + + + + + + + + + : + + + clipExists + + + := + + + existsAudioClip + + + ( + + + audioClipId + + + ) + + + + + + + + + + + : + + + authenticated + + + := + + + authenticate + + + ( + + + authId + + + ) + + + + + + + + + + + : + + + audioClip + + + := + + + retrieveAudioClip + + + ( + + + audioClipId + + + ) + + + + + + + + + + + : + + + storeAudioClip + + + ( + + + audioClip + + + ) + + + diff --git a/livesupport/doc/model/Scheduler/Reviewplaylog_SequenceDiagram.svg b/livesupport/doc/model/Scheduler/Reviewplaylog_SequenceDiagram.svg new file mode 100644 index 000000000..f50bc15cc --- /dev/null +++ b/livesupport/doc/model/Scheduler/Reviewplaylog_SequenceDiagram.svg @@ -0,0 +1,257 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + broadcastAuditor + + + + : + + + + Broadcast auditor + + + + + + + + + + system + + + + : + + + + Scheduler + + + + + + + + + + + + + + + + : + + + authenticated + + + := + + + authenticate + + + ( + + + authInfo + + + ) + + + + + + + + + + + : + + + playLog + + + := + + + displayPlayLog + + + ( + + + ) + + + + + + + + + + + : + + + report + + + := + + + generatePlayReport + + + ( + + + from + + + , + + + to + + + ) + + + diff --git a/livesupport/doc/model/Scheduler/Startstopscheduler_SequenceDiagram.svg b/livesupport/doc/model/Scheduler/Startstopscheduler_SequenceDiagram.svg new file mode 100644 index 000000000..59800118a --- /dev/null +++ b/livesupport/doc/model/Scheduler/Startstopscheduler_SequenceDiagram.svg @@ -0,0 +1,222 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + system + + + + : + + + + Scheduler + + + + + + + + + + + + + + + + + + + + administrator + + + + : + + + + Administrator + + + + + + + + : + + + start + + + ( + + + ) + + + + + + + + + + + : + + + stop + + + ( + + + ) + + + + + + + + + + + + + + + : + + + isRunning + + + := + + + isRunning + + + ( + + + ) + + + diff --git a/livesupport/doc/model/Scheduler/Systembehaviour.svg b/livesupport/doc/model/Scheduler/Systembehaviour.svg new file mode 100644 index 000000000..7a59ce0d5 --- /dev/null +++ b/livesupport/doc/model/Scheduler/Systembehaviour.svg @@ -0,0 +1,1355 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Scheduler + + + + + + + + + + + + + + + + + + + authenticate + + + ( + + + authenticationInfo + + + : + + + ) + + + : + + + boolean + + + + + + + uploadPlaylist + + + ( + + + playlist + + + : + + + Playlist + + + , + + + playtime + + + : + + + Schedule + + + ) + + + : + + + void + + + + + + + displaySchedule + + + ( + + + from + + + : + + + TimeStamp + + + , + + + to + + + : + + + TimeStamp + + + ) + + + : + + + Schedule entry + + + + + + + displayPlaylist + + + ( + + + playlistId + + + : + + + ) + + + : + + + Playlist + + + + + + + deletePlaylist + + + ( + + + playlist + + + : + + + Playlist + + + ) + + + : + + + void + + + + + + + removeFromSchedule + + + ( + + + scheduleEntry + + + : + + + Schedule entry + + + , + + + playlist + + + : + + + Playlist + + + ) + + + : + + + void + + + + + + + reschedule + + + ( + + + scheduleEntry + + + : + + + Schedule entry + + + , + + + playlist + + + : + + + Playlist + + + , + + + playtime + + + : + + + TimeStamp + + + ) + + + : + + + void + + + + + + + displayPlaylists + + + ( + + + ) + + + : + + + Playlist + + + + + + + displayPlayLog + + + ( + + + ) + + + : + + + Play log + + + + + + + generatePlayReport + + + ( + + + from + + + : + + + TimeStamp + + + , + + + to + + + : + + + TimeStamp + + + ) + + + : + + + Play report + + + + + + + createPlaylist + + + ( + + + ) + + + : + + + Playlist + + + + + + + openPlaylistForEditing + + + ( + + + playlist + + + : + + + Playlist + + + ) + + + : + + + void + + + + + + + addAudioClipToPlaylist + + + ( + + + playlist + + + : + + + Playlist + + + , + + + audioClip + + + : + + + , + + + relativeOffset + + + : + + + Time + + + ) + + + : + + + void + + + + + + + displayAudioClips + + + ( + + + ) + + + : + + + + + + + displayAudioClip + + + ( + + + audioClipId + + + : + + + ) + + + : + + + + + + + removeAudioClipFromPlaylist + + + ( + + + playlist + + + : + + + Playlist + + + , + + + audioClip + + + : + + + ) + + + : + + + void + + + + + + + updateFadeInOut + + + ( + + + playlist + + + : + + + Playlist + + + , + + + audioClip + + + : + + + ) + + + : + + + void + + + + + + + validatePlaylist + + + ( + + + playlist + + + : + + + Playlist + + + ) + + + : + + + boolean + + + + + + + savePlaylist + + + ( + + + playlist + + + : + + + Playlist + + + ) + + + : + + + void + + + + + + + revertEditedPlaylist + + + ( + + + playlist + + + : + + + Playlist + + + ) + + + : + + + void + + + + + + + start + + + ( + + + ) + + + : + + + void + + + + + + + isRunning + + + ( + + + ) + + + : + + + boolean + + + + + + + stop + + + ( + + + ) + + + : + + + void + + + diff --git a/livesupport/doc/model/Scheduler/Uploadplaylists_SequenceDiagram.svg b/livesupport/doc/model/Scheduler/Uploadplaylists_SequenceDiagram.svg new file mode 100644 index 000000000..de1a57982 --- /dev/null +++ b/livesupport/doc/model/Scheduler/Uploadplaylists_SequenceDiagram.svg @@ -0,0 +1,195 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + playlistEditor + + + + : + + + + Playlist editor + + + + + + + + + + system + + + + : + + + + Scheduler + + + + + + + + + + + + + + + + : + + + authenticated + + + := + + + authenticate + + + ( + + + authInfo + + + ) + + + + + + + + + + + : + + + uploadPlaylist + + + ( + + + playlist + + + , + + + playtime + + + ) + + + diff --git a/livesupport/doc/model/Scheduler/index.html b/livesupport/doc/model/Scheduler/index.html new file mode 100644 index 000000000..503bf61f3 --- /dev/null +++ b/livesupport/doc/model/Scheduler/index.html @@ -0,0 +1,4201 @@ + + + + + LiveSupport Scheduler specifications + + + +

Preface

+This document is part of the LiveSupport +project, Copyright © 2004 Media +Development Loan Fund, under the GNU GPL.
+ +

Scope

+This document contains the specification of the LiveSupport Scheduler +daemon.
+
+This document contains embedded SVG figures, thus an SVG +capable browser is needed to view it, or an SVG plugin like Adobe's SVG Viewer.
+

Requirements

+

Overview
+

+The purpose of the LiveSupport Scheduler daemon is to execute +playlists.
+

Goals
+

+The scheduler daemon is a remotely accessible service accepting +playlists on a local audio interface. Specific goals include:
+ +

System functions

+The main system functions are described below. There are three +categories for these functions:
+ + + + + + + + + + + + + + + + + + + +
function category
+
meaning
+
evident
+
Should perform, and the user should be cognizant +that it is performed
+
hidden
+
Should perform, but not visible to the users.
+
frill
+
Optional
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ref#
+
function
+
category
+
F1.1
+
Accept uploaded playlists
+
evident
+
F1.2
+
Retrieve remote files referenced by playlists
+
hidden
+
F1.3
+
Access local files
+
hidden
+
F1.4
+
Provide status information
+
evident
+
F1.5
+
Log playlist execution for proof of broadcast +reasons
+
evident
+
F1.6
+
Purge local file storage of unused audio clips
+
hidden
+
F1.7
+
Execute playlists
+
evident
+
F1.8
+
Play live streams as part of the playlist
+
hidden
+
F1.9
+
Remove playists from the schedule
+
evident
+
F1.10
+
Re-schedule playlsits
+
evident
+
F1.11
+
Delete playlists
+
evident
+
F1.12
+
Create playlists
+
evident
+
F1.13
+
Edit playlists
+
evident
+
F1.14
+
Start the scheduler daemon
+
evident
+
F1.15
+
Stop the scheduler daemon
+
evident
+

+

+

+
+
+

System attributes

+Generic attributes
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ref#
+
attribute
+
details and constraints
+
category
+
A1.1
+
operating system platform
+
Linux
+
must
+
A1.2
+
supported audio interfaces
+
ALSA (maybe also OSS?)
+
must
+
A1.3
+
supported playlist format
+
SMIL 2.0. only partial support is required, +which focuses only on audio aspects of SMIL.
+
must
+
A1.4
+
supported audio clip formats
+
Ogg Vorbis, mp3, wav
+
must
+

+

+

+

+
+
+Attributes related to system functions
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ref#
+
function
+
ref#
+
attribute
+
details and constraints
+
category
+
F1.7
+
Execute playlists
+
A1.5
+
low latency
+
when executing playlists, very low latency +should be achieved
+
must
+

+

+
A1.6
+
handle time skew
+
the +daemon has to take into account that the system's clock is not +accurate. the clock is synchronized to an external regularly, but the +resulting time-jump must be handled.
+
must
+
F1.8
+
Play live streams as part of the playlist A1.7
+
supported audio stream formats
+
Ogg Vorbis via HTTP, mp3 via HTTP
+
must
+
F1.14
+F1.15
+
Start / stop the scheduler daemon
+
A1.8
+
provide System V init style services
+
Provide a System V init interface to starting +and stopping the scheduler daemon
+
must
+

+

+

+

+

+

+
+
+

Essential use cases

+This section lists generic (essential) uses cases, that do not contain +architecture-specific considerations.
+
+ +

UC-1 Upload playlist

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ref# UC-1
use case Upload playlist
type primary, essential
actors Playlist editor
purpose Upload a playlist
overview The Playlist editor uploads a new playlist.
references F1.1
+

Typical course of events

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
actor action
+
system response
+
1. Playlist editor connects to the scheduler daemon +with the intent of uploading a new playlist.
+

+

+
2. The Playlist editor provides authentication +information 3. The system authenticates the Playlist editor and +grants access.
4. The Playlist editor presents the new playlist +and the intended schedule for the playlist.
+
5. The system validates the new playlist, and sees +that it does not conflict with existing schedule.

+

+
6. The system stores the new playlist, adds it to +the schedule, and sends confirmation to the Playlist editor.
7. The Playlist editor receives confirmation and +disconnects.
+

+

+

+

+

+
+
+

Alternate courses

+ +

UC-2 Manage schedule
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ref#
+
UC-2
use case Manage schedule
type
+
primary, essential
actors
+
Playlist editor
purpose
+
View the schedule and remove or re-schedule +playlists
+
overview
+
The Playlist editor reviews the schedule. If he +decides to, he might remove or re-schedule some of these playlists.
references
+
F1.4, F1.9, F1.10
+
+
+

Typical course of events
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
actor action
+
system response
+
1. Playlist editor connects to the scheduler daemon +with the intent of viewing and editing the schedule.
+

+

+
2. The Playlist editor provides authentication +information 3. The system authenticates the Playlist editor and +grants access.

+

+
4.
+
The system shows the Schedule to the Playlist +editor
+
5.
+
The Playlist editor browses the Schedule, +selects a playlist for detailed viewing.
+
6.
+
The system shows the details of the selected +Playlist.
+
7.
+
The playlist editor removes a playlist from the +schedule.
+
8.
+
The system removes the playlist from the +schedule, than re-displays the updated schedle.
+
9.
+
The Playlist editor re-schedules a playlist
+
10.
+
The system removes the selected playlist from +the schedule, and re-enters it at a new timepoint
+
11.
+
The Playlist editor browses the Schedule
+
12.
+
The system shows the Schedule to the playlist +editor
+
13.
+
The Playlist editor disconnects.
+

+

+
+
+

Alternate courses

+ +

UC-3 Manage playlists
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ref#
+
UC-3
use case Manage playlists
type
+
primary, essential
actors
+
Playlist editor
purpose
+
View and delete playlists
overview
+
The Playlist editor reviews the uploaded +playlists. If he decides so, he might delete some of these playlists.
references
+
F1.4, F1.11
+
+
+

Typical course of events
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
actor action
+
system response
+
1. Playlist editor connects to the scheduler daemon +with the intent of viewing and deleting playlists.
+

+

+
2. The Playlist editor provides authentication +information 3. The system authenticates the Playlist editor and +grants access.

+

+
4.
+
The system lists the available Playlists
+
5.
+
The Playlist editor browses the playlists, and +selects one for detailed viewing.
+
6.
+
The system shows the details of the selected +Playlist.
+
7.
+
The playlist editor deletes a playlist.
+
8.
+
The system deletes the playlist, than +re-displays the list of available Playlists.
+
9.
+
The Playlist editor disconnects.
+

+

+
+
+

Alternate courses

+ +

UC-4 Retrieve remote files
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ref# UC-4
use case Retrieve remote files
type
+
primary, essential
actors
+
(internal actor, initiator), Media archive, +Local storage
+
purpose
+
Retrieve remote files referenced by active +playlists and store them in the local storage
+
overview
+
The +daemon contacts the remote media archive and retrieves audio clips +referenced by active playlists. The clips are stored locally for +playing.
references
+
F1.2
+
+Note that this use case is somewhat reversed, as it is initiated by the +system (not an actor), and the main tasks are done by an external actor +(the Media archive).
+

Typical course of events

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
actor action
+
system response
+
1. An Internal actor triggers the retrieval of some +remote files.
+
2. The system looks up the URN of the remote file, +and determines the Media archive to contact regarding the file.

+

+
3.
+
The system contacts the Local storage and sends +authorization information
+
4.
+
Local storage authenticates the system and +grants access
+
5.
+
The system iniquires the local storage about the +availability of the file to download in the Local storage by presenting +its unique ID
+
6.
+
Local storage tells if the required file is +already stored or not.
+
7.
+
If the file is available in the local storage, +the use case ends. Otherwise, it continues.
+

+

+
8.
+
The system contacts the Media archive and sends +authorization information
9. Media archive authenticates the system and +grants access 10. The system requests an audio clip by presenting +its unique ID
11. Media archive looks up the file, and presents it +to the system 12. The system retrieves the file and closes the +connection to the Media archive
+

+

+
13.
+
The system presents the file to Local storage
+
14.
+
Local storage stores the file under the +specified unique ID
+
15.
+
The system closes the connection to Local +storage.
+

+

+

+

+
+
+

Alternate courses

+ +

UC-5 Review play log
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ref# UC-5
use case Review play log
type secondary, essential
actors Broadcast auditor
purpose Review what has been played
overview The +Broadcast auditor reviews the audio clips that have been played in a +selected time interval. He may generate reports for proof of broadcast +reasons.
references F1.4
+

Typical course of events
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
actor action
+
system response
+
1. Broadcast auditor connects to the scheduler +daemon with the intent of reviewing what has been played.
+

+

+
2. The Broadcast auditor provides authentication +information 3. The system authenticates the Broadcast auditor +and grants access.
3.
+
The Broadcast auditor browses through the play +log in a time-ordered manner.
+
4.
+
The system displays the play log entries.
+
5.
+
The Broadcast auditor requests a play report for +a given time period.
+
6.
+
The system displays the requested report.
+
7.
+
The Broadcast auditor disconnects.
+

+

+

+

+

+

+
+
+

Alternate courses

+ +
+

UC-6 Create playlist
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ref# UC-6
use case Create playlist
+
type secondary, essential
actors Playlist editor
+
purpose Create a new playlist, and then edit it.
+
overview The Playlist editor connects to the Scheduler +with the aim of creating a new playlist. A basic user interface is +provided, which allows professionals to create and edit the playlsits +on the system.
+
references F1.12, F1.13
+
+

Typical course of events
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
actor action
+
system response
+
1. Playlist editor connects to the scheduler with +the intent of creating a new playlist.
+

+

+
2. The Playlist editor provides authentication +information 3. The system authenticates the Playlist editor and +grants access.
4.
+
The Playlist editor signals that he whishes for +a new playlist
+
5.
+
The system creates a new, empty playlist, and +opens it for editing.
+
6.
+
The Playlist editor edits the new playlist. See +UC-7 actions 7-15 for details.
+

+

+
7.
+
The Playlist editor disconnects.
+

+

+

+

+

+

+
+
+

Alternate courses

+ +
+

UC-7 Edit playlist
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ref# UC-7
use case Edit playlist
+
type secondary, essential
actors Playlist editor
+
purpose Edit a previoulsy uploaded playlist
+
overview The Playlist editor connects to the +Scheduler with the aim of either editing an existing playlist. A basic +user interface is provided, which allows +professionals to edit the playlsits on the system.
+
references F1.12
+

Typical course of events
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
actor action
+
system response
+
1. Playlist editor connects to the scheduler with +the intent of editing a playlist.
+

+

+
2. The Playlist editor provides authentication +information 3. The system authenticates the Playlist editor and +grants access.

+

+
4.
+
The system lists the available playlists.
+
5.
+
The Playlist editor selects a playlist for +editing.
+
6.
+
The system opens the playlist in editing mode.
+
7.
+
The Playlist editor browses the available Audio +clips
+
8.
+
The system shows the list of available audio +clips
+
9.
+
The Playlist editor selects an Audio clip
+
10.
+
The system displays details on the audio clip.
+
11.
+
The Playlist editor ads a new audio clip to the +playlist, at a certain timepoint in the playlist.
+
12.
+
The new audio clip is added to the playlist.
+
13.
+
The Playlist editor removes an audio clip from +the playlist.
+
14.
+
The audio clip is removed from the playlist.
+
15.
+
The Playlist editor edits the fade-in or +fade-out of a clip in the playlist.
+
16.
+
The fade-in or fade-out is edited.
+
17.
+
The Playlist editor saves the playlist.
+
18.
+
The playlist is validated.
+

+

+
19.
+
The playlist is saved.
+
20.
+
The Playlist editor disconnects.
+

+

+
+
+

Alternate courses

+ +
+

UC-8 Start/stop scheduler
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ref# UC-8
use case Start/stop scheduler
+
type primary, essential
actors Administrator
+
purpose Start and stop the scheduler daemon
+
overview The adminisitrator starts the scheduler deamon +by invoking a System V init-style startup script. He may also stop the +deamon with the same script.
+
references F1.14, F1.15, A1.8
+
+

Typical course of events
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
actor action
+
system response
+
1. The Administrator invokes the scheduler's System +V init script with the start parameter
+

+

+

+

+
2. The scheduler daemon starts up.
+
3.
+
The Administrator checks to see if the scheduler +daemon is running
+
4.
+
The scheduler daemon reports that it is running.
+
5.
+
The Administrator stops the scheduler deamon.
+
6.
+
The scheduler daemon stops.
+
+
+

Alternate courses

+ +

Conceptual model

+The following figure displays the semantic concepts identified for the +Scheduler daemon, and the main associations between the concepts.
+
+ +
+

Concepts

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
concept
+
description
+
Media archive
+
An archive external to the system, which holds +Audio clips. The archive offers its clips for download by requesting +clips based on their unique ids.
+
Clip retriever
+
Retrieves Audio clips from the Media archive and +stores them in local storage.
+
Local storage
+
A local store of Audio clips. Provides access to +each clip based on the clips' unique id. Allows random access to the +clip files.
+
Audio clip
+
A uniquely identified audio file.
+
Playlist
+
A metafile, containing references to Audio +clips, and information on how the clips should be played.
+
PlaylistElement
+
An association class describing the specifics of +an instance of an Audio clip in a playlist.
+
FadeInfo
+
A class describing fade in or fade out +characteristics for an Audio clip in a Playlist
+
Playlist store
+
A container holding a range of playlists.
+
Schedule
+
Contains Schedule entries
+
Schedule entry
+
Contains the time and details of when a playlist +should be played.
+
Scheduler daemon
+
Executes playlists at timepoints specified by +the schedule.
+
Play log
+
A logging facility, holding Play log entries.
+
Play log entry
+
A record of when an Audio clip was played.
+
Play report
+
An audit report of what Audio clips have been +played in a certain time period
+
Authentication
+
Provides authentication services
+
Playlist editor
+
An external editor, managing playlists.
+
Broadcast auditor
+
An external auditor, browsing the Play log.
+
Administrator
+
The administrator responsible for starting and +stopping the scheduler daemon.
+

+

+
+
+

Associations

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
source
+
association
+
target
+
description
+
Clip retriever
+
Retrieves clips from
+
Media archive
+

+
Media archive
+
Contains
+
Audio clip
+

+
Clip retriever
+
Stores clips in
+
Local storage
+

+
Local storage
+
Contains
+
Audio clip
+

+
Playlist
+
References by PlaylistElement
+
Audio clip
+

+
PlaylistElement
+
Fades in with
+
FadeInfo
+

+
PlaylistElement
+
Fades out with
+
FadeInfo
+

+
Playlist store
+
Contains
+
Play list
+

+
Playlist editor
+
Uploads playlist to
+
Playlist store
+

+
Playlist editor
+
Manages schedule in
+
Schedule
+
The Playlist editor schedules playlists.
+
Schedule
+
Contains
+
Schedule entry
+

+
Schedule entry
+
References
+
Playlist
+

+
Scheduler daemon
+
Executes
+
Schedule
+
The Scheduler daemon plays the scheduled +playlists.
+
Scheduler daemon
+
Logs into
+
Play log
+
The Scheduler daemon logs all the played audio +clips into the Play log for proof of broadcast purposes.
+
Play log
+
Contains
+
Play log entry
+

+
Play log
+
Generated
+
Play report
+
The play log generates reports based on Play log +entries.
+
Play log entry
+
References
+
Audio clip
+

+
Broadcast auditor
+
Browses entries from
+
Play log
+

+
Broadcast auditor
+
Requests
+
Play report
+

+
Playlist editor
+
Is authenticated by
+
Authentication
+

+
Broadcast auditor
+
Is authenticated by
+
Authentication
+

+
Administrator
+
Manages
+
Scheduler daemon
+

+

+

+

+

+
+
+

System behavior

+The behavior of the system as a whole as experienced from the outside +is discussed in this section.
+

System sequence diagrams

+System diagrams are presented for each use case below.
+

UC-1 Upload playlists

+ +
+

UC-2 Manage schedule

+ +
+

UC-3 Manage playlists

+ +
+

UC-4 Retrieve remote files
+

+ +
+

UC-5 Review play log

+ +

UC-6 Create playlist

+ +

UC-7 Edit playlist
+ +

+

UC-8 Start/stop scheduler

+ +
+
+

System objects

+The following figures shows the system objects and their functions, as +derived from the system sequence diagrams.
+ +

Contracts

+For all operations exposed in the system sequence diagrams, the +following contracts are defined.
+

Contract for Scheduler : authenticate

+See Authentication : authenticate
+
+

Contract for Scheduler : uploadPlaylist

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Name
+
uploadPlaylist
+(playlist : Playlist,
+playtime: Schedule)
+: void
+
Responsibilities
+
Upload a playlist and +put it into the schedule.
+
Type
+
system
+
Cross-reference
+
F1.1, UC-1
+
Notes
+

+
Exceptions
+
If the uploaded playlist +is not valid, indicate as an error
+If the proposed schedule conflicts with existing schedules, indicate as +an error
+
Output
+
none
+
Pre-conditions
+
none
Post-conditions
+
condition
+
type
+

+
A new Playlist is created, storing the uploaded +playlist
+
instance creation

+
Playlist is entered into the Playlist store
+
association formed
+

+
A new Schedule is created, according to the +supplied schedule
+
instance creation
+

+
Schedule is associated with the Playlist
+
association formed
+

+

+

+
+
+

Contract for Scheduler : displaySchedule

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Name
+
displaySchedule
+(from : TimeStamp,
+to : TimeStamp)
+: Schedule
+
Responsibilities
+
Display Schedule entries +for a time period.
+
Type
+
system
+
Cross-reference
+
F1.4, UC-2
+
Notes
+

+
Exceptions
+
none
+
Output
+
The Schedule entries for +the specified time period.
+
Pre-conditions
+
none
Post-conditions
+
none
+

+

+

+

+
+
+

Contract for Scheduler : displayPlaylist

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Name
+
displayPlaylist
+(playlistId : UniqueId)
+: Playlist
+
Responsibilities
+
Display a specific +playlist
+
Type
+
system
+
Cross-reference
+
F1.4, UC-3
+
Notes
+

+
Exceptions
+
If no playlist exists +for the specified playlistId, indicate as an error.
+
Output
+
The requested playlist.
+
Pre-conditions
+
none
Post-conditions
+
none
+

+

+

+

+
+
+

Contract for Scheduler : deletePlaylist

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Name
+
displayPlaylist
+(playlist : Playlist)
+: void
+
Responsibilities
+
Delete a specific +playlist
+
Type
+
system
+
Cross-reference
+
F1.11, UC-3
+
Notes
+

+
Exceptions
+
If no playlist exists +for the specified playlistId, indicate as an error.
+If the playlist is referenced by any Schedule entry, indicate as an +error.
+
Output
+
none
+
Pre-conditions
+
none
Post-conditions
+
condition
+
type
+

+
The playlist is removed from the Playlist store.
+
association broken
+

+
References by the playlist to Audio clips removed
+
association broken
+

+
The playlist is deleted
+
instance deletion
+

+

+

+
+
+

Contract for Scheduler : removeFromSchedule
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Name
+
removeFromSchedule
+(scheduleEntry : Schedule entry,
+playlist : Playlist)
+: void
+
Responsibilities
+
Remove a specific +playlist from a schedule entry
+
Type
+
system
+
Cross-reference
+
F1.9, UC-2
+
Notes
+

+
Exceptions
+
If the specified +scheduleEntry does not exist, indicate as an error.
+If the specified playlist does not exist, indicate as an error.
+
Output
+
none
+
Pre-conditions
+
none
Post-conditions
+
condition
+
type
+

+
Reference to the playlist by the scheduleEntry +is removed.
+
association broken
+

+

+

+
+
+

Contract for Scheduler : reschedule
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Name
+
reschedule
+(scheduleEntry : Schedule entry,
+playlist : Playlist,
+playtime : TimeStamp)
+: void
+
Responsibilities
+
Change when a certain +playlist is scheduled to play.
+
Type
+
system
+
Cross-reference
+
F1.10, UC-2
+
Notes
+

+
Exceptions
+
If the specified +scheduleEntry does not exist, indicate as an error.
+If the specified playlist does not exist, indicate as an error.
+If the new playtime conflicts with other schedule entries, indicate as +an error.
+
Output
+
none
+
Pre-conditions
+
none
Post-conditions
+
condition
+
type
+

+
The time attribute of scheduleEntry is updated +to the supplied playtime.
+
attribute modification
+

+

+

+
+
+

Contract for Scheduler : displayPlaylists

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Name
+
displayPlaylists
+()
+: Playlist
+
Responsibilities
+
Display Playlists +contained in the Playlist store
+
Type
+
system
+
Cross-reference
+
F1.4, UC-3
+
Notes
+

+
Exceptions
+
none
+
Output
+
The playlists contained +in the Playlist store.
+
Pre-conditions
+
none
Post-conditions
+
none
+

+

+

+

+
+
+

Contract for Scheduler : displayPlayLog

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Name
+
displayPlaylists
+()
+: Play log
+
Responsibilities
+
Display Play log entries +contained in the Play log
+
Type
+
system
+
Cross-reference
+
F1.4, UC-5
+
Notes
+

+
Exceptions
+
none
+
Output
+
The play log entries +contained in the Play log.
+
Pre-conditions
+
none
Post-conditions
+
none
+

+

+

+

+
+
+

Contract for Scheduler : generatePlayReport
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Name
+
generatePlayReport
+(from : TimeStamp,
+to : TimeStamp)
+: Play report
+
Responsibilities
+
Present a report on what +Audio clips have been played to the Broadcast auditor.
+
Type
+
system
+
Cross-reference
+
F1.4, UC-5
+
Notes
+

+
Exceptions
+
none
+
Output
+
A report on the played +Audio clips played in the specified time period.
+
Pre-conditions
+
none
Post-conditions
+
none
+

+

+

+

+
+
+

Contract for Scheduler : createPlaylist
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Name
+
createPlaylist
+()
+: Playlist
+
Responsibilities
+
Create a new playlist
+
Type
+
system
+
Cross-reference
+
F1.12, UC-6
+
Notes
+
A new playlist is +created, and is immediately locked for editing.
+
Exceptions
+
none
+
Output
+
none
+
Pre-conditions
+
none
Post-conditions
+
condition
+
type
+

+
A new Playlist is created
+
instance creation
+

+
The lockedForEditing attribute is set to true +for the playlist
+
attribute modification
+

+
The playlist is added to the Playlist store
+
association formed
+

+

+

+
+
+

Contract for Scheduler : openPlaylistForEditing
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Name
+
openPlaylistForEditing
+(playlist : Playlist)
+: void
+
Responsibilities
+
Open a playlist for +editing
+
Type
+
system
+
Cross-reference
+
F1.13, UC-7
+
Notes
+
A playlist is opened for +editing. The playlist may not be played when being edited. Also, active +(currently executing) playlists may not be opened for editing. This is +in effect a lock, which is released by saving the playlist.
+
Exceptions
+
if the playlist is +currently being executed, indicate as an error.
+
Output
+
none
+
Pre-conditions
+
none
Post-conditions
+
condition
+
type
+

+
The current version of the playlist is stored, +in case the user wants to revert to the last saved version (see +revertEditedPlaylist)
+
instance creation
+

+
The lockedForEditing attribute is set to true +for the playlist
+
attribute modification
+

+

+

+
+
+

Contract for Scheduler : addAudioClipToPlaylist
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Name
+
addAutioClipToPlaylist
+(playlist : Playlist,
+audioClip : AudioClip,
+relativeOffset : Time)
+: void
+
Responsibilities
+
Add an Audio clip to a +Playlist
+
Type
+
system
+
Cross-reference
+
F1.13, UC-7
+
Notes
+
The Audio clip is added +to the playlist with the specified relativeOffset from the beginning of +the Playlist.
+
Exceptions
+
none
+
Output
+
none
+
Pre-conditions
+
the Playlist is +currently opened for editing
+
Post-conditions
+
condition
+
type
+

+
The new PlaylistElement is created associating +the playlist with the audio clip, with the specified relativeOffset
+
association formed, instnace creation
+

+

+

+
+
+

Contract for Scheduler : displayAudioClips
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Name
+
displayAudioClips
+()
+: AudioClip
+
Responsibilities
+
Display the audio clips +known to the Scheduler
+
Type
+
system
+
Cross-reference
+
F1.13, UC-7
+
Notes
+
none
+
Exceptions
+
none
+
Output
+
The Audio clips kown to +the Scheduler
+
Pre-conditions
+
none
+
Post-conditions
+
none
+

+

+

+

+
+
+

Contract for Scheduler : displayAudioClip
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Name
+
displayAudioClip
+(audioClipId : UniqueId)
+: AudioClip
+
Responsibilities
+
Display the audio clip +specified by the audioClipId
+
Type
+
system
+
Cross-reference
+
F1.13, UC-7
+
Notes
+
none
+
Exceptions
+
if no audio clip by the +specified id exists, indicate as an error
+
Output
+
The Audio clip specified +by the audioClipId
+
Pre-conditions
+
none
+
Post-conditions
+
none
+

+

+

+

+
+
+

Contract for Scheduler : removeAudioClipFromPlaylist
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Name
+
removeAutioClipFromPlaylist
+(playlist : Playlist,
+audioClip : AudioClip)
+: void
+
Responsibilities
+
Remove an Audio clip +from a Playlist
+
Type
+
system
+
Cross-reference
+
F1.13, UC-7
+
Notes
+
The Audio clip is +removed from the Playlist.
+
Exceptions
+
If the Audio clip is not +in the playlist, indicate as an error.
+
Output
+
none
+
Pre-conditions
+
the Playlist is +currently opened for editing
+
Post-conditions
+
condition
+
type
+

+
The PlaylistElement associating the AudioClip +with the Playlist is removed, with the related FadeInfo instances
+
instance deletion, association broken
+

+

+

+
+
+

Contract for Scheduler : updateFadeInFadeOut
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Name
+
updateFadeInFadeOut
+(audioClip : AudioClip,
+playlist : Playlist)
+: void
+
Responsibilities
+
Update the fade-in and +fade-out parameters for an audio clip playing in a playlist.
+
Type
+
system
+
Cross-reference
+
F1.13, UC-7
+
Notes
+
none
+
Exceptions
+
If the Audio clip is not +in the playlist, indicate as an error.
+
Output
+
none
+
Pre-conditions
+
the Playlist is +currently opened for editing
+
Post-conditions
+
condition
+
type
+

+
The fade-in and fade-out parameters for the +audio clip in the playlist are updated
+
attribute modification
+

+

+

+
+
+

Contract for Scheduler : validatePlaylist
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Name
+
validatePlaylist
+(playlist : Playlist)
+: boolean
+
Responsibilities
+
Validate a playlist for +being complete.
+
Type
+
system
+
Cross-reference
+
F1.13, UC-7
+
Notes
+
The playlist is checked +for being complete (not containing silence) and other sanity criteria.
+
Exceptions
+
none
+
Output
+
none
+
Pre-conditions
+
none
+
Post-conditions
+
none
+

+

+

+

+
+
+

Contract for Scheduler : savePlaylist
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Name
+
savePlaylist
+(playlist : Playlist)
+: void
+
Responsibilities
+
The playlist is saved.
+
Type
+
system
+
Cross-reference
+
F1.13, UC-7
+
Notes
+
none
+
Exceptions
+
If the playlist is not +valid, indicate as an error.
+
Output
+
none
+
Pre-conditions
+
the Playlist is +currently opened for editing
+
Post-conditions
+
condition
+
type
+

+
The lockedForEditing attriubute is set to false +for the playlist
+
attribute modification
+

+
The old version of the Playlist that could have +been used for reverting is deleted (see revertEditedPlaylist)
+
instance deletion
+

+

+

+
+
+

Contract for Scheduler : revertEditedPlaylist
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Name
+
revertEditedPlaylist
+(playlist : Playlist)
+: void
+
Responsibilities
+
Changes are discarded +for a Playlist that is being edited.
+
Type
+
system
+
Cross-reference
+
F1.13, UC-7
+
Notes
+
The contents of the +playlist are reverted to the state prior to when editing began on it.
+
Exceptions
+
none
+
Output
+
none
+
Pre-conditions
+
the Playlist is +currently opened for editing
+
Post-conditions
+
condition
+
type
+

+
The contents of the Playlist are reverted to the +last saved version. This includes deleting all created PlaylistElement +and FadeInfo instances.
+
attribute modification, instance deletion
+

+
The lockedForEditing attriubute is set to false +for the playlist
+
attribute modification
+

+

+

+
+
+

Contract for Scheduler : start
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Name
+
start
+()
+: void
+
Responsibilities
+
Starts the scheduler +daemon
+
Type
+
system
+
Cross-reference
+
F1.14, UC-8
+
Notes
+
A System V init-style +daemon starting entry point
+
Exceptions
+
none
+
Output
+
none
+
Pre-conditions
+
The scheduler daemon is +currently not running
+
Post-conditions
+
condition
+
type
+

+
The scheduler daemon object is created
+
instance creation
+

+
All the necessary structures are created for the +deamon to run
+
instance creation
+

+

+

+
+
+

Contract for Scheduler : isRunning
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Name
+
isRunning
+()
+: boolean
+
Responsibilities
+
Tells if the scheduler +daemon is running
+
Type
+
system
+
Cross-reference
+
UC-8
+
Notes
+
A System V init-style +daemon status entry point
+
Exceptions
+
none
+
Output
+
true of the daemon is +running, false otherwise
+
Pre-conditions
+
none
+
Post-conditions
+
none
+

+

+

+

+
+
+

Contract for Scheduler : stop
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Name
+
stop
+()
+: void
+
Responsibilities
+
Stops the scheduler +daemon
+
Type
+
system
+
Cross-reference
+
F1.15, UC-8
+
Notes
+
A System V init-style +daemon stopping entry point
+
Exceptions
+
none
+
Output
+
none
+
Pre-conditions
+
The scheduler daemon is +currently running
+
Post-conditions
+
condition
+
type
+

+
The scheduler daemon object is deleted
+
instance deletion
+

+

+

+
+
+

Contract for Media archive : authenticate

+TODO: move to Media archive spec
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Name
+
authenticate
+(authenticationInfo : AuthenticationInfo)
+: boolean
+
Responsibilities
+
Check if the provided +authentication info is recognized.
+
Type
+
interface
+
Cross-reference
+
UC-4
+
Notes
+

+
Exceptions
+
none
Output
+
true if the provided +authentication is recognized, false otherwise
+
Pre-conditions
+
none
Post-conditions
+
none
+

+

+

+

+
+
+

Contract for Media archive : retrieveAudioClip

+TODO: move to Media archive spec
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Name
+
retrieveAudioClip
+(clipId : UniqueId)
+: AudioClip
+
Responsibilities
+
Retrieve an AudioClip +specified by the supplied audio clip id.
+
Type
+
interface
+
Cross-reference
+
F1.2, UC-4
+
Notes
+

+
Exceptions
+
if no audio clip exists +with the supplied id, indicate as an error
+
Output
+
the requested audio clip
+
Pre-conditions
+
none
Post-conditions
+
condition
+
type
+

+
A new Audio clip is created and filled with the +contents of the retrieved audio clip
+
instance creation

+
Audio clip is entered into Local storage
+
association formed
+

+

+

+
+
+

Contract for Local storage : authenticate

+TODO: move to Local storage spec
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Name
+
authenticate
+(authenticationInfo : AuthenticationInfo)
+: boolean
+
Responsibilities
+
Check if the provided +authentication info is recognized.
+
Type
+
interface
+
Cross-reference
+
UC-4
+
Notes
+

+
Exceptions
+
none
Output
+
true if the provided +authentication is recognized, false otherwise
+
Pre-conditions
+
none
Post-conditions
+
none
+

+

+

+

+
+
+

Contract for Local storage : existsAudioClip

+TODO: move to Local storage spec
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Name
+
existsAudioClip
+(audioClipId : UniqueId)
+: boolean
+
Responsibilities
+
Tell if an audio clip by +the provided unique id is stored in the Local storage
+
Type
+
interface
+
Cross-reference
+
UC-4
+
Notes
+

+
Exceptions
+
none
Output
+
true if an audio clip +with the provided id exists, false otherwise
+
Pre-conditions
+
none
Post-conditions
+
none
+

+

+

+

+
+
+

Contract for Local storage : storeAudioClip

+TODO: move to Local storage spec
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Name
+
storeAudioClip
+(audioClip : AudioClip)
+: void
+
Responsibilities
+
Store an audio clip.
+
Type
+
interface
+
Cross-reference
+
UC-4
+
Notes
+

+
Exceptions
+
none
Output
+
none
+
Pre-conditions
+
none
Post-conditions
+
The supplied audio clip is stored in the storage.
+

+

+

+

+
+
+

Glossary

+playlist
+The playlist is a metafile, containing references to audio clips that +should be played, and details on how they should be played.
+
+ + diff --git a/livesupport/doc/model/SoftwareArchitecture/PlaylistEditorArchitecture.svg b/livesupport/doc/model/SoftwareArchitecture/PlaylistEditorArchitecture.svg new file mode 100644 index 000000000..dc612e579 --- /dev/null +++ b/livesupport/doc/model/SoftwareArchitecture/PlaylistEditorArchitecture.svg @@ -0,0 +1,144 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OSS + + + + + + + ALSA + + + + + + + Helix Client Library + + + + + + + Playlist editor + + + + + + + GTK+ + + + + + + + + + + + Local storage + + + + + + + + + + + + + Media Archive + + + + + + + + + + + + Scheduler + + + + + + diff --git a/livesupport/doc/model/SoftwareArchitecture/SchedulerArchitecture.svg b/livesupport/doc/model/SoftwareArchitecture/SchedulerArchitecture.svg new file mode 100644 index 000000000..349806bd9 --- /dev/null +++ b/livesupport/doc/model/SoftwareArchitecture/SchedulerArchitecture.svg @@ -0,0 +1,137 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Local storage + + + + + + + Helix Client Library + + + + + + + OSS + + + + + + + ALSA + + + SMIL, MP3, Ogg Vorbis + + + + + + + Media Archive + + + + + + + Scheduler + + + + + + + + + + + + + + + + + + Playlist editor + + + + + + diff --git a/livesupport/doc/model/SoftwareArchitecture/SoftwareArchitecture.zuml b/livesupport/doc/model/SoftwareArchitecture/SoftwareArchitecture.zuml new file mode 100644 index 000000000..bccf75488 Binary files /dev/null and b/livesupport/doc/model/SoftwareArchitecture/SoftwareArchitecture.zuml differ diff --git a/livesupport/doc/model/SoftwareArchitecture/index.html b/livesupport/doc/model/SoftwareArchitecture/index.html new file mode 100644 index 000000000..92d3c3398 --- /dev/null +++ b/livesupport/doc/model/SoftwareArchitecture/index.html @@ -0,0 +1,104 @@ + + + + + LiveSupport Software Architecture + + + +

Preface

+This document is part of the LiveSupport +project, Copyright © 2004 Media +Development Loan Fund, under the GNU GPL.
+ +

Scope

+This document describes the software architecture of LiveSupport.
+
+This document contains embedded SVG figures, thus an SVG +capable browser is needed to view it, or an SVG plugin like Adobe's SVG Viewer.
+

Software Architecture

+The software architecture is contained +in Poseidon +2 format.
+

Scheduler

+The software architecture for the Scheduler component:
+ +
+

Playlist editor

+The software architecture for the Playlist Editor:
+ +
+

Components

+A brief summary of the software components appearing in the figures +above:
+

Scheduler

+The LiveSupport Scheduler, responsible for executing playlists.
+

Playlist editor

+The LiveSupport Playlist editor, a graphical user interface component.
+

Media Archive

+The LiveSupport Media Archive component.
+

Local storage

+The LiveSupport Local Storage component.
+

Helix Client Library

+A media library developed by the Helix +Community and Real Networks. +This library provides support for the SMIL playlist format and Ogg Vorbis and MP3 audio +formats.
+

OSS

+Open Sound System, a +cross-platform low level audio API for accessing analog audio devices. +This is the de-facto standard audio API for Linux until kernel 2.4.
+

ALSA

+Advanced Linux Sound Architecture, +a more advanced low level audio API. This is the de-facto standard +audio API for Linux since kernel 2.6.
+

GTK+

+The GIMP Toolkit, a cross-platform +graphical user interface API.
+

Discussion
+

+Among the software components listed above, OSS, ALSA and GTK+ are +industry standard, and are straightforward to use. But the Helix Client +Library is a special library, the open sourced version of Real +Network's streaming libraries.
+
+Tests were made to make sure Helix indeed compiles and runs fine on the +target platform. All libraries where successfully compiled and SMIL +playlists were successfully played. For this, the splay command line +sample program was used, which is part of the Helix codebase. For +compiling helix client libraries, refer to the Getting +Started with the Helix Sources pages. The settings used for +successful compilation:
+
+[0] Set BIF branch (hxclient_1_3_0_neptunex)
+[1] Set Target(s) (splay)
+[2] Set Profile (helix-client-all-defines)
+[3] run: build
+[4] Toggle make depend & makefiles (-e -n)
+[5] Toggle release (-trelease)
+[6] Toggle 'make clean'  (-c)
+[7] Toggle clobber (Dangerous!) (-C)
+[8] Toggle halt-on-error (-p green)
+[9] Toggle verbose mode (-v)
+[10] Toggle static build (-tnodll)
+[11] Checkout source for selected target now
+[12] Set Tag/Branch/Timestamp
+[13] Help Page (full help in build/doc/index.html)
+[14] run history: build
+[Q] Quit

+
+ + diff --git a/livesupport/doc/model/index.html b/livesupport/doc/model/index.html new file mode 100644 index 000000000..69c99b662 --- /dev/null +++ b/livesupport/doc/model/index.html @@ -0,0 +1,200 @@ + + + + + LiveSupport Architecture + + + +

Preface

+This document is part of the LiveSupport +project, Copyright © 2004 Media +Development Loan Fund, under the GNU GPL.
+ +

Scope

+This document describes the architecture of LiveSupport.
+
+This document contains embedded SVG figures, thus an SVG +capable browser is needed to view it, or an SVG plugin like Adobe's SVG Viewer.
+

Architecture

+
+ +
+UML diagrams in Poseidon +2 format are available in a Poseidon +project file.
+
+The Software architecture is discribed on a different page.
+

Scheduler

+The scheduler is responsible to +execute playlists.
+

Local storage

+The local storage holds locally +available audio clips
+

Media archive

+The media archive is a +centralized media archive holding audio clips +and storing metadata.
+

Authentication

+The authentication component +provides basic authentication functionality.
+

Playlist editor

+The Playlist editor component +is the user interface tool to create playlists.
+

Feature - component mapping

+This section contains a mapping from the features listed in section 3.3 +the original LiveSupport proposal to the components that fulfill these +features.
+

LiveSupport Feature List

+For convenience the features listed in section 3.3 of the LiveSupport +proposal are quoted below, with their original section numbers.
+

3.3.1 Intuitive User Interface

+

LiveSupport will feature an +easily-localizable and intuitive user interface that draws on the +applicants’ extensive previous project experience.

+

3.3.2 Storing Metadata

+

Most audio formats allow the storage of +some information inside the media file itself. However, this feature +was developed primarily to handle music tracks, storing information +on artist, title, record, genre, track number and so on. It is +impossible to store essential information like the language of an +audio file – essential for spoken word productions, such as +educational or news material.

+

LiveSupport will use existing open +standards, such as RSS feed standards in XML format, to store all +information needed to describe a file sufficiently. Additionally, +this metadata information will fully support the Unicode format, +making the database of metadata available to all character sets and +fully searchable.

+

3.3.3 Automation and Scheduling

+

LiveSupport will provide a scheduler, +allowing stations to fill parts of the radio schedule with automated +broadcasts. Throughout automated broadcasting times, the station will +still be able to deliver advertisement, generating income while +minimizing the running costs. Longer times of daily broadcasts via +automation also help the station to make its frequency known in the +community.

+

3.3.4 Playlist Management

+

Small radio stations in the developing +world mainly use playlists generated by audio player software such as +MusicMatch, Windows MediaPlayer or WinAMP. Such simple playlists +provide no more information than a list of file names, and are +inaccessible for full text search. As mentioned above, LiveSupport +will use the potential of XML metadata in Unicode to manage and +archive playlists.

+

3.3.5 Proof of Broadcast

+

Proof of broadcast is essential to +establish serious business relationships with advertisers. +LiveSupport will provide accurate and detailed log files stating the +precise time each item was broadcast over the system. In a +radio-network context, the proof of broadcast tool developed by MDLF +in conjunction with Radio 68H in Indonesia will be used to aggregate +and analyze logs created by individual LiveSupport installations.

+

3.3.6 Mixing Local Audio Sources

+

A producer running LiveSupport in a +studio will be able to mix audio files (e.g. reports, music, +jingles), phone calls and the microphone into a live broadcast.

+

3.3.7 Mixing Local and Remote Sources

+

If connected to the Internet, and given +enough available bandwidth, LiveSupport will be able to play local +files (stored on the system’s hard disk), remote files (stored +anywhere on the Internet) or include audio streams from the Internet +as part of the local transmission – all of which could also become +part of a playlist.

+

3.3.8 Remote Control of Transmitter Locations

+

A radio reporter/producer will be able +to remotely access all of LiveSupport’s scheduling features over +the Internet using a standard web browser. She will be able to upload +audio programs as well as create playlists and schedule transmission.

+

Feature - component mapping

+The following table associates features with components.
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
feature
+
component
+
3.3.1
+
Intuitive User Interface
+
Playlist editor
+
3.3.2
+
Storing Metadata
+
Media archive
+
3.3.3
+
Automation and Scheduling
+
Scheduler
+
3.3.4
+
Playlist Management
+
Scheduler, Playlist editor
+
3.3.5
+
Proof of Broadcast
+
Scheduler
+
3.3.6
+
Mixing Local Audio Sources
+

+
3.3.7
+
Mixing Local and Remote Sources
+
Local storage, Media archive, Scheduler, +Playlist editor
+
3.3.8
+
Remote Control of Transmitter Locations
+
Scheduler, Playlist editor
+
+
+
+ +