4212 lines
105 KiB
HTML
4212 lines
105 KiB
HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
|
<html>
|
|
<head>
|
|
<meta content="text/html; charset=ISO-8859-2"
|
|
http-equiv="content-type">
|
|
<title>LiveSupport Scheduler specifications</title>
|
|
<meta content="Ákos Maróy" name="author">
|
|
</head>
|
|
<body>
|
|
<h1>Preface</h1>
|
|
This document is part of the <a href="http://livesupport.campware.org/">LiveSupport</a>
|
|
project, Copyright © 2004 <a href="http://www.mdlf.org/">Media
|
|
Development Loan Fund</a>, under the GNU <a
|
|
href="http://www.gnu.org/licenses/gpl.html">GPL</a>.<br>
|
|
<ul>
|
|
<li>Author: $Author: fgerlits $</li>
|
|
<li>Version: $Revision: 1.3 $</li>
|
|
<li>Location: $Source:
|
|
/home/cvs/livesupport/doc/model/Scheduler/index.html,v $</li>
|
|
</ul>
|
|
<h1>Scope</h1>
|
|
This document contains the specification of the LiveSupport Scheduler
|
|
daemon.<br>
|
|
<br>
|
|
This document contains embedded <a
|
|
href="http://www.w3.org/Graphics/SVG/">SVG</a> figures, thus an SVG
|
|
capable browser is needed to view it, or an SVG plugin like <a
|
|
href="http://www.adobe.com/svg/">Adobe's SVG Viewer</a>.<br>
|
|
<h1>Requirements</h1>
|
|
<h2>Overview<br>
|
|
</h2>
|
|
The purpose of the LiveSupport Scheduler daemon is to execute
|
|
playlists.<br>
|
|
<h2>Goals<br>
|
|
</h2>
|
|
The scheduler daemon is a remotely accessible service accepting
|
|
playlists on a local audio interface. Specific goals include:<br>
|
|
<ul>
|
|
<li>remote manageability</li>
|
|
<li>handling remote audio clips referenced by playlists</li>
|
|
<li>low-latency playback</li>
|
|
</ul>
|
|
<h2>System functions</h2>
|
|
The main system functions are described below. There are three
|
|
categories for these functions:<br>
|
|
<table border="0" cellpadding="2" cellspacing="2" width="100%">
|
|
<tbody>
|
|
<tr>
|
|
<th valign="top">function category<br>
|
|
</th>
|
|
<th valign="top">meaning<br>
|
|
</th>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top">evident<br>
|
|
</td>
|
|
<td valign="top">Should perform, and the user should be cognizant
|
|
that it is performed<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top">hidden<br>
|
|
</td>
|
|
<td valign="top">Should perform, but not visible to the users.<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top">frill<br>
|
|
</td>
|
|
<td valign="top">Optional<br>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<br>
|
|
<br>
|
|
<table border="0" cellpadding="2" cellspacing="2" width="100%">
|
|
<tbody>
|
|
<tr>
|
|
<th valign="top">ref#<br>
|
|
</th>
|
|
<th valign="top">function<br>
|
|
</th>
|
|
<th valign="top">category<br>
|
|
</th>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top">F1.1<br>
|
|
</td>
|
|
<td valign="top">Accept uploaded playlists<br>
|
|
</td>
|
|
<td valign="top">evident<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top">F1.2<br>
|
|
</td>
|
|
<td valign="top">Retrieve remote files referenced by playlists<br>
|
|
</td>
|
|
<td valign="top">hidden<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top">F1.3<br>
|
|
</td>
|
|
<td valign="top">Access local files<br>
|
|
</td>
|
|
<td valign="top">hidden<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top">F1.4<br>
|
|
</td>
|
|
<td valign="top">Provide status information<br>
|
|
</td>
|
|
<td valign="top">evident<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top">F1.5<br>
|
|
</td>
|
|
<td valign="top">Log playlist execution for proof of broadcast
|
|
reasons<br>
|
|
</td>
|
|
<td valign="top">evident<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top">F1.6<br>
|
|
</td>
|
|
<td valign="top">Purge local file storage of unused audio clips<br>
|
|
</td>
|
|
<td valign="top">hidden<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top">F1.7<br>
|
|
</td>
|
|
<td valign="top">Execute playlists<br>
|
|
</td>
|
|
<td valign="top">evident<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top">F1.8<br>
|
|
</td>
|
|
<td valign="top">Play live streams as part of the playlist<br>
|
|
</td>
|
|
<td valign="top">hidden<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top">F1.9<br>
|
|
</td>
|
|
<td valign="top">Remove playists from the schedule<br>
|
|
</td>
|
|
<td valign="top">evident<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top">F1.10<br>
|
|
</td>
|
|
<td valign="top">Re-schedule playlsits<br>
|
|
</td>
|
|
<td valign="top">evident<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top">F1.11<br>
|
|
</td>
|
|
<td valign="top">Delete playlists<br>
|
|
</td>
|
|
<td valign="top">evident<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top">F1.12<br>
|
|
</td>
|
|
<td valign="top">Create playlists<br>
|
|
</td>
|
|
<td valign="top">evident<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top">F1.13<br>
|
|
</td>
|
|
<td valign="top">Edit playlists<br>
|
|
</td>
|
|
<td valign="top">evident<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top">F1.14<br>
|
|
</td>
|
|
<td valign="top">Start the scheduler daemon<br>
|
|
</td>
|
|
<td valign="top">evident<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top">F1.15<br>
|
|
</td>
|
|
<td valign="top">Stop the scheduler daemon<br>
|
|
</td>
|
|
<td valign="top">evident<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<br>
|
|
<h2>System attributes</h2>
|
|
Generic attributes<br>
|
|
<br>
|
|
<table border="0" cellpadding="2" cellspacing="2" width="100%">
|
|
<tbody>
|
|
<tr>
|
|
<th valign="top">ref#<br>
|
|
</th>
|
|
<th valign="top">attribute<br>
|
|
</th>
|
|
<th valign="top">details and constraints<br>
|
|
</th>
|
|
<th valign="top">category<br>
|
|
</th>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top">A1.1<br>
|
|
</td>
|
|
<td valign="top">operating system platform<br>
|
|
</td>
|
|
<td valign="top">Linux<br>
|
|
</td>
|
|
<td valign="top">must<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top">A1.2<br>
|
|
</td>
|
|
<td valign="top">supported audio interfaces<br>
|
|
</td>
|
|
<td valign="top">ALSA (maybe also OSS?)<br>
|
|
</td>
|
|
<td valign="top">must<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top">A1.3<br>
|
|
</td>
|
|
<td valign="top">supported playlist format<br>
|
|
</td>
|
|
<td valign="top">SMIL 2.0. only partial support is required,
|
|
which focuses only on audio aspects of SMIL.<br>
|
|
</td>
|
|
<td valign="top">must<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top">A1.4<br>
|
|
</td>
|
|
<td valign="top">supported audio clip formats<br>
|
|
</td>
|
|
<td valign="top">Ogg Vorbis, mp3, wav<br>
|
|
</td>
|
|
<td valign="top">must<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<br>
|
|
Attributes related to system functions<br>
|
|
<br>
|
|
<table border="0" cellpadding="2" cellspacing="2" width="100%">
|
|
<tbody>
|
|
<tr>
|
|
<th valign="top">ref#<br>
|
|
</th>
|
|
<th valign="top">function<br>
|
|
</th>
|
|
<th valign="top">ref#<br>
|
|
</th>
|
|
<th valign="top">attribute<br>
|
|
</th>
|
|
<th valign="top">details and constraints<br>
|
|
</th>
|
|
<th valign="top">category<br>
|
|
</th>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top">F1.7<br>
|
|
</td>
|
|
<td valign="top">Execute playlists<br>
|
|
</td>
|
|
<td valign="top">A1.5<br>
|
|
</td>
|
|
<td valign="top">low latency<br>
|
|
</td>
|
|
<td valign="top">when executing playlists, very low latency
|
|
should be achieved<br>
|
|
</td>
|
|
<td valign="top">must<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top">A1.6<br>
|
|
</td>
|
|
<td valign="top">handle time skew<br>
|
|
</td>
|
|
<td valign="top">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.<br>
|
|
</td>
|
|
<td valign="top">must<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top">F1.8<br>
|
|
</td>
|
|
<td valign="top">Play live streams as part of the playlist </td>
|
|
<td valign="top">A1.7<br>
|
|
</td>
|
|
<td valign="top">supported audio stream formats<br>
|
|
</td>
|
|
<td valign="top">Ogg Vorbis via HTTP, mp3 via HTTP<br>
|
|
</td>
|
|
<td valign="top">must<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top">F1.14<br>
|
|
F1.15<br>
|
|
</td>
|
|
<td valign="top">Start / stop the scheduler daemon<br>
|
|
</td>
|
|
<td valign="top">A1.8<br>
|
|
</td>
|
|
<td valign="top">provide System V init style services<br>
|
|
</td>
|
|
<td valign="top">Provide a System V init interface to starting
|
|
and stopping the scheduler daemon<br>
|
|
</td>
|
|
<td valign="top">must<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<br>
|
|
<h2>Essential use cases</h2>
|
|
This section lists generic (essential) uses cases, that do not contain
|
|
architecture-specific considerations.<br>
|
|
<br>
|
|
<object type="image/svg+xml" name="essential use cases"
|
|
data="EssentialUseCases.svg" height="800" width="700"></object>
|
|
<h3>UC-1 Upload playlist</h3>
|
|
<table border="0" cellpadding="2" cellspacing="2" width="100%">
|
|
<tbody>
|
|
<tr>
|
|
<td valign="top"><b>ref#</b> </td>
|
|
<td valign="top">UC-1 </td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>use case</b> </td>
|
|
<td valign="top">Upload playlist </td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>type</b> </td>
|
|
<td valign="top">primary, essential </td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>actors</b> </td>
|
|
<td valign="top">Playlist editor </td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>purpose</b> </td>
|
|
<td valign="top">Upload a playlist </td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>overview</b> </td>
|
|
<td valign="top">The Playlist editor uploads a new playlist. </td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>references</b> </td>
|
|
<td valign="top">F1.1 </td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<h4>Typical course of events</h4>
|
|
<table border="0" cellpadding="2" cellspacing="2" width="100%">
|
|
<tbody>
|
|
<tr>
|
|
<th colspan="2" valign="top">actor action <br>
|
|
</th>
|
|
<th colspan="2" valign="top">system response <br>
|
|
</th>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>1.</b> </td>
|
|
<td valign="top">Playlist editor connects to the scheduler daemon
|
|
with the intent of uploading a new playlist. <br>
|
|
</td>
|
|
<td valign="top"> <br>
|
|
</td>
|
|
<td valign="top"> <br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>2.</b> </td>
|
|
<td valign="top">The Playlist editor provides authentication
|
|
information </td>
|
|
<td valign="top"><b>3.</b> </td>
|
|
<td valign="top">The system authenticates the Playlist editor and
|
|
grants access. </td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>4.</b> </td>
|
|
<td valign="top">The Playlist editor presents the new playlist
|
|
and the intended schedule for the playlist.<br>
|
|
</td>
|
|
<td valign="top"><b>5.</b> </td>
|
|
<td valign="top">The system validates the new playlist, and sees
|
|
that it does not conflict with existing schedule. </td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"> <br>
|
|
</td>
|
|
<td valign="top"> <br>
|
|
</td>
|
|
<td valign="top"><b>6.</b> </td>
|
|
<td valign="top">The system stores the new playlist, adds it to
|
|
the schedule, and sends confirmation to the Playlist editor. </td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>7.</b> </td>
|
|
<td valign="top">The Playlist editor receives confirmation and
|
|
disconnects. </td>
|
|
<td valign="top"> <br>
|
|
</td>
|
|
<td valign="top"> <br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"> <br>
|
|
</td>
|
|
<td valign="top"> <br>
|
|
</td>
|
|
<td valign="top"> <br>
|
|
</td>
|
|
<td valign="top"> <br>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<br>
|
|
<h4>Alternate courses</h4>
|
|
<ul>
|
|
<li><b>action 3:</b> the system finds that the user can not be
|
|
authenticated. the user is notified and the use case ends.<br>
|
|
</li>
|
|
<li><b>action 5:</b> the system finds that the uploaded playlist is
|
|
invalid, or it conflicts the existing schedule. the user is
|
|
notified and the use case ends.<br>
|
|
<br>
|
|
</li>
|
|
</ul>
|
|
<h3>UC-2 Manage schedule<br>
|
|
</h3>
|
|
<table border="0" cellpadding="2" cellspacing="2" width="100%">
|
|
<tbody>
|
|
<tr>
|
|
<td valign="top"><b>ref#</b><br>
|
|
</td>
|
|
<td valign="top">UC-2 </td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>use case</b> </td>
|
|
<td valign="top">Manage schedule </td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>type</b><br>
|
|
</td>
|
|
<td valign="top">primary, essential </td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>actors</b><br>
|
|
</td>
|
|
<td valign="top">Playlist editor </td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>purpose</b><br>
|
|
</td>
|
|
<td valign="top">View the schedule and remove or re-schedule
|
|
playlists<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>overview</b><br>
|
|
</td>
|
|
<td valign="top">The Playlist editor reviews the schedule. If he
|
|
decides to, he might remove or re-schedule some of these playlists. </td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>references</b><br>
|
|
</td>
|
|
<td valign="top">F1.4, F1.9, F1.10<br>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<br>
|
|
<h4>Typical course of events<br>
|
|
</h4>
|
|
<table border="0" cellpadding="2" cellspacing="2" width="100%">
|
|
<tbody>
|
|
<tr>
|
|
<th colspan="2" valign="top">actor action <br>
|
|
</th>
|
|
<th colspan="2" valign="top">system response <br>
|
|
</th>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>1.</b> </td>
|
|
<td valign="top">Playlist editor connects to the scheduler daemon
|
|
with the intent of viewing and editing the schedule.<br>
|
|
</td>
|
|
<td valign="top"> <br>
|
|
</td>
|
|
<td valign="top"> <br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>2.</b> </td>
|
|
<td valign="top">The Playlist editor provides authentication
|
|
information </td>
|
|
<td valign="top"><b>3.</b> </td>
|
|
<td valign="top">The system authenticates the Playlist editor and
|
|
grants access. </td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top"><b>4.</b><br>
|
|
</td>
|
|
<td valign="top">The system shows the Schedule to the Playlist
|
|
editor<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>5.</b><br>
|
|
</td>
|
|
<td valign="top">The Playlist editor browses the Schedule,
|
|
selects a playlist for detailed viewing.<br>
|
|
</td>
|
|
<td valign="top"><b>6.</b><br>
|
|
</td>
|
|
<td valign="top">The system shows the details of the selected
|
|
Playlist.<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>7.</b><br>
|
|
</td>
|
|
<td valign="top">The playlist editor removes a playlist from the
|
|
schedule.<br>
|
|
</td>
|
|
<td valign="top"><b>8.</b><br>
|
|
</td>
|
|
<td valign="top">The system removes the playlist from the
|
|
schedule, than re-displays the updated schedle.<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>9.</b><br>
|
|
</td>
|
|
<td valign="top">The Playlist editor re-schedules a playlist<br>
|
|
</td>
|
|
<td valign="top"><b>10.</b><br>
|
|
</td>
|
|
<td valign="top">The system removes the selected playlist from
|
|
the schedule, and re-enters it at a new timepoint<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"> <b>11.</b><br>
|
|
</td>
|
|
<td valign="top"> The Playlist editor browses the Schedule<br>
|
|
</td>
|
|
<td valign="top"> <b>12.</b><br>
|
|
</td>
|
|
<td valign="top"> The system shows the Schedule to the playlist
|
|
editor<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>13.</b><br>
|
|
</td>
|
|
<td valign="top">The Playlist editor disconnects.<br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<br>
|
|
<h4>Alternate courses</h4>
|
|
<ul>
|
|
<li><b>action 3:</b> the system finds that the user can not be
|
|
authenticated. the user is notified and the use case ends.</li>
|
|
<li><b>action 8:</b>
|
|
the user tries to remove a non-existent playlist from the schedule. the
|
|
user is notified, and the schedule is displayed to the user.</li>
|
|
<li><b>action 10:</b>
|
|
the new playtime for the schedule conflicts with already scheduled
|
|
playlist playtimes. the user is notified, and the schedule is displayed
|
|
again<br>
|
|
</li>
|
|
</ul>
|
|
<h3>UC-3 Manage playlists<br>
|
|
</h3>
|
|
<table border="0" cellpadding="2" cellspacing="2" width="100%">
|
|
<tbody>
|
|
<tr>
|
|
<td valign="top"><b>ref#</b><br>
|
|
</td>
|
|
<td valign="top">UC-3 </td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>use case</b> </td>
|
|
<td valign="top">Manage playlists </td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>type</b><br>
|
|
</td>
|
|
<td valign="top">primary, essential </td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>actors</b><br>
|
|
</td>
|
|
<td valign="top">Playlist editor </td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>purpose</b><br>
|
|
</td>
|
|
<td valign="top">View and delete playlists </td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>overview</b><br>
|
|
</td>
|
|
<td valign="top">The Playlist editor reviews the uploaded
|
|
playlists. If he decides so, he might delete some of these playlists. </td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>references</b><br>
|
|
</td>
|
|
<td valign="top">F1.4, F1.11<br>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<br>
|
|
<h4>Typical course of events<br>
|
|
</h4>
|
|
<table border="0" cellpadding="2" cellspacing="2" width="100%">
|
|
<tbody>
|
|
<tr>
|
|
<th colspan="2" valign="top">actor action <br>
|
|
</th>
|
|
<th colspan="2" valign="top">system response <br>
|
|
</th>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>1.</b> </td>
|
|
<td valign="top">Playlist editor connects to the scheduler daemon
|
|
with the intent of viewing and deleting playlists.<br>
|
|
</td>
|
|
<td valign="top"> <br>
|
|
</td>
|
|
<td valign="top"> <br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>2.</b> </td>
|
|
<td valign="top">The Playlist editor provides authentication
|
|
information </td>
|
|
<td valign="top"><b>3.</b> </td>
|
|
<td valign="top">The system authenticates the Playlist editor and
|
|
grants access. </td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top"><b>4.</b><br>
|
|
</td>
|
|
<td valign="top">The system lists the available Playlists<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>5.</b><br>
|
|
</td>
|
|
<td valign="top">The Playlist editor browses the playlists, and
|
|
selects one for detailed viewing.<br>
|
|
</td>
|
|
<td valign="top"><b>6.</b><br>
|
|
</td>
|
|
<td valign="top">The system shows the details of the selected
|
|
Playlist.<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>7.</b><br>
|
|
</td>
|
|
<td valign="top">The playlist editor deletes a playlist.<br>
|
|
</td>
|
|
<td valign="top"><b>8.</b><br>
|
|
</td>
|
|
<td valign="top">The system deletes the playlist, than
|
|
re-displays the list of available Playlists.<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>9.</b><br>
|
|
</td>
|
|
<td valign="top">The Playlist editor disconnects.<br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<br>
|
|
<h4>Alternate courses</h4>
|
|
<ul>
|
|
<li><b>action 3:</b> the system finds that the user can not be
|
|
authenticated. the user is notified and the use case ends.</li>
|
|
<li><b>action 8:</b>
|
|
the user tries to delete a non-existent or a scheduled playlist. the
|
|
user is notified, and the list of playlists is displayed to the user.<br>
|
|
</li>
|
|
</ul>
|
|
<h3>UC-4 Retrieve remote files<br>
|
|
</h3>
|
|
<table border="0" cellpadding="2" cellspacing="2" width="100%">
|
|
<tbody>
|
|
<tr>
|
|
<td valign="top"><b>ref#</b> </td>
|
|
<td valign="top">UC-4 </td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>use case</b> </td>
|
|
<td valign="top">Retrieve remote files </td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>type</b><br>
|
|
</td>
|
|
<td valign="top">primary, essential </td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>actors</b><br>
|
|
</td>
|
|
<td valign="top">(internal actor, initiator), Media archive,
|
|
Local storage<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>purpose</b><br>
|
|
</td>
|
|
<td valign="top">Retrieve remote files referenced by active
|
|
playlists and store them in the local storage<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>overview</b><br>
|
|
</td>
|
|
<td valign="top">The
|
|
daemon contacts the remote media archive and retrieves audio clips
|
|
referenced by active playlists. The clips are stored locally for
|
|
playing. </td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>references</b><br>
|
|
</td>
|
|
<td valign="top">F1.2 </td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<br>
|
|
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).<br>
|
|
<h4>Typical course of events</h4>
|
|
<table border="0" cellpadding="2" cellspacing="2" width="100%">
|
|
<tbody>
|
|
<tr>
|
|
<th colspan="2" valign="top">actor action <br>
|
|
</th>
|
|
<th colspan="2" valign="top">system response <br>
|
|
</th>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>1.</b> </td>
|
|
<td valign="top">An Internal actor triggers the retrieval of some
|
|
remote files. <br>
|
|
</td>
|
|
<td valign="top"><b>2.</b> </td>
|
|
<td valign="top">The system looks up the URN of the remote file,
|
|
and determines the Media archive to contact regarding the file. </td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top"><b>3.</b><br>
|
|
</td>
|
|
<td valign="top">The system contacts the Local storage and sends
|
|
authorization information<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>4.</b><br>
|
|
</td>
|
|
<td valign="top">Local storage authenticates the system and
|
|
grants access<br>
|
|
</td>
|
|
<td valign="top"><b>5.</b><br>
|
|
</td>
|
|
<td valign="top">The system iniquires the local storage about the
|
|
availability of the file to download in the Local storage by presenting
|
|
its unique ID<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>6.</b><br>
|
|
</td>
|
|
<td valign="top">Local storage tells if the required file is
|
|
already stored or not.<br>
|
|
</td>
|
|
<td valign="top"><b>7.</b><br>
|
|
</td>
|
|
<td valign="top">If the file is available in the local storage,
|
|
the use case ends. Otherwise, it continues.<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top"> <br>
|
|
</td>
|
|
<td valign="top"><b>8.</b><br>
|
|
</td>
|
|
<td valign="top">The system contacts the Media archive and sends
|
|
authorization information </td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>9.</b> </td>
|
|
<td valign="top">Media archive authenticates the system and
|
|
grants access </td>
|
|
<td valign="top"><b>10.</b> </td>
|
|
<td valign="top">The system requests an audio clip by presenting
|
|
its unique ID </td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>11.</b> </td>
|
|
<td valign="top">Media archive looks up the file, and presents it
|
|
to the system </td>
|
|
<td valign="top"><b>12.</b> </td>
|
|
<td valign="top">The system retrieves the file and closes the
|
|
connection to the Media archive<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top"><b>13.</b><br>
|
|
</td>
|
|
<td valign="top">The system presents the file to Local storage<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>14.</b><br>
|
|
</td>
|
|
<td valign="top">Local storage stores the file under the
|
|
specified unique ID<br>
|
|
</td>
|
|
<td valign="top"><b>15.</b><br>
|
|
</td>
|
|
<td valign="top">The system closes the connection to Local
|
|
storage.<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"> <br>
|
|
</td>
|
|
<td valign="top"> <br>
|
|
</td>
|
|
<td valign="top"> <br>
|
|
</td>
|
|
<td valign="top"> <br>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<br>
|
|
<h4>Alternate courses</h4>
|
|
<ul>
|
|
<li><b>action 4:</b> the Local storage finds that the system can not
|
|
be authenticated. the system is notified and the use case ends.</li>
|
|
<li><b>action 9:</b> the Media archive finds that the system can not
|
|
be authenticated. the system is notified and the use case ends.</li>
|
|
<li><b>action 11:</b> the Media archive does not hold the requested
|
|
audio clip. the system is notified and the use case ends.<br>
|
|
<br>
|
|
</li>
|
|
</ul>
|
|
<h3>UC-5 Review play log<br>
|
|
</h3>
|
|
<table border="0" cellpadding="2" cellspacing="2" width="100%">
|
|
<tbody>
|
|
<tr>
|
|
<td valign="top"><b>ref#</b> </td>
|
|
<td valign="top">UC-5 </td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>use case</b> </td>
|
|
<td valign="top">Review play log </td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>type</b> </td>
|
|
<td valign="top">secondary, essential </td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>actors</b> </td>
|
|
<td valign="top">Broadcast auditor </td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>purpose</b> </td>
|
|
<td valign="top">Review what has been played </td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>overview</b> </td>
|
|
<td valign="top">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. </td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>references</b> </td>
|
|
<td valign="top">F1.4 </td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<h4>Typical course of events<br>
|
|
</h4>
|
|
<table border="0" cellpadding="2" cellspacing="2" width="100%">
|
|
<tbody>
|
|
<tr>
|
|
<th colspan="2" valign="top">actor action <br>
|
|
</th>
|
|
<th colspan="2" valign="top">system response <br>
|
|
</th>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>1.</b> </td>
|
|
<td valign="top">Broadcast auditor connects to the scheduler
|
|
daemon with the intent of reviewing what has been played.<br>
|
|
</td>
|
|
<td valign="top"> <br>
|
|
</td>
|
|
<td valign="top"> <br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>2.</b> </td>
|
|
<td valign="top">The Broadcast auditor provides authentication
|
|
information </td>
|
|
<td valign="top"><b>3.</b> </td>
|
|
<td valign="top">The system authenticates the Broadcast auditor
|
|
and grants access. </td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>3.</b><br>
|
|
</td>
|
|
<td valign="top">The Broadcast auditor browses through the play
|
|
log in a time-ordered manner.<br>
|
|
</td>
|
|
<td valign="top"><b>4.</b><br>
|
|
</td>
|
|
<td valign="top">The system displays the play log entries.<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>5.</b><br>
|
|
</td>
|
|
<td valign="top">The Broadcast auditor requests a play report for
|
|
a given time period.<br>
|
|
</td>
|
|
<td valign="top"><b>6.</b><br>
|
|
</td>
|
|
<td valign="top">The system displays the requested report.<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>7.</b><br>
|
|
</td>
|
|
<td valign="top">The Broadcast auditor disconnects.<br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<br>
|
|
<h4>Alternate courses</h4>
|
|
<ul>
|
|
<li><b>action 3:</b> the system finds that the user can not be
|
|
authenticated. the user is notified and the use case ends.</li>
|
|
</ul>
|
|
<br>
|
|
<h3>UC-6 Create playlist<br>
|
|
</h3>
|
|
<table border="0" cellpadding="2" cellspacing="2" width="100%">
|
|
<tbody>
|
|
<tr>
|
|
<td valign="top"><b>ref#</b> </td>
|
|
<td valign="top">UC-6 </td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>use case</b> </td>
|
|
<td valign="top">Create playlist<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>type</b> </td>
|
|
<td valign="top">secondary, essential </td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>actors</b> </td>
|
|
<td valign="top">Playlist editor<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>purpose</b> </td>
|
|
<td valign="top">Create a new playlist, and then edit it.<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>overview</b> </td>
|
|
<td valign="top">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.<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>references</b> </td>
|
|
<td valign="top">F1.12, F1.13<br>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<h4>Typical course of events<br>
|
|
</h4>
|
|
<table border="0" cellpadding="2" cellspacing="2" width="100%">
|
|
<tbody>
|
|
<tr>
|
|
<th colspan="2" valign="top">actor action <br>
|
|
</th>
|
|
<th colspan="2" valign="top">system response <br>
|
|
</th>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>1.</b> </td>
|
|
<td valign="top">Playlist editor connects to the scheduler with
|
|
the intent of creating a new playlist.<br>
|
|
</td>
|
|
<td valign="top"> <br>
|
|
</td>
|
|
<td valign="top"> <br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>2.</b> </td>
|
|
<td valign="top">The Playlist editor provides authentication
|
|
information </td>
|
|
<td valign="top"><b>3.</b> </td>
|
|
<td valign="top">The system authenticates the Playlist editor and
|
|
grants access. </td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>4.</b><br>
|
|
</td>
|
|
<td valign="top">The Playlist editor signals that he whishes for
|
|
a new playlist<br>
|
|
</td>
|
|
<td valign="top"><b>5.</b><br>
|
|
</td>
|
|
<td valign="top">The system creates a new, empty playlist, and
|
|
opens it for editing.<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>6.</b><br>
|
|
</td>
|
|
<td valign="top">The Playlist editor edits the new playlist. See
|
|
UC-7 actions 7-15 for details.<br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>7.</b><br>
|
|
</td>
|
|
<td valign="top">The Playlist editor disconnects.<br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<br>
|
|
<h4>Alternate courses</h4>
|
|
<ul>
|
|
<li><b>action 3:</b> the system finds that the user can not be
|
|
authenticated. the user is notified and the use case ends.</li>
|
|
</ul>
|
|
<br>
|
|
<h3>UC-7 Edit playlist<br>
|
|
</h3>
|
|
<table border="0" cellpadding="2" cellspacing="2" width="100%">
|
|
<tbody>
|
|
<tr>
|
|
<td valign="top"><b>ref#</b> </td>
|
|
<td valign="top">UC-7 </td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>use case</b> </td>
|
|
<td valign="top">Edit playlist<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>type</b> </td>
|
|
<td valign="top">secondary, essential </td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>actors</b> </td>
|
|
<td valign="top">Playlist editor<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>purpose</b> </td>
|
|
<td valign="top">Edit a previoulsy uploaded playlist<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>overview</b> </td>
|
|
<td valign="top">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.<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>references</b> </td>
|
|
<td valign="top">F1.12 </td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<h4>Typical course of events<br>
|
|
</h4>
|
|
<table border="0" cellpadding="2" cellspacing="2" width="100%">
|
|
<tbody>
|
|
<tr>
|
|
<th colspan="2" valign="top">actor action <br>
|
|
</th>
|
|
<th colspan="2" valign="top">system response <br>
|
|
</th>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>1.</b> </td>
|
|
<td valign="top">Playlist editor connects to the scheduler with
|
|
the intent of editing a playlist.<br>
|
|
</td>
|
|
<td valign="top"> <br>
|
|
</td>
|
|
<td valign="top"> <br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>2.</b> </td>
|
|
<td valign="top">The Playlist editor provides authentication
|
|
information </td>
|
|
<td valign="top"><b>3.</b> </td>
|
|
<td valign="top">The system authenticates the Playlist editor and
|
|
grants access. </td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top"><b>4.</b><br>
|
|
</td>
|
|
<td valign="top">The system lists the available playlists.<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>5.</b><br>
|
|
</td>
|
|
<td valign="top">The Playlist editor selects a playlist for
|
|
editing.<br>
|
|
</td>
|
|
<td valign="top"><b>6.</b><br>
|
|
</td>
|
|
<td valign="top">The system opens the playlist in editing mode.<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>7.</b><br>
|
|
</td>
|
|
<td valign="top">The Playlist editor browses the available Audio
|
|
clips<br>
|
|
</td>
|
|
<td valign="top"><b>8.</b><br>
|
|
</td>
|
|
<td valign="top">The system shows the list of available audio
|
|
clips<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>9.</b><br>
|
|
</td>
|
|
<td valign="top">The Playlist editor selects an Audio clip<br>
|
|
</td>
|
|
<td valign="top"><b>10.</b><br>
|
|
</td>
|
|
<td valign="top">The system displays details on the audio clip.<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>11.</b><br>
|
|
</td>
|
|
<td valign="top">The Playlist editor ads a new audio clip to the
|
|
playlist, at a certain timepoint in the playlist.<br>
|
|
</td>
|
|
<td valign="top"><b>12.</b><br>
|
|
</td>
|
|
<td valign="top">The new audio clip is added to the playlist.<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>13.</b><br>
|
|
</td>
|
|
<td valign="top">The Playlist editor removes an audio clip from
|
|
the playlist.<br>
|
|
</td>
|
|
<td valign="top"><b>14.</b><br>
|
|
</td>
|
|
<td valign="top">The audio clip is removed from the playlist.<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>15.</b><br>
|
|
</td>
|
|
<td valign="top">The Playlist editor edits the fade-in or
|
|
fade-out of a clip in the playlist.<br>
|
|
</td>
|
|
<td valign="top"><b>16.</b><br>
|
|
</td>
|
|
<td valign="top">The fade-in or fade-out is edited.<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>17.</b><br>
|
|
</td>
|
|
<td valign="top">The Playlist editor saves the playlist.<br>
|
|
</td>
|
|
<td valign="top"><b>18.</b><br>
|
|
</td>
|
|
<td valign="top">The playlist is validated.<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top"><b>19.</b><br>
|
|
</td>
|
|
<td valign="top">The playlist is saved.<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>20.</b><br>
|
|
</td>
|
|
<td valign="top">The Playlist editor disconnects.<br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<br>
|
|
<h4>Alternate courses</h4>
|
|
<ul>
|
|
<li><b>action 3:</b> the system finds that the user can not be
|
|
authenticated. the user is notified and the use case ends.</li>
|
|
<li><b>action 6:</b> the selected playlist is currently being
|
|
executed. the user is notified that executing playlists can not be
|
|
edited and the use case ends.</li>
|
|
<li><b>action 17:</b> the user decides not to save the playlist, but
|
|
to revert to the version prior to editing. the playlist is reverted,
|
|
and is shown to the user in non-edit mode.<br>
|
|
</li>
|
|
<li><b>action 18:</b> the playlist turns out not be valid. the user
|
|
is notified that such a playlist can not be saved, and is given an
|
|
opportunity to further edit the playlist. validation errors are also
|
|
shown.</li>
|
|
</ul>
|
|
<br>
|
|
<h3>UC-8 Start/stop scheduler<br>
|
|
</h3>
|
|
<table border="0" cellpadding="2" cellspacing="2" width="100%">
|
|
<tbody>
|
|
<tr>
|
|
<td valign="top"><b>ref#</b> </td>
|
|
<td valign="top">UC-8 </td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>use case</b> </td>
|
|
<td valign="top">Start/stop scheduler<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>type</b> </td>
|
|
<td valign="top">primary, essential </td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>actors</b> </td>
|
|
<td valign="top">Administrator<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>purpose</b> </td>
|
|
<td valign="top">Start and stop the scheduler daemon<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>overview</b> </td>
|
|
<td valign="top">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.<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>references</b> </td>
|
|
<td valign="top">F1.14, F1.15, A1.8<br>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<h4>Typical course of events<br>
|
|
</h4>
|
|
<table border="0" cellpadding="2" cellspacing="2" width="100%">
|
|
<tbody>
|
|
<tr>
|
|
<th colspan="2" valign="top">actor action <br>
|
|
</th>
|
|
<th colspan="2" valign="top">system response <br>
|
|
</th>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>1.</b> </td>
|
|
<td valign="top">The Administrator invokes the scheduler's System
|
|
V init script with the start parameter<br>
|
|
</td>
|
|
<td valign="top"> <br>
|
|
</td>
|
|
<td valign="top"> <br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"> <br>
|
|
</td>
|
|
<td valign="top"> <br>
|
|
</td>
|
|
<td valign="top"><b>2.</b> </td>
|
|
<td valign="top">The scheduler daemon starts up.<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>3.</b><br>
|
|
</td>
|
|
<td valign="top">The Administrator checks to see if the scheduler
|
|
daemon is running<br>
|
|
</td>
|
|
<td valign="top"><b>4.</b><br>
|
|
</td>
|
|
<td valign="top">The scheduler daemon reports that it is running.<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>5.</b><br>
|
|
</td>
|
|
<td valign="top">The Administrator stops the scheduler deamon.<br>
|
|
</td>
|
|
<td valign="top"><b>6.</b><br>
|
|
</td>
|
|
<td valign="top">The scheduler daemon stops.<br>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<br>
|
|
<h4>Alternate courses</h4>
|
|
<ul>
|
|
<li><b>action 2:</b> if the scheduler is already running, indicate
|
|
the starting attempt as an error.<br>
|
|
</li>
|
|
<li><b>action 4:</b> if the scheduler daemon is not running, it is
|
|
reported that it is not running.<br>
|
|
</li>
|
|
<li><b>action 6:</b> if the scheduler daemon is not running, it is
|
|
not stopped.<br>
|
|
</li>
|
|
</ul>
|
|
<h2>Conceptual model</h2>
|
|
The following figure displays the semantic concepts identified for the
|
|
Scheduler daemon, and the main associations between the concepts.<br>
|
|
<br>
|
|
<object type="image/svg+xml" name="essential use cases"
|
|
data="Concepts.svg" height="1000" width="950"></object>
|
|
<br>
|
|
<h3>Concepts</h3>
|
|
<br>
|
|
<table border="0" cellpadding="2" cellspacing="2" width="100%">
|
|
<tbody>
|
|
<tr>
|
|
<th valign="top">concept<br>
|
|
</th>
|
|
<th valign="top">description<br>
|
|
</th>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Media archive</b><br>
|
|
</td>
|
|
<td valign="top">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.<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Clip retriever</b><br>
|
|
</td>
|
|
<td valign="top">Retrieves Audio clips from the Media archive and
|
|
stores them in local storage.<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Local storage</b><br>
|
|
</td>
|
|
<td valign="top">A local store of Audio clips. Provides access to
|
|
each clip based on the clips' unique id. Allows random access to the
|
|
clip files.<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Audio clip</b><br>
|
|
</td>
|
|
<td valign="top">A uniquely identified audio file.<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Playlist</b><br>
|
|
</td>
|
|
<td valign="top">A metafile, containing references to Audio
|
|
clips, and information on how the clips should be played.<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>PlaylistElement</b><br>
|
|
</td>
|
|
<td valign="top">An association class describing the specifics of
|
|
an instance of an Audio clip in a playlist.<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>FadeInfo</b><br>
|
|
</td>
|
|
<td valign="top">A class describing fade in or fade out
|
|
characteristics for an Audio clip in a Playlist<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Playlist store</b><br>
|
|
</td>
|
|
<td valign="top">A container holding a range of playlists.<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Schedule</b><br>
|
|
</td>
|
|
<td valign="top">Contains Schedule entries<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Schedule entry</b><br>
|
|
</td>
|
|
<td valign="top">Contains the time and details of when a playlist
|
|
should be played.<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Scheduler daemon</b><br>
|
|
</td>
|
|
<td valign="top">Executes playlists at timepoints specified by
|
|
the schedule.<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Play log</b><br>
|
|
</td>
|
|
<td valign="top">A logging facility, holding Play log entries.<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Play log entry</b><br>
|
|
</td>
|
|
<td valign="top">A record of when an Audio clip was played.<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Play report</b><br>
|
|
</td>
|
|
<td valign="top">An audit report of what Audio clips have been
|
|
played in a certain time period<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Authentication</b><br>
|
|
</td>
|
|
<td valign="top">Provides authentication services<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Playlist editor</b><br>
|
|
</td>
|
|
<td valign="top">An external editor, managing playlists.<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Broadcast auditor</b><br>
|
|
</td>
|
|
<td valign="top">An external auditor, browsing the Play log.<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Administrator</b><br>
|
|
</td>
|
|
<td valign="top">The administrator responsible for starting and
|
|
stopping the scheduler daemon.<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<br>
|
|
<h3>Associations</h3>
|
|
<br>
|
|
<table border="0" cellpadding="2" cellspacing="2" width="100%">
|
|
<tbody>
|
|
<tr>
|
|
<th valign="top">source<br>
|
|
</th>
|
|
<th valign="top">association<br>
|
|
</th>
|
|
<th valign="top">target<br>
|
|
</th>
|
|
<th valign="top">description<br>
|
|
</th>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top">Clip retriever<br>
|
|
</td>
|
|
<td valign="top">Retrieves clips from<br>
|
|
</td>
|
|
<td valign="top">Media archive<br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top">Media archive<br>
|
|
</td>
|
|
<td valign="top">Contains<br>
|
|
</td>
|
|
<td valign="top">Audio clip<br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top">Clip retriever<br>
|
|
</td>
|
|
<td valign="top">Stores clips in<br>
|
|
</td>
|
|
<td valign="top">Local storage<br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top">Local storage<br>
|
|
</td>
|
|
<td valign="top">Contains<br>
|
|
</td>
|
|
<td valign="top">Audio clip<br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top">Playlist<br>
|
|
</td>
|
|
<td valign="top">References by PlaylistElement<br>
|
|
</td>
|
|
<td valign="top">Audio clip<br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top">PlaylistElement<br>
|
|
</td>
|
|
<td valign="top">Fades in with<br>
|
|
</td>
|
|
<td valign="top">FadeInfo<br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top">PlaylistElement<br>
|
|
</td>
|
|
<td valign="top">Fades out with<br>
|
|
</td>
|
|
<td valign="top">FadeInfo<br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top">Playlist store<br>
|
|
</td>
|
|
<td valign="top">Contains<br>
|
|
</td>
|
|
<td valign="top">Play list<br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top">Playlist editor<br>
|
|
</td>
|
|
<td valign="top">Uploads playlist to<br>
|
|
</td>
|
|
<td valign="top">Playlist store<br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top">Playlist editor<br>
|
|
</td>
|
|
<td valign="top">Manages schedule in<br>
|
|
</td>
|
|
<td valign="top">Schedule<br>
|
|
</td>
|
|
<td valign="top">The Playlist editor schedules playlists.<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top">Schedule<br>
|
|
</td>
|
|
<td valign="top">Contains<br>
|
|
</td>
|
|
<td valign="top">Schedule entry<br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top">Schedule entry<br>
|
|
</td>
|
|
<td valign="top">References<br>
|
|
</td>
|
|
<td valign="top">Playlist<br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top">Scheduler daemon<br>
|
|
</td>
|
|
<td valign="top">Executes<br>
|
|
</td>
|
|
<td valign="top">Schedule<br>
|
|
</td>
|
|
<td valign="top">The Scheduler daemon plays the scheduled
|
|
playlists.<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top">Scheduler daemon<br>
|
|
</td>
|
|
<td valign="top">Logs into<br>
|
|
</td>
|
|
<td valign="top">Play log<br>
|
|
</td>
|
|
<td valign="top">The Scheduler daemon logs all the played audio
|
|
clips into the Play log for proof of broadcast purposes.<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top">Play log<br>
|
|
</td>
|
|
<td valign="top">Contains<br>
|
|
</td>
|
|
<td valign="top">Play log entry<br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top">Play log<br>
|
|
</td>
|
|
<td valign="top">Generated<br>
|
|
</td>
|
|
<td valign="top">Play report<br>
|
|
</td>
|
|
<td valign="top">The play log generates reports based on Play log
|
|
entries.<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top">Play log entry<br>
|
|
</td>
|
|
<td valign="top">References<br>
|
|
</td>
|
|
<td valign="top">Audio clip<br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top">Broadcast auditor<br>
|
|
</td>
|
|
<td valign="top">Browses entries from<br>
|
|
</td>
|
|
<td valign="top">Play log<br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top">Broadcast auditor<br>
|
|
</td>
|
|
<td valign="top">Requests<br>
|
|
</td>
|
|
<td valign="top">Play report<br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top">Playlist editor<br>
|
|
</td>
|
|
<td valign="top">Is authenticated by<br>
|
|
</td>
|
|
<td valign="top">Authentication<br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top">Broadcast auditor<br>
|
|
</td>
|
|
<td valign="top">Is authenticated by<br>
|
|
</td>
|
|
<td valign="top">Authentication<br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top">Administrator<br>
|
|
</td>
|
|
<td valign="top">Manages<br>
|
|
</td>
|
|
<td valign="top">Scheduler daemon<br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<br>
|
|
<h2>System behavior</h2>
|
|
The behavior of the system as a whole as experienced from the outside
|
|
is discussed in this section.<br>
|
|
<h3>System sequence diagrams</h3>
|
|
System diagrams are presented for each use case below.<br>
|
|
<h4>UC-1 Upload playlists</h4>
|
|
<object type="image/svg+xml" name="upload playlists sequence diagram"
|
|
data="Uploadplaylists_SequenceDiagram.svg" height="200" width="550"></object>
|
|
<br>
|
|
<h4>UC-2 Manage schedule</h4>
|
|
<object type="image/svg+xml" name="manage playlists sequence diagram"
|
|
data="Manageschedule_SequenceDiagram.svg" height="350" width="650"></object>
|
|
<br>
|
|
<h4>UC-3 Manage playlists</h4>
|
|
<object type="image/svg+xml" name="manage playlists sequence diagram"
|
|
data="Manageplaylists_SequenceDiagram.svg" height="300" width="650"></object>
|
|
<br>
|
|
<h4>UC-4 Retrieve remote files<br>
|
|
</h4>
|
|
<object type="image/svg+xml"
|
|
name="retrieve remote files sequence diagram"
|
|
data="Retrieveremotefiles_SequenceDiagram.svg" height="300" width="750"></object>
|
|
<br>
|
|
<h4>UC-5 Review play log</h4>
|
|
<object type="image/svg+xml" name="review play log sequence diagram"
|
|
data="Reviewplaylog_SequenceDiagram.svg" height="250" width="650"></object>
|
|
<h4>UC-6 Create playlist</h4>
|
|
<object type="image/svg+xml" name="create playlist sequence diagram"
|
|
data="Createplaylist_SequenceDiagram.svg" height="250" width="650"></object>
|
|
<h4>UC-7 Edit playlist<br>
|
|
<object type="image/svg+xml" name="edit playlist sequence diagram"
|
|
data="Editplaylist_SequenceDiagram.svg" height="500" width="800"></object>
|
|
</h4>
|
|
<h4>UC-8 Start/stop scheduler</h4>
|
|
<object type="image/svg+xml"
|
|
name="start/stop scheduler sequence diagram"
|
|
data="Startstopscheduler_SequenceDiagram.svg" height="200" width="600"></object>
|
|
<br>
|
|
<br>
|
|
<h3>System objects</h3>
|
|
The following figures shows the system objects and their functions, as
|
|
derived from the system sequence diagrams.<br>
|
|
<object type="image/svg+xml" name="system behaviour"
|
|
data="Systembehaviour.svg" height="450" width="550"></object>
|
|
<h3>Contracts</h3>
|
|
For all operations exposed in the system sequence diagrams, the
|
|
following contracts are defined.<br>
|
|
<h4>Contract for Scheduler : authenticate</h4>
|
|
See Authentication : authenticate<br>
|
|
<br>
|
|
<h4>Contract for Scheduler : uploadPlaylist</h4>
|
|
<table border="0" cellpadding="2" cellspacing="2" width="100%">
|
|
<tbody>
|
|
<tr>
|
|
<td valign="top"><b>Name</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">uploadPlaylist<br>
|
|
(playlist : Playlist,<br>
|
|
playtime: Schedule)<br>
|
|
: UniqueId<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Responsibilities</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">Upload a playlist and
|
|
put it into the schedule.<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Type</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">system<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Cross-reference</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">F1.1, UC-1<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Notes</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top"><br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Exceptions</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">If the uploaded playlist
|
|
is not valid, indicate as an error<br>
|
|
If the proposed schedule conflicts with existing schedules, indicate as
|
|
an error<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Output</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">the unique id of the
|
|
ScheduleEntry created with this upload<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Pre-conditions</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">none</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Post-conditions</b><br>
|
|
</td>
|
|
<td align="center" valign="top"><b>condition</b><br>
|
|
</td>
|
|
<td align="center" valign="top"><b>type</b><br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top">A new Playlist is created, storing the uploaded
|
|
playlist<br>
|
|
</td>
|
|
<td valign="top">instance creation </td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top">Playlist is entered into the Playlist store<br>
|
|
</td>
|
|
<td valign="top">association formed<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top">A new Schedule is created, according to the
|
|
supplied schedule<br>
|
|
</td>
|
|
<td valign="top">instance creation<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top">Schedule is associated with the Playlist<br>
|
|
</td>
|
|
<td valign="top">association formed<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<br>
|
|
<h4>Contract for Scheduler : displaySchedule</h4>
|
|
<table border="0" cellpadding="2" cellspacing="2" width="100%">
|
|
<tbody>
|
|
<tr>
|
|
<td valign="top"><b>Name</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">displaySchedule<br>
|
|
(from : TimeStamp,<br>
|
|
to : TimeStamp)<br>
|
|
: Schedule<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Responsibilities</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">Display Schedule entries
|
|
for a time period.<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Type</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">system<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Cross-reference</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">F1.4, UC-2<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Notes</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top"><br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Exceptions</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">none<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Output</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">The Schedule entries for
|
|
the specified time period.<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Pre-conditions</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">none</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Post-conditions</b><br>
|
|
</td>
|
|
<td align="left" valign="top">none<br>
|
|
</td>
|
|
<td align="center" valign="top"><br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<br>
|
|
<h4>Contract for Scheduler : displayPlaylist</h4>
|
|
<table border="0" cellpadding="2" cellspacing="2" width="100%">
|
|
<tbody>
|
|
<tr>
|
|
<td valign="top"><b>Name</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">displayPlaylist<br>
|
|
(playlistId : UniqueId)<br>
|
|
: Playlist<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Responsibilities</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">Display a specific
|
|
playlist<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Type</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">system<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Cross-reference</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">F1.4, UC-3<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Notes</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top"><br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Exceptions</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">If no playlist exists
|
|
for the specified playlistId, indicate as an error.<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Output</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">The requested playlist.<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Pre-conditions</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">none</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Post-conditions</b><br>
|
|
</td>
|
|
<td align="left" valign="top">none<br>
|
|
</td>
|
|
<td align="center" valign="top"><br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<br>
|
|
<h4>Contract for Scheduler : deletePlaylist</h4>
|
|
<table border="0" cellpadding="2" cellspacing="2" width="100%">
|
|
<tbody>
|
|
<tr>
|
|
<td valign="top"><b>Name</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">deletePlaylist<br>
|
|
(playlist : Playlist)<br>
|
|
: void<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Responsibilities</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">Delete a specific
|
|
playlist<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Type</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">system<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Cross-reference</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">F1.11, UC-3<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Notes</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top"><br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Exceptions</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">If no playlist exists
|
|
for the specified playlistId, indicate as an error.<br>
|
|
If the playlist is referenced by any Schedule entry, indicate as an
|
|
error.<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Output</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">none<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Pre-conditions</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">none</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Post-conditions</b><br>
|
|
</td>
|
|
<td align="center" valign="top"><b>condition</b><br>
|
|
</td>
|
|
<td align="center" valign="top"><b>type</b><br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top">The playlist is removed from the Playlist store.<br>
|
|
</td>
|
|
<td valign="top">association broken<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top">References by the playlist to Audio clips removed<br>
|
|
</td>
|
|
<td valign="top">association broken<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top">The playlist is deleted<br>
|
|
</td>
|
|
<td valign="top">instance deletion<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<br>
|
|
<h4>Contract for Scheduler : removeFromSchedule<br>
|
|
</h4>
|
|
<table border="0" cellpadding="2" cellspacing="2" width="100%">
|
|
<tbody>
|
|
<tr>
|
|
<td valign="top"><b>Name</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">removeFromSchedule<br>
|
|
(scheduleEntryId : UniqueId)<br>
|
|
: bool<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Responsibilities</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">Remove a specific
|
|
playlist from a schedule entry<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Type</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">system<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Cross-reference</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">F1.9, UC-2<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Notes</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top"><br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Exceptions</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">If no ScheduleEntry by
|
|
the specified
|
|
scheduleEntryId exist, indicate as an error.<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Output</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">true if the specified
|
|
entry was removed, false if it did not exist.<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Pre-conditions</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">none</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Post-conditions</b><br>
|
|
</td>
|
|
<td align="center" valign="top"><b>condition</b><br>
|
|
</td>
|
|
<td align="center" valign="top"><b>type</b><br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top">Reference to the playlist by the scheduleEntry
|
|
is removed.<br>
|
|
</td>
|
|
<td valign="top">association broken<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top">The ScheduleEntry specified by the
|
|
scheduleEntryId is deleted<br>
|
|
</td>
|
|
<td valign="top">instance deletion<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<br>
|
|
<h4>Contract for Scheduler : reschedule<br>
|
|
</h4>
|
|
<table border="0" cellpadding="2" cellspacing="2" width="100%">
|
|
<tbody>
|
|
<tr>
|
|
<td valign="top"><b>Name</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">reschedule<br>
|
|
(scheduleEntryId : UniqueId,<br>
|
|
playtime : TimeStamp)<br>
|
|
: bool<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Responsibilities</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">Change when a certain
|
|
playlist is scheduled to play.<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Type</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">system<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Cross-reference</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">F1.10, UC-2<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Notes</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top"><br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Exceptions</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">If no ScheduleEntry by
|
|
the specified
|
|
scheduleEntryId exist, indicate as an error.<br>
|
|
If the new playtime conflicts with other schedule entries, indicate as
|
|
an error.<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Output</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">false on errors<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Pre-conditions</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">none</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Post-conditions</b><br>
|
|
</td>
|
|
<td align="center" valign="top"><b>condition</b><br>
|
|
</td>
|
|
<td align="center" valign="top"><b>type</b><br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top">The time attribute of scheduleEntry is updated
|
|
to the supplied playtime.<br>
|
|
</td>
|
|
<td valign="top">attribute modification<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<br>
|
|
<h4>Contract for Scheduler : displayPlaylists</h4>
|
|
<table border="0" cellpadding="2" cellspacing="2" width="100%">
|
|
<tbody>
|
|
<tr>
|
|
<td valign="top"><b>Name</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">displayPlaylists<br>
|
|
()<br>
|
|
: Playlist<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Responsibilities</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">Display Playlists
|
|
contained in the Playlist store<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Type</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">system<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Cross-reference</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">F1.4, UC-3<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Notes</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top"><br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Exceptions</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">none<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Output</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">The playlists contained
|
|
in the Playlist store.<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Pre-conditions</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">none</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Post-conditions</b><br>
|
|
</td>
|
|
<td align="left" valign="top">none<br>
|
|
</td>
|
|
<td align="center" valign="top"><br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<br>
|
|
<h4>Contract for Scheduler : displayPlayLog</h4>
|
|
<table border="0" cellpadding="2" cellspacing="2" width="100%">
|
|
<tbody>
|
|
<tr>
|
|
<td valign="top"><b>Name</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">displayPlayLog<br>
|
|
()<br>
|
|
: Play log<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Responsibilities</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">Display Play log entries
|
|
contained in the Play log<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Type</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">system<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Cross-reference</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">F1.4, UC-5<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Notes</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top"><br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Exceptions</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">none<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Output</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">The play log entries
|
|
contained in the Play log.<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Pre-conditions</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">none</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Post-conditions</b><br>
|
|
</td>
|
|
<td align="left" valign="top">none<br>
|
|
</td>
|
|
<td align="center" valign="top"><br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<br>
|
|
<h4>Contract for Scheduler : generatePlayReport<br>
|
|
</h4>
|
|
<table border="0" cellpadding="2" cellspacing="2" width="100%">
|
|
<tbody>
|
|
<tr>
|
|
<td valign="top"><b>Name</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">generatePlayReport<br>
|
|
(from : TimeStamp,<br>
|
|
to : TimeStamp)<br>
|
|
: Play report<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Responsibilities</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">Present a report on what
|
|
Audio clips have been played to the Broadcast auditor.<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Type</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">system<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Cross-reference</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">F1.4, UC-5<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Notes</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top"><br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Exceptions</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">none<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Output</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">A report on the played
|
|
Audio clips played in the specified time period.<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Pre-conditions</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">none</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Post-conditions</b><br>
|
|
</td>
|
|
<td align="left" valign="top">none<br>
|
|
</td>
|
|
<td align="center" valign="top"><br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<br>
|
|
<h4>Contract for Scheduler : createPlaylist<br>
|
|
</h4>
|
|
<table border="0" cellpadding="2" cellspacing="2" width="100%">
|
|
<tbody>
|
|
<tr>
|
|
<td valign="top"><b>Name</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">createPlaylist<br>
|
|
()<br>
|
|
: Playlist<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Responsibilities</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">Create a new playlist<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Type</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">system<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Cross-reference</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">F1.12, UC-6<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Notes</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">A new playlist is
|
|
created, and is immediately locked for editing.<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Exceptions</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">none<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Output</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">none<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Pre-conditions</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">none</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Post-conditions</b><br>
|
|
</td>
|
|
<td align="center" valign="top"><b>condition</b><br>
|
|
</td>
|
|
<td align="center" valign="top"><b>type</b><br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top">A new Playlist is created<br>
|
|
</td>
|
|
<td valign="top">instance creation<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top">The lockedForEditing attribute is set to true
|
|
for the playlist<br>
|
|
</td>
|
|
<td valign="top">attribute modification<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top">The playlist is added to the Playlist store<br>
|
|
</td>
|
|
<td valign="top">association formed<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<br>
|
|
<h4>Contract for Scheduler : openPlaylistForEditing<br>
|
|
</h4>
|
|
<table border="0" cellpadding="2" cellspacing="2" width="100%">
|
|
<tbody>
|
|
<tr>
|
|
<td valign="top"><b>Name</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">openPlaylistForEditing<br>
|
|
(playlist : Playlist)<br>
|
|
: void<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Responsibilities</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">Open a playlist for
|
|
editing<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Type</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">system<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Cross-reference</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">F1.13, UC-7<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Notes</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">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.<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Exceptions</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">if the playlist is
|
|
currently being executed, indicate as an error.<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Output</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">none<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Pre-conditions</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">none</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Post-conditions</b><br>
|
|
</td>
|
|
<td align="center" valign="top"><b>condition</b><br>
|
|
</td>
|
|
<td align="center" valign="top"><b>type</b><br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top">The current version of the playlist is stored,
|
|
in case the user wants to revert to the last saved version (see
|
|
revertEditedPlaylist)<br>
|
|
</td>
|
|
<td valign="top">instance creation<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top">The lockedForEditing attribute is set to true
|
|
for the playlist<br>
|
|
</td>
|
|
<td valign="top">attribute modification<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<br>
|
|
<h4>Contract for Scheduler : addAudioClipToPlaylist<br>
|
|
</h4>
|
|
<table border="0" cellpadding="2" cellspacing="2" width="100%">
|
|
<tbody>
|
|
<tr>
|
|
<td valign="top"><b>Name</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">addAutioClipToPlaylist<br>
|
|
(playlist : Playlist,<br>
|
|
audioClip : AudioClip,<br>
|
|
relativeOffset : Time)<br>
|
|
: void<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Responsibilities</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">Add an Audio clip to a
|
|
Playlist<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Type</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">system<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Cross-reference</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">F1.13, UC-7<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Notes</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">The Audio clip is added
|
|
to the playlist with the specified relativeOffset from the beginning of
|
|
the Playlist.<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Exceptions</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">none<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Output</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">none<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Pre-conditions</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">the Playlist is
|
|
currently opened for editing<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Post-conditions</b><br>
|
|
</td>
|
|
<td align="center" valign="top"><b>condition</b><br>
|
|
</td>
|
|
<td align="center" valign="top"><b>type</b><br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top">The new PlaylistElement is created associating
|
|
the playlist with the audio clip, with the specified relativeOffset<br>
|
|
</td>
|
|
<td valign="top">association formed, instnace creation<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<br>
|
|
<h4>Contract for Scheduler : displayAudioClips<br>
|
|
</h4>
|
|
<table border="0" cellpadding="2" cellspacing="2" width="100%">
|
|
<tbody>
|
|
<tr>
|
|
<td valign="top"><b>Name</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">displayAudioClips<br>
|
|
()<br>
|
|
: AudioClip<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Responsibilities</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">Display the audio clips
|
|
known to the Scheduler<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Type</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">system<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Cross-reference</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">F1.13, UC-7<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Notes</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">none<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Exceptions</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">none<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Output</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">The Audio clips kown to
|
|
the Scheduler<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Pre-conditions</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">none<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Post-conditions</b><br>
|
|
</td>
|
|
<td align="left" valign="top">none<br>
|
|
</td>
|
|
<td align="center" valign="top"><br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<br>
|
|
<h4>Contract for Scheduler : displayAudioClip<br>
|
|
</h4>
|
|
<table border="0" cellpadding="2" cellspacing="2" width="100%">
|
|
<tbody>
|
|
<tr>
|
|
<td valign="top"><b>Name</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">displayAudioClip<br>
|
|
(audioClipId : UniqueId)<br>
|
|
: AudioClip<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Responsibilities</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">Display the audio clip
|
|
specified by the audioClipId<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Type</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">system<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Cross-reference</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">F1.13, UC-7<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Notes</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">none<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Exceptions</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">if no audio clip by the
|
|
specified id exists, indicate as an error<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Output</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">The Audio clip specified
|
|
by the audioClipId<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Pre-conditions</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">none<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Post-conditions</b><br>
|
|
</td>
|
|
<td align="left" valign="top">none<br>
|
|
</td>
|
|
<td align="center" valign="top"><br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<br>
|
|
<h4>Contract for Scheduler : removeAudioClipFromPlaylist<br>
|
|
</h4>
|
|
<table border="0" cellpadding="2" cellspacing="2" width="100%">
|
|
<tbody>
|
|
<tr>
|
|
<td valign="top"><b>Name</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">removeAutioClipFromPlaylist<br>
|
|
(playlist : Playlist,<br>
|
|
audioClip : AudioClip)<br>
|
|
: void<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Responsibilities</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">Remove an Audio clip
|
|
from a Playlist<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Type</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">system<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Cross-reference</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">F1.13, UC-7<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Notes</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">The Audio clip is
|
|
removed from the Playlist.<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Exceptions</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">If the Audio clip is not
|
|
in the playlist, indicate as an error.<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Output</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">none<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Pre-conditions</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">the Playlist is
|
|
currently opened for editing<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Post-conditions</b><br>
|
|
</td>
|
|
<td align="center" valign="top"><b>condition</b><br>
|
|
</td>
|
|
<td align="center" valign="top"><b>type</b><br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top">The PlaylistElement associating the AudioClip
|
|
with the Playlist is removed, with the related FadeInfo instances<br>
|
|
</td>
|
|
<td valign="top">instance deletion, association broken<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<br>
|
|
<h4>Contract for Scheduler : updateFadeInFadeOut<br>
|
|
</h4>
|
|
<table border="0" cellpadding="2" cellspacing="2" width="100%">
|
|
<tbody>
|
|
<tr>
|
|
<td valign="top"><b>Name</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">updateFadeInFadeOut<br>
|
|
(audioClip : AudioClip,<br>
|
|
playlist : Playlist)<br>
|
|
: void<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Responsibilities</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">Update the fade-in and
|
|
fade-out parameters for an audio clip playing in a playlist.<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Type</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">system<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Cross-reference</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">F1.13, UC-7<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Notes</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">none<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Exceptions</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">If the Audio clip is not
|
|
in the playlist, indicate as an error.<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Output</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">none<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Pre-conditions</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">the Playlist is
|
|
currently opened for editing<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Post-conditions</b><br>
|
|
</td>
|
|
<td align="center" valign="top"><b>condition</b><br>
|
|
</td>
|
|
<td align="center" valign="top"><b>type</b><br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top">The fade-in and fade-out parameters for the
|
|
audio clip in the playlist are updated<br>
|
|
</td>
|
|
<td valign="top">attribute modification<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<br>
|
|
<h4>Contract for Scheduler : validatePlaylist<br>
|
|
</h4>
|
|
<table border="0" cellpadding="2" cellspacing="2" width="100%">
|
|
<tbody>
|
|
<tr>
|
|
<td valign="top"><b>Name</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">validatePlaylist<br>
|
|
(playlist : Playlist)<br>
|
|
: boolean<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Responsibilities</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">Validate a playlist for
|
|
being complete.<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Type</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">system<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Cross-reference</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">F1.13, UC-7<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Notes</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">The playlist is checked
|
|
for being complete (not containing silence) and other sanity criteria.<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Exceptions</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">none<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Output</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">none<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Pre-conditions</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">none<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Post-conditions</b><br>
|
|
</td>
|
|
<td align="left" valign="top">none<br>
|
|
</td>
|
|
<td align="center" valign="top"><br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<br>
|
|
<h4>Contract for Scheduler : savePlaylist<br>
|
|
</h4>
|
|
<table border="0" cellpadding="2" cellspacing="2" width="100%">
|
|
<tbody>
|
|
<tr>
|
|
<td valign="top"><b>Name</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">savePlaylist<br>
|
|
(playlist : Playlist)<br>
|
|
: void<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Responsibilities</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">The playlist is saved.<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Type</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">system<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Cross-reference</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">F1.13, UC-7<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Notes</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">none<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Exceptions</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">If the playlist is not
|
|
valid, indicate as an error.<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Output</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">none<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Pre-conditions</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">the Playlist is
|
|
currently opened for editing<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Post-conditions</b><br>
|
|
</td>
|
|
<td align="center" valign="top"><b>condition</b><br>
|
|
</td>
|
|
<td align="center" valign="top"><b>type</b><br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top">The lockedForEditing attriubute is set to false
|
|
for the playlist<br>
|
|
</td>
|
|
<td valign="top">attribute modification<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top">The old version of the Playlist that could have
|
|
been used for reverting is deleted (see revertEditedPlaylist)<br>
|
|
</td>
|
|
<td valign="top">instance deletion<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<br>
|
|
<h4>Contract for Scheduler : revertEditedPlaylist<br>
|
|
</h4>
|
|
<table border="0" cellpadding="2" cellspacing="2" width="100%">
|
|
<tbody>
|
|
<tr>
|
|
<td valign="top"><b>Name</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">revertEditedPlaylist<br>
|
|
(playlist : Playlist)<br>
|
|
: void<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Responsibilities</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">Changes are discarded
|
|
for a Playlist that is being edited.<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Type</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">system<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Cross-reference</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">F1.13, UC-7<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Notes</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">The contents of the
|
|
playlist are reverted to the state prior to when editing began on it.<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Exceptions</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">none<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Output</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">none<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Pre-conditions</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">the Playlist is
|
|
currently opened for editing<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Post-conditions</b><br>
|
|
</td>
|
|
<td align="center" valign="top"><b>condition</b><br>
|
|
</td>
|
|
<td align="center" valign="top"><b>type</b><br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top">The contents of the Playlist are reverted to the
|
|
last saved version. This includes deleting all created PlaylistElement
|
|
and FadeInfo instances.<br>
|
|
</td>
|
|
<td valign="top">attribute modification, instance deletion<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top">The lockedForEditing attriubute is set to false
|
|
for the playlist<br>
|
|
</td>
|
|
<td valign="top">attribute modification<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<br>
|
|
<h4>Contract for Scheduler : start<br>
|
|
</h4>
|
|
<table border="0" cellpadding="2" cellspacing="2" width="100%">
|
|
<tbody>
|
|
<tr>
|
|
<td valign="top"><b>Name</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">start<br>
|
|
()<br>
|
|
: void<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Responsibilities</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">Starts the scheduler
|
|
daemon<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Type</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">system<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Cross-reference</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">F1.14, UC-8<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Notes</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">A System V init-style
|
|
daemon starting entry point<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Exceptions</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">none<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Output</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">none<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Pre-conditions</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">The scheduler daemon is
|
|
currently not running<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Post-conditions</b><br>
|
|
</td>
|
|
<td align="center" valign="top"><b>condition</b><br>
|
|
</td>
|
|
<td align="center" valign="top"><b>type</b><br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top">The scheduler daemon object is created<br>
|
|
</td>
|
|
<td valign="top">instance creation<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top">All the necessary structures are created for the
|
|
deamon to run<br>
|
|
</td>
|
|
<td valign="top">instance creation<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<br>
|
|
<h4>Contract for Scheduler : isRunning<br>
|
|
</h4>
|
|
<table border="0" cellpadding="2" cellspacing="2" width="100%">
|
|
<tbody>
|
|
<tr>
|
|
<td valign="top"><b>Name</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">isRunning<br>
|
|
()<br>
|
|
: boolean<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Responsibilities</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">Tells if the scheduler
|
|
daemon is running<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Type</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">system<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Cross-reference</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">UC-8<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Notes</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">A System V init-style
|
|
daemon status entry point<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Exceptions</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">none<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Output</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">true of the daemon is
|
|
running, false otherwise<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Pre-conditions</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">none<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Post-conditions</b><br>
|
|
</td>
|
|
<td align="left" valign="top">none<br>
|
|
</td>
|
|
<td align="center" valign="top"><br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<br>
|
|
<h4>Contract for Scheduler : stop<br>
|
|
</h4>
|
|
<table border="0" cellpadding="2" cellspacing="2" width="100%">
|
|
<tbody>
|
|
<tr>
|
|
<td valign="top"><b>Name</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">stop<br>
|
|
()<br>
|
|
: void<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Responsibilities</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">Stops the scheduler
|
|
daemon<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Type</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">system<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Cross-reference</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">F1.15, UC-8<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Notes</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">A System V init-style
|
|
daemon stopping entry point<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Exceptions</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">none<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Output</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">none<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Pre-conditions</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">The scheduler daemon is
|
|
currently running<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Post-conditions</b><br>
|
|
</td>
|
|
<td align="center" valign="top"><b>condition</b><br>
|
|
</td>
|
|
<td align="center" valign="top"><b>type</b><br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top">The scheduler daemon object is deleted<br>
|
|
</td>
|
|
<td valign="top">instance deletion<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<br>
|
|
<h4>Contract for Media archive : authenticate</h4>
|
|
TODO: move to Media archive spec<br>
|
|
<table border="0" cellpadding="2" cellspacing="2" width="100%">
|
|
<tbody>
|
|
<tr>
|
|
<td valign="top"><b>Name</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">authenticate<br>
|
|
(authenticationInfo : AuthenticationInfo)<br>
|
|
: boolean<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Responsibilities</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">Check if the provided
|
|
authentication info is recognized.<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Type</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">interface<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Cross-reference</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">UC-4<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Notes</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top"><br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Exceptions</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">none</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Output</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">true if the provided
|
|
authentication is recognized, false otherwise<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Pre-conditions</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">none</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Post-conditions</b><br>
|
|
</td>
|
|
<td valign="top">none<br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<br>
|
|
<h4>Contract for Media archive : retrieveAudioClip</h4>
|
|
TODO: move to Media archive spec<br>
|
|
<table border="0" cellpadding="2" cellspacing="2" width="100%">
|
|
<tbody>
|
|
<tr>
|
|
<td valign="top"><b>Name</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">retrieveAudioClip<br>
|
|
(clipId : UniqueId)<br>
|
|
: AudioClip<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Responsibilities</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">Retrieve an AudioClip
|
|
specified by the supplied audio clip id.<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Type</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">interface<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Cross-reference</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">F1.2, UC-4<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Notes</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top"><br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Exceptions</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">if no audio clip exists
|
|
with the supplied id, indicate as an error<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Output</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">the requested audio clip<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Pre-conditions</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">none</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Post-conditions</b><br>
|
|
</td>
|
|
<td align="center" valign="top"><b>condition</b><br>
|
|
</td>
|
|
<td align="center" valign="top"><b>type</b><br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top">A new Audio clip is created and filled with the
|
|
contents of the retrieved audio clip<br>
|
|
</td>
|
|
<td valign="top">instance creation </td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top">Audio clip is entered into Local storage<br>
|
|
</td>
|
|
<td valign="top">association formed<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<br>
|
|
<h4>Contract for Local storage : authenticate</h4>
|
|
TODO: move to Local storage spec<br>
|
|
<table border="0" cellpadding="2" cellspacing="2" width="100%">
|
|
<tbody>
|
|
<tr>
|
|
<td valign="top"><b>Name</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">authenticate<br>
|
|
(authenticationInfo : AuthenticationInfo)<br>
|
|
: boolean<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Responsibilities</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">Check if the provided
|
|
authentication info is recognized.<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Type</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">interface<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Cross-reference</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">UC-4<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Notes</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top"><br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Exceptions</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">none</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Output</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">true if the provided
|
|
authentication is recognized, false otherwise<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Pre-conditions</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">none</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Post-conditions</b><br>
|
|
</td>
|
|
<td valign="top">none<br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<br>
|
|
<h4>Contract for Local storage : existsAudioClip</h4>
|
|
TODO: move to Local storage spec<br>
|
|
<table border="0" cellpadding="2" cellspacing="2" width="100%">
|
|
<tbody>
|
|
<tr>
|
|
<td valign="top"><b>Name</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">existsAudioClip<br>
|
|
(audioClipId : UniqueId)<br>
|
|
: boolean<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Responsibilities</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">Tell if an audio clip by
|
|
the provided unique id is stored in the Local storage<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Type</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">interface<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Cross-reference</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">UC-4<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Notes</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top"><br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Exceptions</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">none</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Output</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">true if an audio clip
|
|
with the provided id exists, false otherwise<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Pre-conditions</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">none</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Post-conditions</b><br>
|
|
</td>
|
|
<td valign="top">none<br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<br>
|
|
<h4>Contract for Local storage : storeAudioClip</h4>
|
|
TODO: move to Local storage spec<br>
|
|
<table border="0" cellpadding="2" cellspacing="2" width="100%">
|
|
<tbody>
|
|
<tr>
|
|
<td valign="top"><b>Name</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">storeAudioClip<br>
|
|
(audioClip : AudioClip)<br>
|
|
: void<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Responsibilities</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">Store an audio clip.<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Type</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">interface<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Cross-reference</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">UC-4<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Notes</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top"><br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Exceptions</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">none</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Output</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">none<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Pre-conditions</b><br>
|
|
</td>
|
|
<td colspan="2" rowspan="1" valign="top">none</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><b>Post-conditions</b><br>
|
|
</td>
|
|
<td valign="top">The supplied audio clip is stored in the storage.<br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
<td valign="top"><br>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<br>
|
|
<h1>Glossary</h1>
|
|
<b>playlist</b><br>
|
|
The playlist is a metafile, containing references to audio clips that
|
|
should be played, and details on how they should be played.<br>
|
|
<br>
|
|
</body>
|
|
</html>
|