added XML-RPC method removeFromSchedule to SchedulerDaemon
This commit is contained in:
parent
0b445bac8a
commit
eebd0acc87
Binary file not shown.
|
@ -7,449 +7,447 @@
|
|||
<g>
|
||||
<defs id="defs1">
|
||||
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath1">
|
||||
<path d="M10 10 L10 321 L606 321 L606 10 Z" />
|
||||
<path d="M10 10 L10 311 L596 311 L596 10 Z" />
|
||||
</clipPath>
|
||||
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath2">
|
||||
<path d="M0 0 L0 311 L596 311 L596 0 Z" />
|
||||
<path d="M0 0 L0 301 L586 301 L586 0 Z" />
|
||||
</clipPath>
|
||||
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath3">
|
||||
<path d="M-480 -10 L-480 301 L116 301 L116 -10 Z" />
|
||||
<path d="M-10 -10 L-10 291 L576 291 L576 -10 Z" />
|
||||
</clipPath>
|
||||
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath4">
|
||||
<path d="M-486 -16 L-486 295 L110 295 L110 -16 Z" />
|
||||
<path d="M-16 -16 L-16 285 L570 285 L570 -16 Z" />
|
||||
</clipPath>
|
||||
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath5">
|
||||
<path d="M-523.47412109375 -16 L-523.47412109375 295 L72.5259017944336 295 L72.5259017944336 -16 Z" />
|
||||
<path d="M-85.44290161132812 -16 L-85.44290161132812 285 L500.5570983886719 285 L500.5570983886719 -16 Z" />
|
||||
</clipPath>
|
||||
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath6">
|
||||
<path d="M-526.95458984375 -16 L-526.95458984375 295 L69.04540252685547 295 L69.04540252685547 -16 Z" />
|
||||
<path d="M-88.92330169677734 -16 L-88.92330169677734 285 L497.0766906738281 285 L497.0766906738281 -16 Z" />
|
||||
</clipPath>
|
||||
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath7">
|
||||
<path d="M-527.513671875 -71 L-527.513671875 240 L68.48629760742188 240 L68.48629760742188 -71 Z" />
|
||||
<path d="M-470 -10 L-470 291 L116 291 L116 -10 Z" />
|
||||
</clipPath>
|
||||
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath8">
|
||||
<path d="M-10 -10 L-10 301 L586 301 L586 -10 Z" />
|
||||
<path d="M-476 -16 L-476 285 L110 285 L110 -16 Z" />
|
||||
</clipPath>
|
||||
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath9">
|
||||
<path d="M-16 -16 L-16 295 L580 295 L580 -16 Z" />
|
||||
<path d="M-513.47412109375 -16 L-513.47412109375 285 L72.5259017944336 285 L72.5259017944336 -16 Z" />
|
||||
</clipPath>
|
||||
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath10">
|
||||
<path d="M-85.44290161132812 -16 L-85.44290161132812 295 L510.5570983886719 295 L510.5570983886719 -16 Z" />
|
||||
<path d="M-516.95458984375 -16 L-516.95458984375 285 L69.04540252685547 285 L69.04540252685547 -16 Z" />
|
||||
</clipPath>
|
||||
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath11">
|
||||
<path d="M-88.92330169677734 -16 L-88.92330169677734 295 L507.0766906738281 295 L507.0766906738281 -16 Z" />
|
||||
<path d="M-517.513671875 -71 L-517.513671875 230 L68.48629760742188 230 L68.48629760742188 -71 Z" />
|
||||
</clipPath>
|
||||
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath12">
|
||||
<path d="M527.513671875 71 L527.513671875 -240 L-68.48629760742188 -240 L-68.48629760742188 71 Z" />
|
||||
<path d="M517.513671875 71 L517.513671875 -230 L-68.48629760742188 -230 L-68.48629760742188 71 Z" />
|
||||
</clipPath>
|
||||
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath13">
|
||||
<path d="M-199.79840087890625 -47 L-199.79840087890625 264 L396.20159912109375 264 L396.20159912109375 -47 Z" />
|
||||
<path d="M-194.79840087890625 -47 L-194.79840087890625 254 L391.20159912109375 254 L391.20159912109375 -47 Z" />
|
||||
</clipPath>
|
||||
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath14">
|
||||
<path d="M-205.27890014648438 -47 L-205.27890014648438 264 L390.7210998535156 264 L390.7210998535156 -47 Z" />
|
||||
<path d="M-200.27890014648438 -47 L-200.27890014648438 254 L385.7210998535156 254 L385.7210998535156 -47 Z" />
|
||||
</clipPath>
|
||||
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath15">
|
||||
<path d="M-210.75929260253906 -47 L-210.75929260253906 264 L385.2406921386719 264 L385.2406921386719 -47 Z" />
|
||||
<path d="M-205.75929260253906 -47 L-205.75929260253906 254 L380.2406921386719 254 L380.2406921386719 -47 Z" />
|
||||
</clipPath>
|
||||
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath16">
|
||||
<path d="M-283.7255859375 -47 L-283.7255859375 264 L312.2744140625 264 L312.2744140625 -47 Z" />
|
||||
<path d="M-278.7255859375 -47 L-278.7255859375 254 L307.2744140625 254 L307.2744140625 -47 Z" />
|
||||
</clipPath>
|
||||
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath17">
|
||||
<path d="M-295.9501953125 -47 L-295.9501953125 264 L300.0498046875 264 L300.0498046875 -47 Z" />
|
||||
<path d="M-290.9501953125 -47 L-290.9501953125 254 L295.0498046875 254 L295.0498046875 -47 Z" />
|
||||
</clipPath>
|
||||
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath18">
|
||||
<path d="M-361.9931945800781 -47 L-361.9931945800781 264 L234.00680541992188 264 L234.00680541992188 -47 Z" />
|
||||
<path d="M-356.9931945800781 -47 L-356.9931945800781 254 L229.00680541992188 254 L229.00680541992188 -47 Z" />
|
||||
</clipPath>
|
||||
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath19">
|
||||
<path d="M-365.5703125 -47 L-365.5703125 264 L230.42970275878906 264 L230.42970275878906 -47 Z" />
|
||||
<path d="M-360.5703125 -47 L-360.5703125 254 L225.42970275878906 254 L225.42970275878906 -47 Z" />
|
||||
</clipPath>
|
||||
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath20">
|
||||
<path d="M-410.2095031738281 -47 L-410.2095031738281 264 L185.79049682617188 264 L185.79049682617188 -47 Z" />
|
||||
<path d="M-405.2095031738281 -47 L-405.2095031738281 254 L180.79049682617188 254 L180.79049682617188 -47 Z" />
|
||||
</clipPath>
|
||||
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath21">
|
||||
<path d="M527.513671875 106 L527.513671875 -205 L-68.48629760742188 -205 L-68.48629760742188 106 Z" />
|
||||
<path d="M517.513671875 106 L517.513671875 -195 L-68.48629760742188 -195 L-68.48629760742188 106 Z" />
|
||||
</clipPath>
|
||||
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath22">
|
||||
<path d="M-190.33450317382812 -82 L-190.33450317382812 229 L405.6654968261719 229 L405.6654968261719 -82 Z" />
|
||||
<path d="M-182.27029418945312 -82 L-182.27029418945312 219 L403.7297058105469 219 L403.7297058105469 -82 Z" />
|
||||
</clipPath>
|
||||
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath23">
|
||||
<path d="M-195.81500244140625 -82 L-195.81500244140625 229 L400.18499755859375 229 L400.18499755859375 -82 Z" />
|
||||
<path d="M-187.75079345703125 -82 L-187.75079345703125 219 L398.24920654296875 219 L398.24920654296875 -82 Z" />
|
||||
</clipPath>
|
||||
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath24">
|
||||
<path d="M-201.29539489746094 -82 L-201.29539489746094 229 L394.70458984375 229 L394.70458984375 -82 Z" />
|
||||
<path d="M-193.231201171875 -82 L-193.231201171875 219 L392.768798828125 219 L392.768798828125 -82 Z" />
|
||||
</clipPath>
|
||||
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath25">
|
||||
<path d="M-278.7412109375 -82 L-278.7412109375 229 L317.2587890625 229 L317.2587890625 -82 Z" />
|
||||
<path d="M-276.8053894042969 -82 L-276.8053894042969 219 L309.1946105957031 219 L309.1946105957031 -82 Z" />
|
||||
</clipPath>
|
||||
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath26">
|
||||
<path d="M-290.9657897949219 -82 L-290.9657897949219 229 L305.0342102050781 229 L305.0342102050781 -82 Z" />
|
||||
<path d="M-289.0299987792969 -82 L-289.0299987792969 219 L296.9700012207031 219 L296.9700012207031 -82 Z" />
|
||||
</clipPath>
|
||||
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath27">
|
||||
<path d="M-376.17279052734375 -82 L-376.17279052734375 229 L219.8271942138672 229 L219.8271942138672 -82 Z" />
|
||||
<path d="M-374.2370910644531 -82 L-374.2370910644531 219 L211.7628936767578 219 L211.7628936767578 -82 Z" />
|
||||
</clipPath>
|
||||
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath28">
|
||||
<path d="M-379.75 -82 L-379.75 229 L216.25 229 L216.25 -82 Z" />
|
||||
<path d="M-377.814208984375 -82 L-377.814208984375 219 L208.18580627441406 219 L208.18580627441406 -82 Z" />
|
||||
</clipPath>
|
||||
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath29">
|
||||
<path d="M-405.3218078613281 -82 L-405.3218078613281 229 L190.67820739746094 229 L190.67820739746094 -82 Z" />
|
||||
<path d="M-403.385986328125 -82 L-403.385986328125 219 L182.61399841308594 219 L182.61399841308594 -82 Z" />
|
||||
</clipPath>
|
||||
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath30">
|
||||
<path d="M-408.80218505859375 -82 L-408.80218505859375 229 L187.1977996826172 229 L187.1977996826172 -82 Z" />
|
||||
<path d="M-406.8664855957031 -82 L-406.8664855957031 219 L179.1334991455078 219 L179.1334991455078 -82 Z" />
|
||||
</clipPath>
|
||||
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath31">
|
||||
<path d="M-419.6733093261719 -82 L-419.6733093261719 229 L176.3267059326172 229 L176.3267059326172 -82 Z" />
|
||||
<path d="M-417.73748779296875 -82 L-417.73748779296875 219 L168.2624969482422 219 L168.2624969482422 -82 Z" />
|
||||
</clipPath>
|
||||
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath32">
|
||||
<path d="M527.513671875 141 L527.513671875 -170 L-68.48629760742188 -170 L-68.48629760742188 141 Z" />
|
||||
<path d="M517.513671875 141 L517.513671875 -160 L-68.48629760742188 -160 L-68.48629760742188 141 Z" />
|
||||
</clipPath>
|
||||
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath33">
|
||||
<path d="M-211.1717071533203 -117 L-211.1717071533203 194 L384.82830810546875 194 L384.82830810546875 -117 Z" />
|
||||
<path d="M-206.1717071533203 -117 L-206.1717071533203 184 L379.82830810546875 184 L379.82830810546875 -117 Z" />
|
||||
</clipPath>
|
||||
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath34">
|
||||
<path d="M-216.65220642089844 -117 L-216.65220642089844 194 L379.3478088378906 194 L379.3478088378906 -117 Z" />
|
||||
<path d="M-211.65220642089844 -117 L-211.65220642089844 184 L374.3478088378906 184 L374.3478088378906 -117 Z" />
|
||||
</clipPath>
|
||||
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath35">
|
||||
<path d="M-222.13259887695312 -117 L-222.13259887695312 194 L373.8674011230469 194 L373.8674011230469 -117 Z" />
|
||||
<path d="M-217.13259887695312 -117 L-217.13259887695312 184 L368.8674011230469 184 L368.8674011230469 -117 Z" />
|
||||
</clipPath>
|
||||
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath36">
|
||||
<path d="M-260.13848876953125 -117 L-260.13848876953125 194 L335.86151123046875 194 L335.86151123046875 -117 Z" />
|
||||
<path d="M-255.1385040283203 -117 L-255.1385040283203 184 L330.86151123046875 184 L330.86151123046875 -117 Z" />
|
||||
</clipPath>
|
||||
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath37">
|
||||
<path d="M-272.36309814453125 -117 L-272.36309814453125 194 L323.63690185546875 194 L323.63690185546875 -117 Z" />
|
||||
<path d="M-267.36309814453125 -117 L-267.36309814453125 184 L318.63690185546875 184 L318.63690185546875 -117 Z" />
|
||||
</clipPath>
|
||||
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath38">
|
||||
<path d="M-347.160888671875 -117 L-347.160888671875 194 L248.83909606933594 194 L248.83909606933594 -117 Z" />
|
||||
<path d="M-342.160888671875 -117 L-342.160888671875 184 L243.83909606933594 184 L243.83909606933594 -117 Z" />
|
||||
</clipPath>
|
||||
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath39">
|
||||
<path d="M-350.73809814453125 -117 L-350.73809814453125 194 L245.26190185546875 194 L245.26190185546875 -117 Z" />
|
||||
<path d="M-345.73809814453125 -117 L-345.73809814453125 184 L240.26190185546875 184 L240.26190185546875 -117 Z" />
|
||||
</clipPath>
|
||||
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath40">
|
||||
<path d="M-398.8362121582031 -117 L-398.8362121582031 194 L197.16380310058594 194 L197.16380310058594 -117 Z" />
|
||||
<path d="M-393.8362121582031 -117 L-393.8362121582031 184 L192.16380310058594 184 L192.16380310058594 -117 Z" />
|
||||
</clipPath>
|
||||
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath41">
|
||||
<path d="M527.513671875 176 L527.513671875 -135 L-68.48629760742188 -135 L-68.48629760742188 176 Z" />
|
||||
<path d="M517.513671875 176 L517.513671875 -125 L-68.48629760742188 -125 L-68.48629760742188 176 Z" />
|
||||
</clipPath>
|
||||
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath42">
|
||||
<path d="M-182.5518035888672 -152 L-182.5518035888672 159 L413.4482116699219 159 L413.4482116699219 -152 Z" />
|
||||
<path d="M-164.61819458007812 -152 L-164.61819458007812 149 L421.3818054199219 149 L421.3818054199219 -152 Z" />
|
||||
</clipPath>
|
||||
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath43">
|
||||
<path d="M-188.0323028564453 -152 L-188.0323028564453 159 L407.96771240234375 159 L407.96771240234375 -152 Z" />
|
||||
<path d="M-170.09869384765625 -152 L-170.09869384765625 149 L415.90130615234375 149 L415.90130615234375 -152 Z" />
|
||||
</clipPath>
|
||||
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath44">
|
||||
<path d="M-193.5126953125 -152 L-193.5126953125 159 L402.4873046875 159 L402.4873046875 -152 Z" />
|
||||
<path d="M-175.5791015625 -152 L-175.5791015625 149 L410.4208984375 149 L410.4208984375 -152 Z" />
|
||||
</clipPath>
|
||||
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath45">
|
||||
<path d="M-307.9867858886719 -152 L-307.9867858886719 159 L288.0132141113281 159 L288.0132141113281 -152 Z" />
|
||||
<path d="M-233.22169494628906 -152 L-233.22169494628906 149 L352.7782897949219 149 L352.7782897949219 -152 Z" />
|
||||
</clipPath>
|
||||
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath46">
|
||||
<path d="M-311.5639953613281 -152 L-311.5639953613281 159 L284.4360046386719 159 L284.4360046386719 -152 Z" />
|
||||
<path d="M-245.44630432128906 -152 L-245.44630432128906 149 L340.5537109375 149 L340.5537109375 -152 Z" />
|
||||
</clipPath>
|
||||
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath47">
|
||||
<path d="M-385.9696960449219 -152 L-385.9696960449219 159 L210.03030395507812 159 L210.03030395507812 -152 Z" />
|
||||
<path d="M-359.92041015625 -152 L-359.92041015625 149 L226.07960510253906 149 L226.07960510253906 -152 Z" />
|
||||
</clipPath>
|
||||
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath48">
|
||||
<path d="M-389.4501953125 -152 L-389.4501953125 159 L206.5498046875 159 L206.5498046875 -152 Z" />
|
||||
<path d="M-363.4975891113281 -152 L-363.4975891113281 149 L222.5023956298828 149 L222.5023956298828 -152 Z" />
|
||||
</clipPath>
|
||||
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath49">
|
||||
<path d="M-427.4560852050781 -152 L-427.4560852050781 159 L168.5438995361328 159 L168.5438995361328 -152 Z" />
|
||||
<path d="M-437.9032897949219 -152 L-437.9032897949219 149 L148.09669494628906 149 L148.09669494628906 -152 Z" />
|
||||
</clipPath>
|
||||
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath50">
|
||||
<path d="M527.513671875 211 L527.513671875 -100 L-68.48629760742188 -100 L-68.48629760742188 211 Z" />
|
||||
<path d="M517.513671875 211 L517.513671875 -90 L-68.48629760742188 -90 L-68.48629760742188 211 Z" />
|
||||
</clipPath>
|
||||
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath51">
|
||||
<path d="M-176.00439453125 -187 L-176.00439453125 124 L419.99560546875 124 L419.99560546875 -187 Z" />
|
||||
<path d="M-191.7476043701172 -187 L-191.7476043701172 114 L394.2524108886719 114 L394.2524108886719 -187 Z" />
|
||||
</clipPath>
|
||||
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath52">
|
||||
<path d="M-181.48489379882812 -187 L-181.48489379882812 124 L414.5151062011719 124 L414.5151062011719 -187 Z" />
|
||||
<path d="M-197.2281036376953 -187 L-197.2281036376953 114 L388.77191162109375 114 L388.77191162109375 -187 Z" />
|
||||
</clipPath>
|
||||
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath53">
|
||||
<path d="M-186.96530151367188 -187 L-186.96530151367188 124 L409.0346984863281 124 L409.0346984863281 -187 Z" />
|
||||
<path d="M-202.70849609375 -187 L-202.70849609375 114 L383.29150390625 114 L383.29150390625 -187 Z" />
|
||||
</clipPath>
|
||||
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath54">
|
||||
<path d="M-244.84959411621094 -187 L-244.84959411621094 124 L351.150390625 124 L351.150390625 -187 Z" />
|
||||
<path d="M-260.5928039550781 -187 L-260.5928039550781 114 L325.4071960449219 114 L325.4071960449219 -187 Z" />
|
||||
</clipPath>
|
||||
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath55">
|
||||
<path d="M-248.42669677734375 -187 L-248.42669677734375 124 L347.57330322265625 124 L347.57330322265625 -187 Z" />
|
||||
<path d="M-264.1698913574219 -187 L-264.1698913574219 114 L321.8301086425781 114 L321.8301086425781 -187 Z" />
|
||||
</clipPath>
|
||||
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath56">
|
||||
<path d="M-322.8324890136719 -187 L-322.8324890136719 124 L273.1675109863281 124 L273.1675109863281 -187 Z" />
|
||||
<path d="M-338.5757141113281 -187 L-338.5757141113281 114 L247.42430114746094 114 L247.42430114746094 -187 Z" />
|
||||
</clipPath>
|
||||
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath57">
|
||||
<path d="M-326.31298828125 -187 L-326.31298828125 124 L269.68701171875 124 L269.68701171875 -187 Z" />
|
||||
<path d="M-342.05621337890625 -187 L-342.05621337890625 114 L243.9438018798828 114 L243.9438018798828 -187 Z" />
|
||||
</clipPath>
|
||||
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath58">
|
||||
<path d="M-364.31878662109375 -187 L-364.31878662109375 124 L231.6811981201172 124 L231.6811981201172 -187 Z" />
|
||||
<path d="M-408.26031494140625 -187 L-408.26031494140625 114 L177.7397003173828 114 L177.7397003173828 -187 Z" />
|
||||
</clipPath>
|
||||
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath59">
|
||||
<path d="M-367.7992858886719 -187 L-367.7992858886719 124 L228.20069885253906 124 L228.20069885253906 -187 Z" />
|
||||
<path d="M517.513671875 246 L517.513671875 -55 L-68.48629760742188 -55 L-68.48629760742188 246 Z" />
|
||||
</clipPath>
|
||||
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath60">
|
||||
<path d="M-434.0033874511719 -187 L-434.0033874511719 124 L161.99659729003906 124 L161.99659729003906 -187 Z" />
|
||||
<path d="M-182.27029418945312 -222 L-182.27029418945312 79 L403.7297058105469 79 L403.7297058105469 -222 Z" />
|
||||
</clipPath>
|
||||
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath61">
|
||||
<path d="M527.513671875 246 L527.513671875 -65 L-68.48629760742188 -65 L-68.48629760742188 246 Z" />
|
||||
<path d="M-187.75079345703125 -222 L-187.75079345703125 79 L398.24920654296875 79 L398.24920654296875 -222 Z" />
|
||||
</clipPath>
|
||||
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath62">
|
||||
<path d="M-187.27029418945312 -222 L-187.27029418945312 89 L408.7297058105469 89 L408.7297058105469 -222 Z" />
|
||||
<path d="M-193.231201171875 -222 L-193.231201171875 79 L392.768798828125 79 L392.768798828125 -222 Z" />
|
||||
</clipPath>
|
||||
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath63">
|
||||
<path d="M-192.75079345703125 -222 L-192.75079345703125 89 L403.24920654296875 89 L403.24920654296875 -222 Z" />
|
||||
<path d="M-276.8053894042969 -222 L-276.8053894042969 79 L309.1946105957031 79 L309.1946105957031 -222 Z" />
|
||||
</clipPath>
|
||||
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath64">
|
||||
<path d="M-198.231201171875 -222 L-198.231201171875 89 L397.768798828125 89 L397.768798828125 -222 Z" />
|
||||
<path d="M-289.0299987792969 -222 L-289.0299987792969 79 L296.9700012207031 79 L296.9700012207031 -222 Z" />
|
||||
</clipPath>
|
||||
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath65">
|
||||
<path d="M-281.8053894042969 -222 L-281.8053894042969 89 L314.1946105957031 89 L314.1946105957031 -222 Z" />
|
||||
<path d="M-374.2370910644531 -222 L-374.2370910644531 79 L211.7628936767578 79 L211.7628936767578 -222 Z" />
|
||||
</clipPath>
|
||||
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath66">
|
||||
<path d="M-294.0299987792969 -222 L-294.0299987792969 89 L301.9700012207031 89 L301.9700012207031 -222 Z" />
|
||||
<path d="M-377.814208984375 -222 L-377.814208984375 79 L208.18580627441406 79 L208.18580627441406 -222 Z" />
|
||||
</clipPath>
|
||||
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath67">
|
||||
<path d="M-379.2370910644531 -222 L-379.2370910644531 89 L216.7628936767578 89 L216.7628936767578 -222 Z" />
|
||||
<path d="M-403.385986328125 -222 L-403.385986328125 79 L182.61399841308594 79 L182.61399841308594 -222 Z" />
|
||||
</clipPath>
|
||||
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath68">
|
||||
<path d="M-382.814208984375 -222 L-382.814208984375 89 L213.18580627441406 89 L213.18580627441406 -222 Z" />
|
||||
<path d="M-406.8664855957031 -222 L-406.8664855957031 79 L179.1334991455078 79 L179.1334991455078 -222 Z" />
|
||||
</clipPath>
|
||||
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath69">
|
||||
<path d="M-408.385986328125 -222 L-408.385986328125 89 L187.61399841308594 89 L187.61399841308594 -222 Z" />
|
||||
</clipPath>
|
||||
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath70">
|
||||
<path d="M-411.8664855957031 -222 L-411.8664855957031 89 L184.1334991455078 89 L184.1334991455078 -222 Z" />
|
||||
</clipPath>
|
||||
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath71">
|
||||
<path d="M-422.73748779296875 -222 L-422.73748779296875 89 L173.2624969482422 89 L173.2624969482422 -222 Z" />
|
||||
<path d="M-417.73748779296875 -222 L-417.73748779296875 79 L168.2624969482422 79 L168.2624969482422 -222 Z" />
|
||||
</clipPath>
|
||||
</defs>
|
||||
<g color-rendering="optimizeQuality" stroke-dasharray="5,5" stroke-miterlimit="1" color-interpolation="linearRGB" text-rendering="optimizeLegibility" stroke-linecap="butt" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,480,10)">
|
||||
<path d="M53.013648986816406 0.5 L53.013648986816406 290.5" clip-path="url(#clipPath3)" fill="none" />
|
||||
<path d="M0.5 0.5 L104.52729797363281 0.5 L104.52729797363281 25.5 L0.5 25.5 Z" stroke="none" clip-path="url(#clipPath3)" fill="white" />
|
||||
<path d="M0.5 0.5 L104.52729797363281 0.5 L104.52729797363281 25.5 L0.5 25.5 Z" stroke-dasharray="none" clip-path="url(#clipPath3)" fill="none" />
|
||||
<g color-rendering="optimizeQuality" stroke-dasharray="5,5" stroke-miterlimit="1" color-interpolation="linearRGB" text-rendering="optimizeLegibility" stroke-linecap="butt" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,10,10)">
|
||||
<path d="M79.08495330810547 0.5 L79.08495330810547 280.5" clip-path="url(#clipPath3)" fill="none" />
|
||||
</g>
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,486,16)">
|
||||
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath4)">system</text>
|
||||
<line x1="0" y1="12.5" x2="37.47412109375" y2="12.5" clip-path="url(#clipPath4)" fill="none" />
|
||||
<g color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" stroke="white" fill="white" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,10,10)">
|
||||
<path d="M0.5 0.5 L156.66990661621094 0.5 L156.66990661621094 25.5 L0.5 25.5 Z" stroke="none" clip-path="url(#clipPath3)" />
|
||||
</g>
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,523.4741,16)">
|
||||
<g color-rendering="optimizeQuality" stroke-miterlimit="1" color-interpolation="linearRGB" text-rendering="optimizeLegibility" stroke-linecap="butt" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,10,10)">
|
||||
<path d="M0.5 0.5 L156.66990661621094 0.5 L156.66990661621094 25.5 L0.5 25.5 Z" clip-path="url(#clipPath3)" fill="none" />
|
||||
</g>
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,16,16)">
|
||||
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath4)">playlistEditor</text>
|
||||
<line x1="0" y1="12.5" x2="69.44287109375" y2="12.5" clip-path="url(#clipPath4)" fill="none" />
|
||||
</g>
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,85.4429,16)">
|
||||
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath5)">:</text>
|
||||
<line x1="0" y1="12.5" x2="3.48046875" y2="12.5" clip-path="url(#clipPath5)" fill="none" />
|
||||
</g>
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,526.9546,16)">
|
||||
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath6)">Scheduler</text>
|
||||
<line x1="0" y1="12.5" x2="52.07275390625" y2="12.5" clip-path="url(#clipPath6)" fill="none" />
|
||||
</g>
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" stroke-miterlimit="1" color-interpolation="linearRGB" text-rendering="optimizeLegibility" stroke="white" fill="white" stroke-linecap="butt" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,527.5137,71)">
|
||||
<path d="M0.5 0.5 L9.5 0.5 L9.5 229.5 L0.5 229.5 Z" stroke="none" clip-path="url(#clipPath7)" />
|
||||
<path d="M0.5 0.5 L9.5 0.5 L9.5 229.5 L0.5 229.5 Z" stroke="black" clip-path="url(#clipPath7)" fill="none" />
|
||||
</g>
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" stroke-miterlimit="1" color-interpolation="linearRGB" text-rendering="optimizeLegibility" stroke="white" fill="white" stroke-linecap="butt" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,10,10)">
|
||||
<path d="M79.08495330810547 0.5 L79.08495330810547 290.5" stroke="none" clip-path="url(#clipPath8)" />
|
||||
<path d="M79.08495330810547 0.5 L79.08495330810547 290.5" stroke-dasharray="5,5" stroke="black" clip-path="url(#clipPath8)" fill="none" />
|
||||
<path d="M0.5 0.5 L156.66990661621094 0.5 L156.66990661621094 25.5 L0.5 25.5 Z" stroke-dasharray="5,5" stroke="none" clip-path="url(#clipPath8)" />
|
||||
<path d="M0.5 0.5 L156.66990661621094 0.5 L156.66990661621094 25.5 L0.5 25.5 Z" stroke="black" clip-path="url(#clipPath8)" fill="none" />
|
||||
</g>
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,16,16)">
|
||||
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath9)">playlistEditor</text>
|
||||
<line x1="0" y1="12.5" x2="69.44287109375" y2="12.5" clip-path="url(#clipPath9)" fill="none" />
|
||||
</g>
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,85.4429,16)">
|
||||
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath10)">:</text>
|
||||
<line x1="0" y1="12.5" x2="3.48046875" y2="12.5" clip-path="url(#clipPath10)" fill="none" />
|
||||
</g>
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,88.9233,16)">
|
||||
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath11)">Playlist editor</text>
|
||||
<line x1="0" y1="12.5" x2="72.24658203125" y2="12.5" clip-path="url(#clipPath11)" fill="none" />
|
||||
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath6)">Playlist editor</text>
|
||||
<line x1="0" y1="12.5" x2="72.24658203125" y2="12.5" clip-path="url(#clipPath6)" fill="none" />
|
||||
</g>
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" stroke="white" fill="white" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,470,10)">
|
||||
<path d="M53.013648986816406 0.5 L53.013648986816406 280.5" stroke="none" clip-path="url(#clipPath7)" />
|
||||
</g>
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" stroke-dasharray="5,5" stroke-miterlimit="1" color-interpolation="linearRGB" text-rendering="optimizeLegibility" stroke-linecap="butt" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,470,10)">
|
||||
<path d="M53.013648986816406 0.5 L53.013648986816406 280.5" clip-path="url(#clipPath7)" fill="none" />
|
||||
</g>
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" stroke="white" fill="white" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,470,10)">
|
||||
<path d="M0.5 0.5 L104.52729797363281 0.5 L104.52729797363281 25.5 L0.5 25.5 Z" stroke="none" clip-path="url(#clipPath7)" />
|
||||
</g>
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" stroke-miterlimit="1" color-interpolation="linearRGB" text-rendering="optimizeLegibility" stroke-linecap="butt" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,470,10)">
|
||||
<path d="M0.5 0.5 L104.52729797363281 0.5 L104.52729797363281 25.5 L0.5 25.5 Z" clip-path="url(#clipPath7)" fill="none" />
|
||||
<text x="0" y="11" xml:space="preserve" stroke-miterlimit="10" stroke="none" clip-path="url(#clipPath8)" stroke-linecap="square" transform="matrix(1,0,0,1,6,6)">system</text>
|
||||
<line x1="0" y1="12.5" x2="37.47412109375" y2="12.5" stroke-miterlimit="10" clip-path="url(#clipPath8)" fill="none" stroke-linecap="square" transform="matrix(1,0,0,1,6,6)" />
|
||||
</g>
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,513.4741,16)">
|
||||
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath9)">:</text>
|
||||
<line x1="0" y1="12.5" x2="3.48046875" y2="12.5" clip-path="url(#clipPath9)" fill="none" />
|
||||
</g>
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,516.9546,16)">
|
||||
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath10)">Scheduler</text>
|
||||
<line x1="0" y1="12.5" x2="52.07275390625" y2="12.5" clip-path="url(#clipPath10)" fill="none" />
|
||||
</g>
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" stroke="white" fill="white" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,517.5137,71)">
|
||||
<path d="M0.5 0.5 L9.5 0.5 L9.5 219.5 L0.5 219.5 Z" stroke="none" clip-path="url(#clipPath11)" />
|
||||
</g>
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" stroke-miterlimit="1" color-interpolation="linearRGB" text-rendering="optimizeLegibility" stroke-linecap="butt" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,517.5137,71)">
|
||||
<path d="M0.5 0.5 L9.5 0.5 L9.5 219.5 L0.5 219.5 Z" clip-path="url(#clipPath11)" fill="none" />
|
||||
</g>
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" stroke-miterlimit="1" color-interpolation="linearRGB" text-rendering="optimizeLegibility" stroke-linecap="butt" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,-10,-10)">
|
||||
<path d="M98.58499908447266 81 L537.513671875 81" clip-path="url(#clipPath1)" fill="none" />
|
||||
<path d="M12 -6 L0 0 L12 6 Z" stroke="none" clip-path="url(#clipPath12)" transform="matrix(-1,-4.163336342344337E-15,4.163336342344337E-15,-1,537.5137,81)" />
|
||||
<path d="M12 -6 L0 0 L12 6 Z" stroke-miterlimit="10" clip-path="url(#clipPath12)" fill="none" stroke-linecap="square" transform="matrix(-1,-4.163336342344337E-15,4.163336342344337E-15,-1,537.5137,81)" />
|
||||
<path d="M98.58499908447266 81 L527.513671875 81" clip-path="url(#clipPath1)" fill="none" />
|
||||
<path d="M12 -6 L0 0 L12 6 Z" stroke-miterlimit="10" stroke="none" clip-path="url(#clipPath12)" stroke-linecap="square" transform="matrix(-1,0,0,-1,527.5137,81)" />
|
||||
<path d="M12 -6 L0 0 L12 6 Z" stroke-miterlimit="10" clip-path="url(#clipPath12)" fill="none" stroke-linecap="square" transform="matrix(-1,0,0,-1,527.5137,81)" />
|
||||
</g>
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,199.7984,47)">
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,194.7984,47)">
|
||||
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath13)"> </text>
|
||||
</g>
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,205.2789,47)">
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,200.2789,47)">
|
||||
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath14)">:</text>
|
||||
</g>
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,210.7593,47)">
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,205.7593,47)">
|
||||
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath15)">authenticated</text>
|
||||
</g>
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,283.7256,47)">
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,278.7256,47)">
|
||||
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath16)">:=</text>
|
||||
</g>
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,295.9502,47)">
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,290.9502,47)">
|
||||
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath17)">authenticate</text>
|
||||
</g>
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,361.9932,47)">
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,356.9932,47)">
|
||||
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath18)">(</text>
|
||||
</g>
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,365.5703,47)">
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,360.5703,47)">
|
||||
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath19)">authInfo</text>
|
||||
</g>
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,410.2095,47)">
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,405.2095,47)">
|
||||
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath20)">)</text>
|
||||
</g>
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" stroke-miterlimit="1" color-interpolation="linearRGB" text-rendering="optimizeLegibility" stroke-linecap="butt" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,-10,-10)">
|
||||
<path d="M98.58499908447266 116 L537.513671875 116" clip-path="url(#clipPath1)" fill="none" />
|
||||
<path d="M12 -6 L0 0 L12 6 Z" stroke="none" clip-path="url(#clipPath21)" transform="matrix(-1,-5.10702591327572E-15,5.10702591327572E-15,-1,537.5137,116)" />
|
||||
<path d="M12 -6 L0 0 L12 6 Z" stroke-miterlimit="10" clip-path="url(#clipPath21)" fill="none" stroke-linecap="square" transform="matrix(-1,-5.10702591327572E-15,5.10702591327572E-15,-1,537.5137,116)" />
|
||||
<path d="M98.58499908447266 116 L527.513671875 116" clip-path="url(#clipPath1)" fill="none" />
|
||||
<path d="M12 -6 L0 0 L12 6 Z" stroke-miterlimit="10" stroke="none" clip-path="url(#clipPath21)" stroke-linecap="square" transform="matrix(-1,0,0,-1,527.5137,116)" />
|
||||
<path d="M12 -6 L0 0 L12 6 Z" stroke-miterlimit="10" clip-path="url(#clipPath21)" fill="none" stroke-linecap="square" transform="matrix(-1,0,0,-1,527.5137,116)" />
|
||||
</g>
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,190.3345,82)">
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,182.2703,82)">
|
||||
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath22)"> </text>
|
||||
</g>
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,195.815,82)">
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,187.7508,82)">
|
||||
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath23)">:</text>
|
||||
</g>
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,201.2954,82)">
|
||||
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath24)">schedulEntries</text>
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,193.2312,82)">
|
||||
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath24)">scheduleEntries</text>
|
||||
</g>
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,278.7412,82)">
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,276.8054,82)">
|
||||
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath25)">:=</text>
|
||||
</g>
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,290.9658,82)">
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,289.03,82)">
|
||||
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath26)">displaySchedule</text>
|
||||
</g>
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,376.1728,82)">
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,374.2371,82)">
|
||||
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath27)">(</text>
|
||||
</g>
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,379.75,82)">
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,377.8142,82)">
|
||||
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath28)">from</text>
|
||||
</g>
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,405.3218,82)">
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,403.38599999999997,82)">
|
||||
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath29)">,</text>
|
||||
</g>
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,408.80219999999997,82)">
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,406.8665,82)">
|
||||
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath30)">to</text>
|
||||
</g>
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,419.67330000000004,82)">
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,417.7375,82)">
|
||||
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath31)">)</text>
|
||||
</g>
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" stroke-miterlimit="1" color-interpolation="linearRGB" text-rendering="optimizeLegibility" stroke-linecap="butt" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,-10,-10)">
|
||||
<path d="M98.58499908447266 151 L537.513671875 151" clip-path="url(#clipPath1)" fill="none" />
|
||||
<path d="M12 -6 L0 0 L12 6 Z" stroke="none" clip-path="url(#clipPath32)" transform="matrix(-1,-1.1102230246251565E-16,1.1102230246251565E-16,-1,537.5137,151)" />
|
||||
<path d="M12 -6 L0 0 L12 6 Z" stroke-miterlimit="10" clip-path="url(#clipPath32)" fill="none" stroke-linecap="square" transform="matrix(-1,-1.1102230246251565E-16,1.1102230246251565E-16,-1,537.5137,151)" />
|
||||
<path d="M98.58499908447266 151 L527.513671875 151" clip-path="url(#clipPath1)" fill="none" />
|
||||
<path d="M12 -6 L0 0 L12 6 Z" stroke-miterlimit="10" stroke="none" clip-path="url(#clipPath32)" stroke-linecap="square" transform="matrix(-1,0,0,-1,527.5137,151)" />
|
||||
<path d="M12 -6 L0 0 L12 6 Z" stroke-miterlimit="10" clip-path="url(#clipPath32)" fill="none" stroke-linecap="square" transform="matrix(-1,0,0,-1,527.5137,151)" />
|
||||
</g>
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,211.1717,117)">
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,206.1717,117)">
|
||||
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath33)"> </text>
|
||||
</g>
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,216.6522,117)">
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,211.6522,117)">
|
||||
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath34)">:</text>
|
||||
</g>
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,222.1326,117)">
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,217.1326,117)">
|
||||
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath35)">playlist</text>
|
||||
</g>
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,260.1385,117)">
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,255.1385,117)">
|
||||
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath36)">:=</text>
|
||||
</g>
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,272.3631,117)">
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,267.3631,117)">
|
||||
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath37)">displayPlaylist</text>
|
||||
</g>
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,347.16089999999997,117)">
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,342.16089999999997,117)">
|
||||
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath38)">(</text>
|
||||
</g>
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,350.73810000000003,117)">
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,345.73810000000003,117)">
|
||||
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath39)">playlistId</text>
|
||||
</g>
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,398.83619999999996,117)">
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,393.83619999999996,117)">
|
||||
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath40)">)</text>
|
||||
</g>
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" stroke-miterlimit="1" color-interpolation="linearRGB" text-rendering="optimizeLegibility" stroke-linecap="butt" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,-10,-10)">
|
||||
<path d="M98.58499908447266 186 L537.513671875 186" clip-path="url(#clipPath1)" fill="none" />
|
||||
<path d="M12 -6 L0 0 L12 6 Z" stroke="none" clip-path="url(#clipPath41)" transform="matrix(-1,1.1879386363489175E-14,-1.1879386363489175E-14,-1,537.5137,186)" />
|
||||
<path d="M12 -6 L0 0 L12 6 Z" stroke-miterlimit="10" clip-path="url(#clipPath41)" fill="none" stroke-linecap="square" transform="matrix(-1,1.1879386363489175E-14,-1.1879386363489175E-14,-1,537.5137,186)" />
|
||||
<path d="M98.58499908447266 186 L527.513671875 186" clip-path="url(#clipPath1)" fill="none" />
|
||||
<path d="M12 -6 L0 0 L12 6 Z" stroke-miterlimit="10" stroke="none" clip-path="url(#clipPath41)" stroke-linecap="square" transform="matrix(-1,0,0,-1,527.5137,186)" />
|
||||
<path d="M12 -6 L0 0 L12 6 Z" stroke-miterlimit="10" clip-path="url(#clipPath41)" fill="none" stroke-linecap="square" transform="matrix(-1,0,0,-1,527.5137,186)" />
|
||||
</g>
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,182.5518,152)">
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,164.6182,152)">
|
||||
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath42)"> </text>
|
||||
</g>
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,188.0323,152)">
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,170.0987,152)">
|
||||
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath43)">:</text>
|
||||
</g>
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,193.5127,152)">
|
||||
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath44)">removeFromSchedule</text>
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,175.5791,152)">
|
||||
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath44)">isRemoved</text>
|
||||
</g>
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,307.9868,152)">
|
||||
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath45)">(</text>
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,233.2217,152)">
|
||||
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath45)">:=</text>
|
||||
</g>
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,311.56399999999996,152)">
|
||||
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath46)">scheduleEntry</text>
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,245.4463,152)">
|
||||
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath46)">removeFromSchedule</text>
|
||||
</g>
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,385.9697,152)">
|
||||
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath47)">,</text>
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,359.9204,152)">
|
||||
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath47)">(</text>
|
||||
</g>
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,389.4502,152)">
|
||||
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath48)">playlist</text>
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,363.49760000000003,152)">
|
||||
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath48)">scheduleEntry</text>
|
||||
</g>
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,427.4561,152)">
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,437.90330000000006,152)">
|
||||
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath49)">)</text>
|
||||
</g>
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" stroke-miterlimit="1" color-interpolation="linearRGB" text-rendering="optimizeLegibility" stroke-linecap="butt" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,-10,-10)">
|
||||
<path d="M98.58499908447266 221 L537.513671875 221" clip-path="url(#clipPath1)" fill="none" />
|
||||
<path d="M12 -6 L0 0 L12 6 Z" stroke="none" clip-path="url(#clipPath50)" transform="matrix(-1,-9.048317650695026E-15,9.048317650695026E-15,-1,537.5137,221)" />
|
||||
<path d="M12 -6 L0 0 L12 6 Z" stroke-miterlimit="10" clip-path="url(#clipPath50)" fill="none" stroke-linecap="square" transform="matrix(-1,-9.048317650695026E-15,9.048317650695026E-15,-1,537.5137,221)" />
|
||||
<path d="M98.58499908447266 221 L527.513671875 221" clip-path="url(#clipPath1)" fill="none" />
|
||||
<path d="M12 -6 L0 0 L12 6 Z" stroke-miterlimit="10" stroke="none" clip-path="url(#clipPath50)" stroke-linecap="square" transform="matrix(-1,0,0,-1,527.5137,221)" />
|
||||
<path d="M12 -6 L0 0 L12 6 Z" stroke-miterlimit="10" clip-path="url(#clipPath50)" fill="none" stroke-linecap="square" transform="matrix(-1,0,0,-1,527.5137,221)" />
|
||||
</g>
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,176.0044,187)">
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,191.7476,187)">
|
||||
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath51)"> </text>
|
||||
</g>
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,181.4849,187)">
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,197.2281,187)">
|
||||
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath52)">:</text>
|
||||
</g>
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,186.9653,187)">
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,202.70850000000002,187)">
|
||||
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath53)">reschedule</text>
|
||||
</g>
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,244.8496,187)">
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,260.5928,187)">
|
||||
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath54)">(</text>
|
||||
</g>
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,248.4267,187)">
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,264.1699,187)">
|
||||
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath55)">scheduleEntry</text>
|
||||
</g>
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,322.8325,187)">
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,338.5757,187)">
|
||||
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath56)">,</text>
|
||||
</g>
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,326.313,187)">
|
||||
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath57)">playlist</text>
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,342.0562,187)">
|
||||
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath57)">newPlaytime</text>
|
||||
</g>
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,364.3188,187)">
|
||||
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath58)">,</text>
|
||||
</g>
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,367.7993,187)">
|
||||
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath59)">newPlaytime</text>
|
||||
</g>
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,434.0034,187)">
|
||||
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath60)">)</text>
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,408.26030000000003,187)">
|
||||
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath58)">)</text>
|
||||
</g>
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" stroke-miterlimit="1" color-interpolation="linearRGB" text-rendering="optimizeLegibility" stroke-linecap="butt" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,-10,-10)">
|
||||
<path d="M98.58499908447266 256 L537.513671875 256" clip-path="url(#clipPath1)" fill="none" />
|
||||
<path d="M12 -6 L0 0 L12 6 Z" stroke="none" clip-path="url(#clipPath61)" transform="matrix(-1,1.1268763699945339E-14,-1.1268763699945339E-14,-1,537.5137,256)" />
|
||||
<path d="M12 -6 L0 0 L12 6 Z" stroke-miterlimit="10" clip-path="url(#clipPath61)" fill="none" stroke-linecap="square" transform="matrix(-1,1.1268763699945339E-14,-1.1268763699945339E-14,-1,537.5137,256)" />
|
||||
<path d="M98.58499908447266 256 L527.513671875 256" clip-path="url(#clipPath1)" fill="none" />
|
||||
<path d="M12 -6 L0 0 L12 6 Z" stroke-miterlimit="10" stroke="none" clip-path="url(#clipPath59)" stroke-linecap="square" transform="matrix(-1,0,0,-1,527.5137,256)" />
|
||||
<path d="M12 -6 L0 0 L12 6 Z" stroke-miterlimit="10" clip-path="url(#clipPath59)" fill="none" stroke-linecap="square" transform="matrix(-1,0,0,-1,527.5137,256)" />
|
||||
</g>
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,187.2703,222)">
|
||||
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath62)"> </text>
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,182.2703,222)">
|
||||
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath60)"> </text>
|
||||
</g>
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,192.7508,222)">
|
||||
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath63)">:</text>
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,187.7508,222)">
|
||||
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath61)">:</text>
|
||||
</g>
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,198.2312,222)">
|
||||
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath64)">scheduleEntries</text>
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,193.2312,222)">
|
||||
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath62)">scheduleEntries</text>
|
||||
</g>
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,281.8054,222)">
|
||||
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath65)">:=</text>
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,276.8054,222)">
|
||||
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath63)">:=</text>
|
||||
</g>
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,294.03,222)">
|
||||
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath66)">displaySchedule</text>
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,289.03,222)">
|
||||
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath64)">displaySchedule</text>
|
||||
</g>
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,379.2371,222)">
|
||||
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath67)">(</text>
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,374.2371,222)">
|
||||
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath65)">(</text>
|
||||
</g>
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,382.8142,222)">
|
||||
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath68)">from</text>
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,377.8142,222)">
|
||||
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath66)">from</text>
|
||||
</g>
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,408.38599999999997,222)">
|
||||
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath69)">,</text>
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,403.38599999999997,222)">
|
||||
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath67)">,</text>
|
||||
</g>
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,411.8665,222)">
|
||||
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath70)">to</text>
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,406.8665,222)">
|
||||
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath68)">to</text>
|
||||
</g>
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,422.7375,222)">
|
||||
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath71)">)</text>
|
||||
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,417.7375,222)">
|
||||
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath69)">)</text>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
|
Before Width: | Height: | Size: 43 KiB After Width: | Height: | Size: 44 KiB |
File diff suppressed because it is too large
Load Diff
Before Width: | Height: | Size: 125 KiB After Width: | Height: | Size: 120 KiB |
|
@ -14,8 +14,9 @@ Development Loan Fund</a>, under the GNU <a
|
|||
href="http://www.gnu.org/licenses/gpl.html">GPL</a>.<br>
|
||||
<ul>
|
||||
<li>Author: $Author: maroy $</li>
|
||||
<li>Version: $Revision: 1.1 $</li>
|
||||
<li>Location: $Source: /home/paul/cvs2svn-livesupport/newcvsrepo/livesupport/doc/model/Scheduler/index.html,v $</li>
|
||||
<li>Version: $Revision: 1.2 $</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
|
||||
|
@ -42,7 +43,7 @@ playlists on a local audio interface. Specific goals include:<br>
|
|||
<h2>System functions</h2>
|
||||
The main system functions are described below. There are three
|
||||
categories for these functions:<br>
|
||||
<table width="100%" border="0" cellspacing="2" cellpadding="2">
|
||||
<table border="0" cellpadding="2" cellspacing="2" width="100%">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th valign="top">function category<br>
|
||||
|
@ -73,7 +74,7 @@ that it is performed<br>
|
|||
</table>
|
||||
<br>
|
||||
<br>
|
||||
<table width="100%" border="0" cellspacing="2" cellpadding="2">
|
||||
<table border="0" cellpadding="2" cellspacing="2" width="100%">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th valign="top">ref#<br>
|
||||
|
@ -218,7 +219,7 @@ reasons<br>
|
|||
<h2>System attributes</h2>
|
||||
Generic attributes<br>
|
||||
<br>
|
||||
<table width="100%" border="0" cellspacing="2" cellpadding="2">
|
||||
<table border="0" cellpadding="2" cellspacing="2" width="100%">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th valign="top">ref#<br>
|
||||
|
@ -286,7 +287,7 @@ which focuses only on audio aspects of SMIL.<br>
|
|||
<br>
|
||||
Attributes related to system functions<br>
|
||||
<br>
|
||||
<table width="100%" border="0" cellspacing="2" cellpadding="2">
|
||||
<table border="0" cellpadding="2" cellspacing="2" width="100%">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th valign="top">ref#<br>
|
||||
|
@ -385,9 +386,9 @@ 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" width="700" height="800"></object>
|
||||
data="EssentialUseCases.svg" height="800" width="700"></object>
|
||||
<h3>UC-1 Upload playlist</h3>
|
||||
<table width="100%" border="0" cellspacing="2" cellpadding="2">
|
||||
<table border="0" cellpadding="2" cellspacing="2" width="100%">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td valign="top"><b>ref#</b> </td>
|
||||
|
@ -420,7 +421,7 @@ architecture-specific considerations.<br>
|
|||
</tbody>
|
||||
</table>
|
||||
<h4>Typical course of events</h4>
|
||||
<table width="100%" border="0" cellspacing="2" cellpadding="2">
|
||||
<table border="0" cellpadding="2" cellspacing="2" width="100%">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th colspan="2" valign="top">actor action <br>
|
||||
|
@ -499,7 +500,7 @@ notified and the use case ends.<br>
|
|||
</ul>
|
||||
<h3>UC-2 Manage schedule<br>
|
||||
</h3>
|
||||
<table width="100%" border="0" cellspacing="2" cellpadding="2">
|
||||
<table border="0" cellpadding="2" cellspacing="2" width="100%">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td valign="top"><b>ref#</b><br>
|
||||
|
@ -544,7 +545,7 @@ decides to, he might remove or re-schedule some of these playlists. </td>
|
|||
<br>
|
||||
<h4>Typical course of events<br>
|
||||
</h4>
|
||||
<table width="100%" border="0" cellspacing="2" cellpadding="2">
|
||||
<table border="0" cellpadding="2" cellspacing="2" width="100%">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th colspan="2" valign="top">actor action <br>
|
||||
|
@ -655,7 +656,7 @@ again<br>
|
|||
</ul>
|
||||
<h3>UC-3 Manage playlists<br>
|
||||
</h3>
|
||||
<table width="100%" border="0" cellspacing="2" cellpadding="2">
|
||||
<table border="0" cellpadding="2" cellspacing="2" width="100%">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td valign="top"><b>ref#</b><br>
|
||||
|
@ -698,7 +699,7 @@ playlists. If he decides so, he might delete some of these playlists. </td>
|
|||
<br>
|
||||
<h4>Typical course of events<br>
|
||||
</h4>
|
||||
<table width="100%" border="0" cellspacing="2" cellpadding="2">
|
||||
<table border="0" cellpadding="2" cellspacing="2" width="100%">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th colspan="2" valign="top">actor action <br>
|
||||
|
@ -781,7 +782,7 @@ user is notified, and the list of playlists is displayed to the user.<br>
|
|||
</ul>
|
||||
<h3>UC-4 Retrieve remote files<br>
|
||||
</h3>
|
||||
<table width="100%" border="0" cellspacing="2" cellpadding="2">
|
||||
<table border="0" cellpadding="2" cellspacing="2" width="100%">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td valign="top"><b>ref#</b> </td>
|
||||
|
@ -830,7 +831,7 @@ 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 width="100%" border="0" cellspacing="2" cellpadding="2">
|
||||
<table border="0" cellpadding="2" cellspacing="2" width="100%">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th colspan="2" valign="top">actor action <br>
|
||||
|
@ -958,7 +959,7 @@ audio clip. the system is notified and the use case ends.<br>
|
|||
</ul>
|
||||
<h3>UC-5 Review play log<br>
|
||||
</h3>
|
||||
<table width="100%" border="0" cellspacing="2" cellpadding="2">
|
||||
<table border="0" cellpadding="2" cellspacing="2" width="100%">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td valign="top"><b>ref#</b> </td>
|
||||
|
@ -995,7 +996,7 @@ reasons. </td>
|
|||
</table>
|
||||
<h4>Typical course of events<br>
|
||||
</h4>
|
||||
<table width="100%" border="0" cellspacing="2" cellpadding="2">
|
||||
<table border="0" cellpadding="2" cellspacing="2" width="100%">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th colspan="2" valign="top">actor action <br>
|
||||
|
@ -1074,7 +1075,7 @@ authenticated. the user is notified and the use case ends.</li>
|
|||
<br>
|
||||
<h3>UC-6 Create playlist<br>
|
||||
</h3>
|
||||
<table width="100%" border="0" cellspacing="2" cellpadding="2">
|
||||
<table border="0" cellpadding="2" cellspacing="2" width="100%">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td valign="top"><b>ref#</b> </td>
|
||||
|
@ -1116,7 +1117,7 @@ on the system.<br>
|
|||
</table>
|
||||
<h4>Typical course of events<br>
|
||||
</h4>
|
||||
<table width="100%" border="0" cellspacing="2" cellpadding="2">
|
||||
<table border="0" cellpadding="2" cellspacing="2" width="100%">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th colspan="2" valign="top">actor action <br>
|
||||
|
@ -1196,7 +1197,7 @@ authenticated. the user is notified and the use case ends.</li>
|
|||
<br>
|
||||
<h3>UC-7 Edit playlist<br>
|
||||
</h3>
|
||||
<table width="100%" border="0" cellspacing="2" cellpadding="2">
|
||||
<table border="0" cellpadding="2" cellspacing="2" width="100%">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td valign="top"><b>ref#</b> </td>
|
||||
|
@ -1237,7 +1238,7 @@ professionals to edit the playlsits on the system.<br>
|
|||
</table>
|
||||
<h4>Typical course of events<br>
|
||||
</h4>
|
||||
<table width="100%" border="0" cellspacing="2" cellpadding="2">
|
||||
<table border="0" cellpadding="2" cellspacing="2" width="100%">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th colspan="2" valign="top">actor action <br>
|
||||
|
@ -1391,7 +1392,7 @@ shown.</li>
|
|||
<br>
|
||||
<h3>UC-8 Start/stop scheduler<br>
|
||||
</h3>
|
||||
<table width="100%" border="0" cellspacing="2" cellpadding="2">
|
||||
<table border="0" cellpadding="2" cellspacing="2" width="100%">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td valign="top"><b>ref#</b> </td>
|
||||
|
@ -1432,7 +1433,7 @@ deamon with the same script.<br>
|
|||
</table>
|
||||
<h4>Typical course of events<br>
|
||||
</h4>
|
||||
<table width="100%" border="0" cellspacing="2" cellpadding="2">
|
||||
<table border="0" cellpadding="2" cellspacing="2" width="100%">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th colspan="2" valign="top">actor action <br>
|
||||
|
@ -1500,11 +1501,11 @@ 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" width="950" height="1000"></object>
|
||||
data="Concepts.svg" height="1000" width="950"></object>
|
||||
<br>
|
||||
<h3>Concepts</h3>
|
||||
<br>
|
||||
<table width="100%" border="0" cellspacing="2" cellpadding="2">
|
||||
<table border="0" cellpadding="2" cellspacing="2" width="100%">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th valign="top">concept<br>
|
||||
|
@ -1643,7 +1644,7 @@ stopping the scheduler daemon.<br>
|
|||
<br>
|
||||
<h3>Associations</h3>
|
||||
<br>
|
||||
<table width="100%" border="0" cellspacing="2" cellpadding="2">
|
||||
<table border="0" cellpadding="2" cellspacing="2" width="100%">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th valign="top">source<br>
|
||||
|
@ -1898,43 +1899,43 @@ is discussed in this section.<br>
|
|||
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" width="550" height="200"></object>
|
||||
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" width="650" height="350"></object>
|
||||
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" width="650" height="300"></object>
|
||||
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" width="750" height="300"></object>
|
||||
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" width="650" height="250"></object>
|
||||
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" width="650" height="250"></object>
|
||||
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" width="800" height="500"></object>
|
||||
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" width="600" height="200"></object>
|
||||
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" width="550" height="450"></object>
|
||||
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>
|
||||
|
@ -1942,7 +1943,7 @@ following contracts are defined.<br>
|
|||
See Authentication : authenticate<br>
|
||||
<br>
|
||||
<h4>Contract for Scheduler : uploadPlaylist</h4>
|
||||
<table width="100%" border="0" cellspacing="2" cellpadding="2">
|
||||
<table border="0" cellpadding="2" cellspacing="2" width="100%">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td valign="top"><b>Name</b><br>
|
||||
|
@ -1950,7 +1951,7 @@ See Authentication : authenticate<br>
|
|||
<td colspan="2" rowspan="1" valign="top">uploadPlaylist<br>
|
||||
(playlist : Playlist,<br>
|
||||
playtime: Schedule)<br>
|
||||
: void<br>
|
||||
: UniqueId<br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -1990,7 +1991,8 @@ an error<br>
|
|||
<tr>
|
||||
<td valign="top"><b>Output</b><br>
|
||||
</td>
|
||||
<td colspan="2" rowspan="1" valign="top">none<br>
|
||||
<td colspan="2" rowspan="1" valign="top">the unique id of the
|
||||
ScheduleEntry created with this upload<br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -2051,7 +2053,7 @@ supplied schedule<br>
|
|||
</table>
|
||||
<br>
|
||||
<h4>Contract for Scheduler : displaySchedule</h4>
|
||||
<table width="100%" border="0" cellspacing="2" cellpadding="2">
|
||||
<table border="0" cellpadding="2" cellspacing="2" width="100%">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td valign="top"><b>Name</b><br>
|
||||
|
@ -2125,7 +2127,7 @@ the specified time period.<br>
|
|||
</table>
|
||||
<br>
|
||||
<h4>Contract for Scheduler : displayPlaylist</h4>
|
||||
<table width="100%" border="0" cellspacing="2" cellpadding="2">
|
||||
<table border="0" cellpadding="2" cellspacing="2" width="100%">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td valign="top"><b>Name</b><br>
|
||||
|
@ -2198,7 +2200,7 @@ for the specified playlistId, indicate as an error.<br>
|
|||
</table>
|
||||
<br>
|
||||
<h4>Contract for Scheduler : deletePlaylist</h4>
|
||||
<table width="100%" border="0" cellspacing="2" cellpadding="2">
|
||||
<table border="0" cellpadding="2" cellspacing="2" width="100%">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td valign="top"><b>Name</b><br>
|
||||
|
@ -2298,15 +2300,14 @@ error.<br>
|
|||
<br>
|
||||
<h4>Contract for Scheduler : removeFromSchedule<br>
|
||||
</h4>
|
||||
<table width="100%" border="0" cellspacing="2" cellpadding="2">
|
||||
<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>
|
||||
(scheduleEntry : Schedule entry,<br>
|
||||
playlist : Playlist)<br>
|
||||
: void<br>
|
||||
(scheduleEntryId : UniqueId)<br>
|
||||
: bool<br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -2337,15 +2338,16 @@ playlist from a schedule entry<br>
|
|||
<tr>
|
||||
<td valign="top"><b>Exceptions</b><br>
|
||||
</td>
|
||||
<td colspan="2" rowspan="1" valign="top">If the specified
|
||||
scheduleEntry does not exist, indicate as an error.<br>
|
||||
If the specified playlist does not exist, indicate as an error.<br>
|
||||
<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">none<br>
|
||||
<td colspan="2" rowspan="1" valign="top">true if the specified
|
||||
entry was removed, false if it did not exist.<br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -2370,6 +2372,15 @@ is removed.<br>
|
|||
<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>
|
||||
|
@ -2383,16 +2394,15 @@ is removed.<br>
|
|||
<br>
|
||||
<h4>Contract for Scheduler : reschedule<br>
|
||||
</h4>
|
||||
<table width="100%" border="0" cellspacing="2" cellpadding="2">
|
||||
<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>
|
||||
(scheduleEntry : Schedule entry,<br>
|
||||
playlist : Playlist,<br>
|
||||
(scheduleEntryId : UniqueId,<br>
|
||||
playtime : TimeStamp)<br>
|
||||
: void<br>
|
||||
: bool<br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -2423,9 +2433,9 @@ playlist is scheduled to play.<br>
|
|||
<tr>
|
||||
<td valign="top"><b>Exceptions</b><br>
|
||||
</td>
|
||||
<td colspan="2" rowspan="1" valign="top">If the specified
|
||||
scheduleEntry does not exist, indicate as an error.<br>
|
||||
If the specified playlist does not exist, indicate as an error.<br>
|
||||
<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>
|
||||
|
@ -2433,7 +2443,7 @@ an error.<br>
|
|||
<tr>
|
||||
<td valign="top"><b>Output</b><br>
|
||||
</td>
|
||||
<td colspan="2" rowspan="1" valign="top">none<br>
|
||||
<td colspan="2" rowspan="1" valign="top">false on errors<br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -2470,7 +2480,7 @@ to the supplied playtime.<br>
|
|||
</table>
|
||||
<br>
|
||||
<h4>Contract for Scheduler : displayPlaylists</h4>
|
||||
<table width="100%" border="0" cellspacing="2" cellpadding="2">
|
||||
<table border="0" cellpadding="2" cellspacing="2" width="100%">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td valign="top"><b>Name</b><br>
|
||||
|
@ -2543,7 +2553,7 @@ in the Playlist store.<br>
|
|||
</table>
|
||||
<br>
|
||||
<h4>Contract for Scheduler : displayPlayLog</h4>
|
||||
<table width="100%" border="0" cellspacing="2" cellpadding="2">
|
||||
<table border="0" cellpadding="2" cellspacing="2" width="100%">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td valign="top"><b>Name</b><br>
|
||||
|
@ -2617,7 +2627,7 @@ contained in the Play log.<br>
|
|||
<br>
|
||||
<h4>Contract for Scheduler : generatePlayReport<br>
|
||||
</h4>
|
||||
<table width="100%" border="0" cellspacing="2" cellpadding="2">
|
||||
<table border="0" cellpadding="2" cellspacing="2" width="100%">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td valign="top"><b>Name</b><br>
|
||||
|
@ -2692,7 +2702,7 @@ Audio clips played in the specified time period.<br>
|
|||
<br>
|
||||
<h4>Contract for Scheduler : createPlaylist<br>
|
||||
</h4>
|
||||
<table width="100%" border="0" cellspacing="2" cellpadding="2">
|
||||
<table border="0" cellpadding="2" cellspacing="2" width="100%">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td valign="top"><b>Name</b><br>
|
||||
|
@ -2790,7 +2800,7 @@ for the playlist<br>
|
|||
<br>
|
||||
<h4>Contract for Scheduler : openPlaylistForEditing<br>
|
||||
</h4>
|
||||
<table width="100%" border="0" cellspacing="2" cellpadding="2">
|
||||
<table border="0" cellpadding="2" cellspacing="2" width="100%">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td valign="top"><b>Name</b><br>
|
||||
|
@ -2886,7 +2896,7 @@ for the playlist<br>
|
|||
<br>
|
||||
<h4>Contract for Scheduler : addAudioClipToPlaylist<br>
|
||||
</h4>
|
||||
<table width="100%" border="0" cellspacing="2" cellpadding="2">
|
||||
<table border="0" cellpadding="2" cellspacing="2" width="100%">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td valign="top"><b>Name</b><br>
|
||||
|
@ -2974,7 +2984,7 @@ the playlist with the audio clip, with the specified relativeOffset<br>
|
|||
<br>
|
||||
<h4>Contract for Scheduler : displayAudioClips<br>
|
||||
</h4>
|
||||
<table width="100%" border="0" cellspacing="2" cellpadding="2">
|
||||
<table border="0" cellpadding="2" cellspacing="2" width="100%">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td valign="top"><b>Name</b><br>
|
||||
|
@ -3049,7 +3059,7 @@ the Scheduler<br>
|
|||
<br>
|
||||
<h4>Contract for Scheduler : displayAudioClip<br>
|
||||
</h4>
|
||||
<table width="100%" border="0" cellspacing="2" cellpadding="2">
|
||||
<table border="0" cellpadding="2" cellspacing="2" width="100%">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td valign="top"><b>Name</b><br>
|
||||
|
@ -3125,7 +3135,7 @@ by the audioClipId<br>
|
|||
<br>
|
||||
<h4>Contract for Scheduler : removeAudioClipFromPlaylist<br>
|
||||
</h4>
|
||||
<table width="100%" border="0" cellspacing="2" cellpadding="2">
|
||||
<table border="0" cellpadding="2" cellspacing="2" width="100%">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td valign="top"><b>Name</b><br>
|
||||
|
@ -3212,7 +3222,7 @@ with the Playlist is removed, with the related FadeInfo instances<br>
|
|||
<br>
|
||||
<h4>Contract for Scheduler : updateFadeInFadeOut<br>
|
||||
</h4>
|
||||
<table width="100%" border="0" cellspacing="2" cellpadding="2">
|
||||
<table border="0" cellpadding="2" cellspacing="2" width="100%">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td valign="top"><b>Name</b><br>
|
||||
|
@ -3298,7 +3308,7 @@ audio clip in the playlist are updated<br>
|
|||
<br>
|
||||
<h4>Contract for Scheduler : validatePlaylist<br>
|
||||
</h4>
|
||||
<table width="100%" border="0" cellspacing="2" cellpadding="2">
|
||||
<table border="0" cellpadding="2" cellspacing="2" width="100%">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td valign="top"><b>Name</b><br>
|
||||
|
@ -3373,7 +3383,7 @@ for being complete (not containing silence) and other sanity criteria.<br>
|
|||
<br>
|
||||
<h4>Contract for Scheduler : savePlaylist<br>
|
||||
</h4>
|
||||
<table width="100%" border="0" cellspacing="2" cellpadding="2">
|
||||
<table border="0" cellpadding="2" cellspacing="2" width="100%">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td valign="top"><b>Name</b><br>
|
||||
|
@ -3466,7 +3476,7 @@ been used for reverting is deleted (see revertEditedPlaylist)<br>
|
|||
<br>
|
||||
<h4>Contract for Scheduler : revertEditedPlaylist<br>
|
||||
</h4>
|
||||
<table width="100%" border="0" cellspacing="2" cellpadding="2">
|
||||
<table border="0" cellpadding="2" cellspacing="2" width="100%">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td valign="top"><b>Name</b><br>
|
||||
|
@ -3561,7 +3571,7 @@ for the playlist<br>
|
|||
<br>
|
||||
<h4>Contract for Scheduler : start<br>
|
||||
</h4>
|
||||
<table width="100%" border="0" cellspacing="2" cellpadding="2">
|
||||
<table border="0" cellpadding="2" cellspacing="2" width="100%">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td valign="top"><b>Name</b><br>
|
||||
|
@ -3654,7 +3664,7 @@ deamon to run<br>
|
|||
<br>
|
||||
<h4>Contract for Scheduler : isRunning<br>
|
||||
</h4>
|
||||
<table width="100%" border="0" cellspacing="2" cellpadding="2">
|
||||
<table border="0" cellpadding="2" cellspacing="2" width="100%">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td valign="top"><b>Name</b><br>
|
||||
|
@ -3730,7 +3740,7 @@ running, false otherwise<br>
|
|||
<br>
|
||||
<h4>Contract for Scheduler : stop<br>
|
||||
</h4>
|
||||
<table width="100%" border="0" cellspacing="2" cellpadding="2">
|
||||
<table border="0" cellpadding="2" cellspacing="2" width="100%">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td valign="top"><b>Name</b><br>
|
||||
|
@ -3814,7 +3824,7 @@ currently running<br>
|
|||
<br>
|
||||
<h4>Contract for Media archive : authenticate</h4>
|
||||
TODO: move to Media archive spec<br>
|
||||
<table width="100%" border="0" cellspacing="2" cellpadding="2">
|
||||
<table border="0" cellpadding="2" cellspacing="2" width="100%">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td valign="top"><b>Name</b><br>
|
||||
|
@ -3887,7 +3897,7 @@ authentication is recognized, false otherwise<br>
|
|||
<br>
|
||||
<h4>Contract for Media archive : retrieveAudioClip</h4>
|
||||
TODO: move to Media archive spec<br>
|
||||
<table width="100%" border="0" cellspacing="2" cellpadding="2">
|
||||
<table border="0" cellpadding="2" cellspacing="2" width="100%">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td valign="top"><b>Name</b><br>
|
||||
|
@ -3977,7 +3987,7 @@ contents of the retrieved audio clip<br>
|
|||
<br>
|
||||
<h4>Contract for Local storage : authenticate</h4>
|
||||
TODO: move to Local storage spec<br>
|
||||
<table width="100%" border="0" cellspacing="2" cellpadding="2">
|
||||
<table border="0" cellpadding="2" cellspacing="2" width="100%">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td valign="top"><b>Name</b><br>
|
||||
|
@ -4050,7 +4060,7 @@ authentication is recognized, false otherwise<br>
|
|||
<br>
|
||||
<h4>Contract for Local storage : existsAudioClip</h4>
|
||||
TODO: move to Local storage spec<br>
|
||||
<table width="100%" border="0" cellspacing="2" cellpadding="2">
|
||||
<table border="0" cellpadding="2" cellspacing="2" width="100%">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td valign="top"><b>Name</b><br>
|
||||
|
@ -4123,7 +4133,7 @@ with the provided id exists, false otherwise<br>
|
|||
<br>
|
||||
<h4>Contract for Local storage : storeAudioClip</h4>
|
||||
TODO: move to Local storage spec<br>
|
||||
<table width="100%" border="0" cellspacing="2" cellpadding="2">
|
||||
<table border="0" cellpadding="2" cellspacing="2" width="100%">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td valign="top"><b>Name</b><br>
|
||||
|
|
|
@ -21,7 +21,7 @@
|
|||
#
|
||||
#
|
||||
# Author : $Author: maroy $
|
||||
# Version : $Revision: 1.4 $
|
||||
# Version : $Revision: 1.5 $
|
||||
# Location : $Source: /home/paul/cvs2svn-livesupport/newcvsrepo/livesupport/products/scheduler/etc/Makefile.in,v $
|
||||
#
|
||||
# @configure_input@
|
||||
|
@ -112,6 +112,7 @@ SCHEDULER_OBJS = ${TMP_DIR}/SignalDispatcher.o \
|
|||
${TMP_DIR}/UploadPlaylistMethod.o \
|
||||
${TMP_DIR}/DisplayScheduleMethod.o \
|
||||
${TMP_DIR}/DisplayPlaylistMethod.o \
|
||||
${TMP_DIR}/RemoveFromScheduleMethod.o \
|
||||
${TMP_DIR}/ScheduleFactory.o \
|
||||
${TMP_DIR}/PostgresqlSchedule.o
|
||||
|
||||
|
@ -126,9 +127,11 @@ TEST_RUNNER_OBJS = ${SCHEDULER_OBJS} \
|
|||
${TMP_DIR}/SchedulerDaemonUploadTest.o \
|
||||
${TMP_DIR}/SchedulerDaemonDisplayScheduleTest.o \
|
||||
${TMP_DIR}/SchedulerDaemonDisplayPlaylistTest.o \
|
||||
${TMP_DIR}/SchedulerDaemonRemoveFromScheduleTest.o \
|
||||
${TMP_DIR}/UploadPlaylistMethodTest.o \
|
||||
${TMP_DIR}/DisplayScheduleMethodTest.o \
|
||||
${TMP_DIR}/DisplayPlaylistMethodTest.o \
|
||||
${TMP_DIR}/RemoveFromScheduleMethodTest.o \
|
||||
${TMP_DIR}/PostgresqlScheduleTest.o \
|
||||
${TMP_DIR}/TestRunner.o
|
||||
TEST_RUNNER_LIBS = ${SCHEDULER_EXE_LIBS} -lcppunit -ldl
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
|
||||
|
||||
Author : $Author: maroy $
|
||||
Version : $Revision: 1.2 $
|
||||
Version : $Revision: 1.3 $
|
||||
Location : $Source: /home/paul/cvs2svn-livesupport/newcvsrepo/livesupport/products/scheduler/src/PostgresqlSchedule.cxx,v $
|
||||
|
||||
------------------------------------------------------------------------------*/
|
||||
|
@ -109,6 +109,21 @@ const std::string PostgresqlSchedule::getScheduleEntriesStmt =
|
|||
"(? <= starts) AND (starts < ?) "
|
||||
"ORDER BY starts";
|
||||
|
||||
/*------------------------------------------------------------------------------
|
||||
* The SQL statement for querying if a schedule entry exists.
|
||||
* Expects a single argument, the id of the schedule to check.
|
||||
* Returns 1 if the entry exists, 0 otherwise.
|
||||
*----------------------------------------------------------------------------*/
|
||||
const std::string PostgresqlSchedule::scheduleEntryExistsStmt =
|
||||
"SELECT COUNT(*) FROM schedule WHERE id = ?";
|
||||
|
||||
/*------------------------------------------------------------------------------
|
||||
* The SQL statement for removing a schedule.
|
||||
* Expects a single argument, the id of the schedule to remove.
|
||||
*----------------------------------------------------------------------------*/
|
||||
const std::string PostgresqlSchedule::removeFromScheduleStmt =
|
||||
"DELETE FROM schedule WHERE id = ?";
|
||||
|
||||
|
||||
/* =============================================== local function prototypes */
|
||||
|
||||
|
@ -219,7 +234,7 @@ PostgresqlSchedule :: isTimeframeAvailable(
|
|||
/*------------------------------------------------------------------------------
|
||||
* Schedule a playlist
|
||||
*----------------------------------------------------------------------------*/
|
||||
void
|
||||
Ptr<UniqueId>::Ref
|
||||
PostgresqlSchedule :: schedulePlaylist(
|
||||
Ptr<Playlist>::Ref playlist,
|
||||
Ptr<ptime>::Ref playtime)
|
||||
|
@ -227,11 +242,11 @@ PostgresqlSchedule :: schedulePlaylist(
|
|||
{
|
||||
Ptr<Connection>::Ref conn;
|
||||
bool result = false;
|
||||
Ptr<UniqueId>::Ref id;
|
||||
|
||||
try {
|
||||
conn = cm->getConnection();
|
||||
Ptr<Timestamp>::Ref timestamp;
|
||||
Ptr<UniqueId>::Ref id;
|
||||
Ptr<ptime>::Ref ends;
|
||||
Ptr<PreparedStatement>::Ref pstmt(conn->prepareStatement(
|
||||
schedulePlaylistStmt));
|
||||
|
@ -260,6 +275,8 @@ PostgresqlSchedule :: schedulePlaylist(
|
|||
if (!result) {
|
||||
throw std::invalid_argument("couldn't insert into database");
|
||||
}
|
||||
|
||||
return id;
|
||||
}
|
||||
|
||||
|
||||
|
@ -316,3 +333,68 @@ PostgresqlSchedule :: getScheduleEntries(
|
|||
return result;
|
||||
}
|
||||
|
||||
|
||||
/*------------------------------------------------------------------------------
|
||||
* Tell if a schedule entry exists.
|
||||
*----------------------------------------------------------------------------*/
|
||||
bool
|
||||
PostgresqlSchedule :: scheduleEntryExists(
|
||||
Ptr<const UniqueId>::Ref entryId)
|
||||
throw ()
|
||||
{
|
||||
Ptr<Connection>::Ref conn;
|
||||
bool result = false;
|
||||
|
||||
try {
|
||||
conn = cm->getConnection();
|
||||
Ptr<PreparedStatement>::Ref pstmt(conn->prepareStatement(
|
||||
scheduleEntryExistsStmt));
|
||||
pstmt->setInt(1, entryId->getId());
|
||||
|
||||
Ptr<ResultSet>::Ref rs(pstmt->executeQuery());
|
||||
result = (rs->next()) ? (rs->getInt(1) == 1) : false;
|
||||
|
||||
cm->returnConnection(conn);
|
||||
} catch (std::exception &e) {
|
||||
if (conn) {
|
||||
cm->returnConnection(conn);
|
||||
}
|
||||
throw std::invalid_argument(e.what());
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
/*------------------------------------------------------------------------------
|
||||
* Remove a schedule entry from a schedule
|
||||
*----------------------------------------------------------------------------*/
|
||||
void
|
||||
PostgresqlSchedule :: removeFromSchedule(
|
||||
Ptr<const UniqueId>::Ref entryId)
|
||||
throw (std::invalid_argument)
|
||||
{
|
||||
Ptr<Connection>::Ref conn;
|
||||
bool result = false;
|
||||
|
||||
try {
|
||||
conn = cm->getConnection();
|
||||
Ptr<PreparedStatement>::Ref pstmt(conn->prepareStatement(
|
||||
removeFromScheduleStmt));
|
||||
pstmt->setInt(1, entryId->getId());
|
||||
|
||||
result = pstmt->executeUpdate() == 1;
|
||||
|
||||
cm->returnConnection(conn);
|
||||
} catch (std::exception &e) {
|
||||
if (conn) {
|
||||
cm->returnConnection(conn);
|
||||
}
|
||||
throw std::invalid_argument(e.what());
|
||||
}
|
||||
|
||||
if (!result) {
|
||||
throw std::invalid_argument("specified schedule entry does not exist");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
|
||||
|
||||
Author : $Author: maroy $
|
||||
Version : $Revision: 1.3 $
|
||||
Version : $Revision: 1.4 $
|
||||
Location : $Source: /home/paul/cvs2svn-livesupport/newcvsrepo/livesupport/products/scheduler/src/PostgresqlSchedule.h,v $
|
||||
|
||||
------------------------------------------------------------------------------*/
|
||||
|
@ -81,7 +81,7 @@ using namespace LiveSupport::Core;
|
|||
* </code></pre>
|
||||
*
|
||||
* @author $Author: maroy $
|
||||
* @version $Revision: 1.3 $
|
||||
* @version $Revision: 1.4 $
|
||||
*/
|
||||
class PostgresqlSchedule : public Configurable,
|
||||
public ScheduleInterface
|
||||
|
@ -117,6 +117,16 @@ class PostgresqlSchedule : public Configurable,
|
|||
*/
|
||||
static const std::string getScheduleEntriesStmt;
|
||||
|
||||
/**
|
||||
* The SQL statement for telling if a schedule entry exists.
|
||||
*/
|
||||
static const std::string scheduleEntryExistsStmt;
|
||||
|
||||
/**
|
||||
* The SQL statement for removing a schedule entry.
|
||||
*/
|
||||
static const std::string removeFromScheduleStmt;
|
||||
|
||||
/**
|
||||
* The database connection manager to use for connecting the
|
||||
* database.
|
||||
|
@ -216,10 +226,11 @@ class PostgresqlSchedule : public Configurable,
|
|||
*
|
||||
* @param playlist the playlist to schedule.
|
||||
* @param playtime the time to schedule the playlist for.
|
||||
* @return the id of the newly created playlist.
|
||||
* @exception std::invalid_argument if the there is something
|
||||
* already scheduled for the duration of the playlist.
|
||||
*/
|
||||
virtual void
|
||||
virtual Ptr<UniqueId>::Ref
|
||||
schedulePlaylist(Ptr<Playlist>::Ref playlist,
|
||||
Ptr<ptime>::Ref playtime)
|
||||
throw (std::invalid_argument);
|
||||
|
@ -237,6 +248,28 @@ class PostgresqlSchedule : public Configurable,
|
|||
getScheduleEntries(Ptr<ptime>::Ref fromTime,
|
||||
Ptr<ptime>::Ref toTime)
|
||||
throw ();
|
||||
|
||||
/**
|
||||
* Tell if a schedule entry exists by the give name.
|
||||
*
|
||||
* @param entryId the id of the schedule entry to check for.
|
||||
* @return true if the schedule entry exists in the Schedule,
|
||||
* false otherwise.
|
||||
*/
|
||||
virtual bool
|
||||
scheduleEntryExists(Ptr<const UniqueId>::Ref entryId)
|
||||
throw ();
|
||||
|
||||
/**
|
||||
* Remove a schedule entry from the schedule.
|
||||
*
|
||||
* @param entryId the id of the schedule to remove.
|
||||
* @exception std::invalid_argument if no schedule with the specified
|
||||
* id exists.
|
||||
*/
|
||||
virtual void
|
||||
removeFromSchedule(Ptr<const UniqueId>::Ref entryId)
|
||||
throw (std::invalid_argument);
|
||||
};
|
||||
|
||||
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
|
||||
|
||||
Author : $Author: maroy $
|
||||
Version : $Revision: 1.3 $
|
||||
Version : $Revision: 1.4 $
|
||||
Location : $Source: /home/paul/cvs2svn-livesupport/newcvsrepo/livesupport/products/scheduler/src/PostgresqlScheduleTest.cxx,v $
|
||||
|
||||
------------------------------------------------------------------------------*/
|
||||
|
@ -299,3 +299,97 @@ PostgresqlScheduleTest :: getScheduleEntriesTest(void)
|
|||
}
|
||||
|
||||
|
||||
/*------------------------------------------------------------------------------
|
||||
* See if scheduleEntryExists() returns correct results
|
||||
*----------------------------------------------------------------------------*/
|
||||
void
|
||||
PostgresqlScheduleTest :: scheduleEntryExistsTest(void)
|
||||
throw (CPPUNIT_NS::Exception)
|
||||
{
|
||||
// create a 1 hour long playlist
|
||||
Ptr<UniqueId>::Ref playlistId = UniqueId::generateId();
|
||||
Ptr<time_duration>::Ref playlength(new time_duration(1, 0, 0));
|
||||
Ptr<Playlist>::Ref playlist(new Playlist(playlistId, playlength));
|
||||
|
||||
Ptr<ptime>::Ref from;
|
||||
Ptr<ptime>::Ref to;
|
||||
|
||||
Ptr<UniqueId>::Ref entryId1;
|
||||
Ptr<UniqueId>::Ref entryId2;
|
||||
|
||||
// at the very first, check for a nonexistent entry
|
||||
entryId1.reset(new UniqueId(9999));
|
||||
CPPUNIT_ASSERT(!schedule->scheduleEntryExists(entryId1));
|
||||
|
||||
try {
|
||||
// schedule our playlist for 2004-07-23, 10 o'clock
|
||||
from.reset(new ptime(time_from_string("2004-07-23 10:00:00")));
|
||||
entryId1 = schedule->schedulePlaylist(playlist, from);
|
||||
|
||||
// schedule our playlist for 2004-07-23, 12 o'clock
|
||||
from.reset(new ptime(time_from_string("2004-07-23 12:00:00")));
|
||||
entryId2 = schedule->schedulePlaylist(playlist, from);
|
||||
|
||||
// now let's check if our entries exist
|
||||
CPPUNIT_ASSERT(schedule->scheduleEntryExists(entryId1));
|
||||
CPPUNIT_ASSERT(schedule->scheduleEntryExists(entryId2));
|
||||
|
||||
} catch (std::invalid_argument &e) {
|
||||
CPPUNIT_FAIL(e.what());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*------------------------------------------------------------------------------
|
||||
* See if removeFromSchedule() really removes
|
||||
*----------------------------------------------------------------------------*/
|
||||
void
|
||||
PostgresqlScheduleTest :: removeFromScheduleTest(void)
|
||||
throw (CPPUNIT_NS::Exception)
|
||||
{
|
||||
// create a 1 hour long playlist
|
||||
Ptr<UniqueId>::Ref playlistId = UniqueId::generateId();
|
||||
Ptr<time_duration>::Ref playlength(new time_duration(1, 0, 0));
|
||||
Ptr<Playlist>::Ref playlist(new Playlist(playlistId, playlength));
|
||||
|
||||
Ptr<ptime>::Ref from;
|
||||
Ptr<ptime>::Ref to;
|
||||
|
||||
Ptr<UniqueId>::Ref entryId1;
|
||||
Ptr<UniqueId>::Ref entryId2;
|
||||
|
||||
// at the very first, try to remove something not scheduled
|
||||
bool gotException = false;
|
||||
try {
|
||||
entryId1.reset(new UniqueId(9999));
|
||||
schedule->removeFromSchedule(entryId1);
|
||||
} catch (std::invalid_argument &e) {
|
||||
gotException = true;
|
||||
}
|
||||
CPPUNIT_ASSERT(gotException);
|
||||
|
||||
try {
|
||||
// schedule our playlist for 2004-07-23, 10 o'clock
|
||||
from.reset(new ptime(time_from_string("2004-07-23 10:00:00")));
|
||||
entryId1 = schedule->schedulePlaylist(playlist, from);
|
||||
|
||||
// schedule our playlist for 2004-07-23, 12 o'clock
|
||||
from.reset(new ptime(time_from_string("2004-07-23 12:00:00")));
|
||||
entryId2 = schedule->schedulePlaylist(playlist, from);
|
||||
|
||||
// now let's remove one of them, and see that it's not there anymore
|
||||
CPPUNIT_ASSERT(schedule->scheduleEntryExists(entryId1));
|
||||
schedule->removeFromSchedule(entryId1);
|
||||
CPPUNIT_ASSERT(!schedule->scheduleEntryExists(entryId1));
|
||||
|
||||
// now let's remove the other, and see that it's not there anymore
|
||||
CPPUNIT_ASSERT(schedule->scheduleEntryExists(entryId2));
|
||||
schedule->removeFromSchedule(entryId2);
|
||||
CPPUNIT_ASSERT(!schedule->scheduleEntryExists(entryId2));
|
||||
|
||||
} catch (std::invalid_argument &e) {
|
||||
CPPUNIT_FAIL(e.what());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
|
||||
|
||||
Author : $Author: maroy $
|
||||
Version : $Revision: 1.2 $
|
||||
Version : $Revision: 1.3 $
|
||||
Location : $Source: /home/paul/cvs2svn-livesupport/newcvsrepo/livesupport/products/scheduler/src/PostgresqlScheduleTest.h,v $
|
||||
|
||||
------------------------------------------------------------------------------*/
|
||||
|
@ -64,7 +64,7 @@ using namespace LiveSupport::Core;
|
|||
* Unit test for the PostgresqlSchedule class.
|
||||
*
|
||||
* @author $Author: maroy $
|
||||
* @version $Revision: 1.2 $
|
||||
* @version $Revision: 1.3 $
|
||||
* @see PostgresqlSchedule
|
||||
*/
|
||||
class PostgresqlScheduleTest : public CPPUNIT_NS::TestFixture
|
||||
|
@ -74,6 +74,8 @@ class PostgresqlScheduleTest : public CPPUNIT_NS::TestFixture
|
|||
CPPUNIT_TEST(simpleScheduleTest);
|
||||
CPPUNIT_TEST(scheduleAndQueryTest);
|
||||
CPPUNIT_TEST(getScheduleEntriesTest);
|
||||
CPPUNIT_TEST(scheduleEntryExistsTest);
|
||||
CPPUNIT_TEST(removeFromScheduleTest);
|
||||
CPPUNIT_TEST_SUITE_END();
|
||||
|
||||
private:
|
||||
|
@ -123,6 +125,22 @@ class PostgresqlScheduleTest : public CPPUNIT_NS::TestFixture
|
|||
void
|
||||
getScheduleEntriesTest(void) throw (CPPUNIT_NS::Exception);
|
||||
|
||||
/**
|
||||
* Schedule some playlists, then check if they exist.
|
||||
*
|
||||
* @exception CPPUNIT_NS::Exception on test failures.
|
||||
*/
|
||||
void
|
||||
scheduleEntryExistsTest(void) throw (CPPUNIT_NS::Exception);
|
||||
|
||||
/**
|
||||
* Schedule some playlists, then remove them.
|
||||
*
|
||||
* @exception CPPUNIT_NS::Exception on test failures.
|
||||
*/
|
||||
void
|
||||
removeFromScheduleTest(void) throw (CPPUNIT_NS::Exception);
|
||||
|
||||
public:
|
||||
|
||||
/**
|
||||
|
|
|
@ -0,0 +1,141 @@
|
|||
/*------------------------------------------------------------------------------
|
||||
|
||||
Copyright (c) 2004 Media Development Loan Fund
|
||||
|
||||
This file is part of the LiveSupport project.
|
||||
http://livesupport.campware.org/
|
||||
To report bugs, send an e-mail to bugs@campware.org
|
||||
|
||||
LiveSupport is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
LiveSupport is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with LiveSupport; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
|
||||
Author : $Author: maroy $
|
||||
Version : $Revision: 1.1 $
|
||||
Location : $Source: /home/paul/cvs2svn-livesupport/newcvsrepo/livesupport/products/scheduler/src/RemoveFromScheduleMethod.cxx,v $
|
||||
|
||||
------------------------------------------------------------------------------*/
|
||||
|
||||
/* ============================================================ include files */
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "configure.h"
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_TIME_H
|
||||
#include <time.h>
|
||||
#else
|
||||
#error need time.h
|
||||
#endif
|
||||
|
||||
|
||||
#include <string>
|
||||
|
||||
#include "ScheduleInterface.h"
|
||||
#include "ScheduleFactory.h"
|
||||
#include "RemoveFromScheduleMethod.h"
|
||||
|
||||
|
||||
using namespace LiveSupport;
|
||||
using namespace LiveSupport::Core;
|
||||
|
||||
using namespace LiveSupport::Scheduler;
|
||||
|
||||
/* =================================================== local data structures */
|
||||
|
||||
|
||||
/* ================================================ local constants & macros */
|
||||
|
||||
/*------------------------------------------------------------------------------
|
||||
* The name of this XML-RPC method.
|
||||
*----------------------------------------------------------------------------*/
|
||||
const std::string RemoveFromScheduleMethod::methodName = "removeFromSchedule";
|
||||
|
||||
/*------------------------------------------------------------------------------
|
||||
* The name of the playlist id member in the XML-RPC parameter
|
||||
* structure.
|
||||
*----------------------------------------------------------------------------*/
|
||||
const std::string RemoveFromScheduleMethod::scheduleEntryIdName =
|
||||
"scheduleEntryId";
|
||||
|
||||
|
||||
/* =============================================== local function prototypes */
|
||||
|
||||
|
||||
/* ============================================================= module code */
|
||||
|
||||
/*------------------------------------------------------------------------------
|
||||
* Construct the method and register it right away.
|
||||
*----------------------------------------------------------------------------*/
|
||||
RemoveFromScheduleMethod :: RemoveFromScheduleMethod (
|
||||
Ptr<XmlRpc::XmlRpcServer>::Ref xmlRpcServer) throw()
|
||||
: XmlRpc::XmlRpcServerMethod(methodName, xmlRpcServer.get())
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
/*------------------------------------------------------------------------------
|
||||
* Extract the UniqueId from an XML-RPC function call parameter
|
||||
*----------------------------------------------------------------------------*/
|
||||
Ptr<UniqueId>::Ref
|
||||
RemoveFromScheduleMethod :: extractScheduleEntryId(
|
||||
XmlRpc::XmlRpcValue & xmlRpcValue)
|
||||
throw (std::invalid_argument)
|
||||
{
|
||||
if (!xmlRpcValue.hasMember(scheduleEntryIdName)) {
|
||||
throw std::invalid_argument("no playlist id in parameter structure");
|
||||
}
|
||||
|
||||
Ptr<UniqueId>::Ref id(new UniqueId((int) xmlRpcValue[scheduleEntryIdName]));
|
||||
return id;
|
||||
}
|
||||
|
||||
|
||||
/*------------------------------------------------------------------------------
|
||||
* Execute the remove from schedule XML-RPC function call.
|
||||
*----------------------------------------------------------------------------*/
|
||||
void
|
||||
RemoveFromScheduleMethod :: execute(XmlRpc::XmlRpcValue & parameters,
|
||||
XmlRpc::XmlRpcValue & returnValue)
|
||||
throw ()
|
||||
{
|
||||
try {
|
||||
if (!parameters.valid()) {
|
||||
// TODO: mark error
|
||||
returnValue = XmlRpc::XmlRpcValue(false);
|
||||
return;
|
||||
}
|
||||
|
||||
Ptr<UniqueId>::Ref entryId = extractScheduleEntryId(parameters[0]);
|
||||
|
||||
Ptr<ScheduleFactory>::Ref sf = ScheduleFactory::getInstance();
|
||||
Ptr<ScheduleInterface>::Ref schedule = sf->getSchedule();
|
||||
|
||||
if (!schedule->scheduleEntryExists(entryId)) {
|
||||
// TODO: mark error;
|
||||
returnValue = XmlRpc::XmlRpcValue(false);
|
||||
return;
|
||||
}
|
||||
|
||||
schedule->removeFromSchedule(entryId);
|
||||
|
||||
} catch (std::invalid_argument &e) {
|
||||
// TODO: mark error
|
||||
returnValue = XmlRpc::XmlRpcValue(false);
|
||||
return;
|
||||
}
|
||||
|
||||
returnValue = XmlRpc::XmlRpcValue(true);
|
||||
}
|
||||
|
|
@ -0,0 +1,148 @@
|
|||
/*------------------------------------------------------------------------------
|
||||
|
||||
Copyright (c) 2004 Media Development Loan Fund
|
||||
|
||||
This file is part of the LiveSupport project.
|
||||
http://livesupport.campware.org/
|
||||
To report bugs, send an e-mail to bugs@campware.org
|
||||
|
||||
LiveSupport is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
LiveSupport is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with LiveSupport; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
|
||||
Author : $Author: maroy $
|
||||
Version : $Revision: 1.1 $
|
||||
Location : $Source: /home/paul/cvs2svn-livesupport/newcvsrepo/livesupport/products/scheduler/src/RemoveFromScheduleMethod.h,v $
|
||||
|
||||
------------------------------------------------------------------------------*/
|
||||
#ifndef RemoveFromScheduleMethod_h
|
||||
#define RemoveFromScheduleMethod_h
|
||||
|
||||
#ifndef __cplusplus
|
||||
#error This is a C++ include file
|
||||
#endif
|
||||
|
||||
|
||||
/* ============================================================ include files */
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "configure.h"
|
||||
#endif
|
||||
|
||||
#include <stdexcept>
|
||||
#include <string>
|
||||
#include <boost/date_time/posix_time/posix_time.hpp>
|
||||
#include <XmlRpcServerMethod.h>
|
||||
#include <XmlRpcValue.h>
|
||||
|
||||
#include "LiveSupport/Core/Ptr.h"
|
||||
#include "LiveSupport/Core/UniqueId.h"
|
||||
|
||||
|
||||
namespace LiveSupport {
|
||||
namespace Scheduler {
|
||||
|
||||
using namespace LiveSupport;
|
||||
using namespace LiveSupport::Core;
|
||||
|
||||
/* ================================================================ constants */
|
||||
|
||||
|
||||
/* =================================================================== macros */
|
||||
|
||||
|
||||
/* =============================================================== data types */
|
||||
|
||||
/**
|
||||
* An XML-RPC method object to remove a scheduled entry.
|
||||
*
|
||||
* The name of the method when called through XML-RPC is "removeFromSchedule".
|
||||
* The expected parameter is an XML-RPC structure, with the following
|
||||
* members:
|
||||
* <ul>
|
||||
* <li>scheduleEntryId - int - the id of the scheduled entry to remove</li>
|
||||
* </ul>
|
||||
*
|
||||
* @author $Author: maroy $
|
||||
* @version $Revision: 1.1 $
|
||||
*/
|
||||
class RemoveFromScheduleMethod : public XmlRpc::XmlRpcServerMethod
|
||||
{
|
||||
private:
|
||||
/**
|
||||
* The name of this method, as it will be registered into the
|
||||
* XML-RPC server.
|
||||
*/
|
||||
static const std::string methodName;
|
||||
|
||||
/**
|
||||
* The name of the entry id member in the XML-RPC parameter
|
||||
* structure.
|
||||
*/
|
||||
static const std::string scheduleEntryIdName;
|
||||
|
||||
/**
|
||||
* Extract the schedule entry id from the XML-RPC parameters.
|
||||
*
|
||||
* @param xmlRpcValue the XML-RPC parameter to extract from.
|
||||
* @return a UniqueId that was found in the XML-RPC parameter.
|
||||
* @exception std::invalid_argument if there was no UniqueId
|
||||
* in xmlRpcValue
|
||||
*/
|
||||
Ptr<UniqueId>::Ref
|
||||
extractScheduleEntryId(XmlRpc::XmlRpcValue & xmlRpcValue)
|
||||
throw (std::invalid_argument);
|
||||
|
||||
|
||||
public:
|
||||
/**
|
||||
* A default constructor, for testing purposes.
|
||||
*/
|
||||
RemoveFromScheduleMethod(void) throw ()
|
||||
: XmlRpc::XmlRpcServerMethod(methodName)
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* Constuctor that registers the method with the server right away.
|
||||
*
|
||||
* @param xmlRpcServer the XML-RPC server to register with.
|
||||
*/
|
||||
RemoveFromScheduleMethod(
|
||||
Ptr<XmlRpc::XmlRpcServer>::Ref xmlRpcServer)
|
||||
throw ();
|
||||
|
||||
/**
|
||||
* Execute the remove from schedule command on the Scheduler daemon.
|
||||
*
|
||||
* @param parameters XML-RPC function call parameters
|
||||
* @param returnValue the return value of the call (out parameter)
|
||||
*/
|
||||
void
|
||||
execute( XmlRpc::XmlRpcValue & parameters,
|
||||
XmlRpc::XmlRpcValue & returnValue) throw ();
|
||||
};
|
||||
|
||||
|
||||
/* ================================================= external data structures */
|
||||
|
||||
|
||||
/* ====================================================== function prototypes */
|
||||
|
||||
|
||||
} // namespace Scheduler
|
||||
} // namespace LiveSupport
|
||||
|
||||
#endif // RemoveFromScheduleMethod_h
|
||||
|
|
@ -0,0 +1,185 @@
|
|||
/*------------------------------------------------------------------------------
|
||||
|
||||
Copyright (c) 2004 Media Development Loan Fund
|
||||
|
||||
This file is part of the LiveSupport project.
|
||||
http://livesupport.campware.org/
|
||||
To report bugs, send an e-mail to bugs@campware.org
|
||||
|
||||
LiveSupport is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
LiveSupport is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with LiveSupport; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
|
||||
Author : $Author: maroy $
|
||||
Version : $Revision: 1.1 $
|
||||
Location : $Source: /home/paul/cvs2svn-livesupport/newcvsrepo/livesupport/products/scheduler/src/RemoveFromScheduleMethodTest.cxx,v $
|
||||
|
||||
------------------------------------------------------------------------------*/
|
||||
|
||||
/* ============================================================ include files */
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "configure.h"
|
||||
#endif
|
||||
|
||||
#if HAVE_UNISTD_H
|
||||
#include <unistd.h>
|
||||
#else
|
||||
#error "Need unistd.h"
|
||||
#endif
|
||||
|
||||
|
||||
#include <string>
|
||||
#include <iostream>
|
||||
#include <XmlRpcValue.h>
|
||||
|
||||
#include "ScheduleFactory.h"
|
||||
#include "UploadPlaylistMethod.h"
|
||||
#include "RemoveFromScheduleMethod.h"
|
||||
#include "RemoveFromScheduleMethodTest.h"
|
||||
|
||||
|
||||
using namespace LiveSupport::Scheduler;
|
||||
|
||||
/* =================================================== local data structures */
|
||||
|
||||
|
||||
/* ================================================ local constants & macros */
|
||||
|
||||
CPPUNIT_TEST_SUITE_REGISTRATION(RemoveFromScheduleMethodTest);
|
||||
|
||||
/**
|
||||
* The name of the configuration file for the schedule factory.
|
||||
*/
|
||||
const std::string RemoveFromScheduleMethodTest::scheduleConfig =
|
||||
"etc/scheduleFactory.xml";
|
||||
|
||||
|
||||
/* =============================================== local function prototypes */
|
||||
|
||||
|
||||
/* ============================================================= module code */
|
||||
|
||||
/*------------------------------------------------------------------------------
|
||||
* Configure a Configurable with an XML file.
|
||||
*----------------------------------------------------------------------------*/
|
||||
void
|
||||
RemoveFromScheduleMethodTest :: configure(
|
||||
Ptr<Configurable>::Ref configurable,
|
||||
const std::string fileName)
|
||||
throw (std::invalid_argument,
|
||||
xmlpp::exception)
|
||||
{
|
||||
Ptr<xmlpp::DomParser>::Ref parser(new xmlpp::DomParser(fileName, true));
|
||||
const xmlpp::Document * document = parser->get_document();
|
||||
const xmlpp::Element * root = document->get_root_node();
|
||||
|
||||
configurable->configure(*root);
|
||||
}
|
||||
|
||||
|
||||
/*------------------------------------------------------------------------------
|
||||
* Set up the test environment
|
||||
*----------------------------------------------------------------------------*/
|
||||
void
|
||||
RemoveFromScheduleMethodTest :: setUp(void) throw ()
|
||||
{
|
||||
try {
|
||||
Ptr<ScheduleFactory>::Ref sf = ScheduleFactory::getInstance();
|
||||
configure(sf, scheduleConfig);
|
||||
|
||||
schedule = sf->getSchedule();
|
||||
schedule->install();
|
||||
} catch (std::invalid_argument &e) {
|
||||
CPPUNIT_FAIL("semantic error in configuration file");
|
||||
} catch (xmlpp::exception &e) {
|
||||
CPPUNIT_FAIL("error parsing configuration file");
|
||||
} catch (std::exception &e) {
|
||||
CPPUNIT_FAIL(e.what());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*------------------------------------------------------------------------------
|
||||
* Clean up the test environment
|
||||
*----------------------------------------------------------------------------*/
|
||||
void
|
||||
RemoveFromScheduleMethodTest :: tearDown(void) throw ()
|
||||
{
|
||||
schedule->uninstall();
|
||||
}
|
||||
|
||||
|
||||
/*------------------------------------------------------------------------------
|
||||
* Just a very simple smoke test
|
||||
*----------------------------------------------------------------------------*/
|
||||
void
|
||||
RemoveFromScheduleMethodTest :: firstTest(void)
|
||||
throw (CPPUNIT_NS::Exception)
|
||||
{
|
||||
Ptr<UploadPlaylistMethod>::Ref uploadMethod(
|
||||
new UploadPlaylistMethod());
|
||||
Ptr<RemoveFromScheduleMethod>::Ref removeMethod(
|
||||
new RemoveFromScheduleMethod());
|
||||
XmlRpc::XmlRpcValue rootParameter;
|
||||
XmlRpc::XmlRpcValue parameters;
|
||||
XmlRpc::XmlRpcValue result;
|
||||
struct tm time;
|
||||
Ptr<UniqueId>::Ref entryId;
|
||||
|
||||
// first schedule (upload) a playlist)
|
||||
parameters["playlistId"] = 1;
|
||||
time.tm_year = 2001;
|
||||
time.tm_mon = 11;
|
||||
time.tm_mday = 12;
|
||||
time.tm_hour = 10;
|
||||
time.tm_min = 0;
|
||||
time.tm_sec = 0;
|
||||
parameters["playtime"] = &time;
|
||||
rootParameter[0] = parameters;
|
||||
|
||||
uploadMethod->execute(rootParameter, result);
|
||||
entryId.reset(new UniqueId((int) result));
|
||||
|
||||
parameters.clear();
|
||||
result.clear();
|
||||
parameters["scheduleEntryId"] = (int) entryId->getId();
|
||||
rootParameter[0] = parameters;
|
||||
|
||||
removeMethod->execute(rootParameter, result);
|
||||
CPPUNIT_ASSERT(result);
|
||||
}
|
||||
|
||||
|
||||
/*------------------------------------------------------------------------------
|
||||
* A test to try to remove a not-scheduled entry
|
||||
*----------------------------------------------------------------------------*/
|
||||
void
|
||||
RemoveFromScheduleMethodTest :: negativeTest(void)
|
||||
throw (CPPUNIT_NS::Exception)
|
||||
{
|
||||
Ptr<RemoveFromScheduleMethod>::Ref removeMethod(
|
||||
new RemoveFromScheduleMethod());
|
||||
XmlRpc::XmlRpcValue rootParameter;
|
||||
XmlRpc::XmlRpcValue parameters;
|
||||
XmlRpc::XmlRpcValue result;
|
||||
Ptr<UniqueId>::Ref entryId(new UniqueId(9999));
|
||||
|
||||
parameters["scheduleEntryId"] = (int) entryId->getId();
|
||||
rootParameter[0] = parameters;
|
||||
|
||||
removeMethod->execute(rootParameter, result);
|
||||
CPPUNIT_ASSERT(!result);
|
||||
}
|
||||
|
|
@ -0,0 +1,143 @@
|
|||
/*------------------------------------------------------------------------------
|
||||
|
||||
Copyright (c) 2004 Media Development Loan Fund
|
||||
|
||||
This file is part of the LiveSupport project.
|
||||
http://livesupport.campware.org/
|
||||
To report bugs, send an e-mail to bugs@campware.org
|
||||
|
||||
LiveSupport is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
LiveSupport is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with LiveSupport; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
|
||||
Author : $Author: maroy $
|
||||
Version : $Revision: 1.1 $
|
||||
Location : $Source: /home/paul/cvs2svn-livesupport/newcvsrepo/livesupport/products/scheduler/src/RemoveFromScheduleMethodTest.h,v $
|
||||
|
||||
------------------------------------------------------------------------------*/
|
||||
#ifndef RemoveFromScheduleMethodTest_h
|
||||
#define RemoveFromScheduleMethodTest_h
|
||||
|
||||
#ifndef __cplusplus
|
||||
#error This is a C++ include file
|
||||
#endif
|
||||
|
||||
|
||||
/* ============================================================ include files */
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "configure.h"
|
||||
#endif
|
||||
|
||||
#include <cppunit/extensions/HelperMacros.h>
|
||||
|
||||
|
||||
namespace LiveSupport {
|
||||
namespace Scheduler {
|
||||
|
||||
using namespace LiveSupport;
|
||||
using namespace LiveSupport::Core;
|
||||
|
||||
/* ================================================================ constants */
|
||||
|
||||
|
||||
/* =================================================================== macros */
|
||||
|
||||
|
||||
/* =============================================================== data types */
|
||||
|
||||
/**
|
||||
* Unit test for the RemoveFromScheduleMethod class.
|
||||
*
|
||||
* @author $Author: maroy $
|
||||
* @version $Revision: 1.1 $
|
||||
* @see RemoveFromScheduleMethod
|
||||
*/
|
||||
class RemoveFromScheduleMethodTest : public CPPUNIT_NS::TestFixture
|
||||
{
|
||||
CPPUNIT_TEST_SUITE(RemoveFromScheduleMethodTest);
|
||||
CPPUNIT_TEST(firstTest);
|
||||
CPPUNIT_TEST(negativeTest);
|
||||
CPPUNIT_TEST_SUITE_END();
|
||||
|
||||
/**
|
||||
* The name of the configuration file for the schedule factory.
|
||||
*/
|
||||
static const std::string scheduleConfig;
|
||||
|
||||
/**
|
||||
* The schedule used during the test.
|
||||
*/
|
||||
Ptr<ScheduleInterface>::Ref schedule;
|
||||
|
||||
/**
|
||||
* Configure a configurable with an XML file.
|
||||
*
|
||||
* @param configurable configure this
|
||||
* @param fileName the name of the XML file to configure with.
|
||||
* @exception std::invalid_argument on configuration errors.
|
||||
* @exception xmlpp::exception on XML parsing errors.
|
||||
*/
|
||||
void
|
||||
configure(Ptr<Configurable>::Ref configurable,
|
||||
std::string fileName)
|
||||
throw (std::invalid_argument,
|
||||
xmlpp::exception);
|
||||
|
||||
|
||||
protected:
|
||||
|
||||
/**
|
||||
* A simple test.
|
||||
*
|
||||
* @exception CPPUNIT_NS::Exception on test failures.
|
||||
*/
|
||||
void
|
||||
firstTest(void) throw (CPPUNIT_NS::Exception);
|
||||
|
||||
/**
|
||||
* A simple test for trying to remove a non-existent entry.
|
||||
*
|
||||
* @exception CPPUNIT_NS::Exception on test failures.
|
||||
*/
|
||||
void
|
||||
negativeTest(void) throw (CPPUNIT_NS::Exception);
|
||||
|
||||
public:
|
||||
|
||||
/**
|
||||
* Set up the environment for the test case.
|
||||
*/
|
||||
void
|
||||
setUp(void) throw ();
|
||||
|
||||
/**
|
||||
* Clean up the environment after the test case.
|
||||
*/
|
||||
void
|
||||
tearDown(void) throw ();
|
||||
};
|
||||
|
||||
|
||||
/* ================================================= external data structures */
|
||||
|
||||
|
||||
/* ====================================================== function prototypes */
|
||||
|
||||
|
||||
} // namespace Scheduler
|
||||
} // namespace LiveSupport
|
||||
|
||||
#endif // RemoveFromScheduleMethodTest_h
|
||||
|
|
@ -22,7 +22,7 @@
|
|||
|
||||
|
||||
Author : $Author: maroy $
|
||||
Version : $Revision: 1.2 $
|
||||
Version : $Revision: 1.3 $
|
||||
Location : $Source: /home/paul/cvs2svn-livesupport/newcvsrepo/livesupport/products/scheduler/src/ScheduleInterface.h,v $
|
||||
|
||||
------------------------------------------------------------------------------*/
|
||||
|
@ -70,7 +70,7 @@ using namespace LiveSupport::Core;
|
|||
* The generic interface for the component scheduling events.
|
||||
*
|
||||
* @author $Author: maroy $
|
||||
* @version $Revision: 1.2 $
|
||||
* @version $Revision: 1.3 $
|
||||
*/
|
||||
class ScheduleInterface : virtual public Installable
|
||||
{
|
||||
|
@ -92,10 +92,11 @@ class ScheduleInterface : virtual public Installable
|
|||
*
|
||||
* @param playlist the playlist to schedule.
|
||||
* @param playtime the time to schedule the playlist for.
|
||||
* @return the id of the newly created playlist.
|
||||
* @exception std::invalid_argument if the there is something
|
||||
* already scheduled for the duration of the playlist.
|
||||
*/
|
||||
virtual void
|
||||
virtual Ptr<UniqueId>::Ref
|
||||
schedulePlaylist(Ptr<Playlist>::Ref playlist,
|
||||
Ptr<ptime>::Ref playtime)
|
||||
throw (std::invalid_argument)
|
||||
|
@ -115,6 +116,30 @@ class ScheduleInterface : virtual public Installable
|
|||
Ptr<ptime>::Ref toTime)
|
||||
throw ()
|
||||
= 0;
|
||||
|
||||
/**
|
||||
* Tell if a schedule entry exists by the give name.
|
||||
*
|
||||
* @param entryId the id of the schedule entry to check for.
|
||||
* @return true if the schedule entry exists in the Schedule,
|
||||
* false otherwise.
|
||||
*/
|
||||
virtual bool
|
||||
scheduleEntryExists(Ptr<const UniqueId>::Ref entryId)
|
||||
throw ()
|
||||
= 0;
|
||||
|
||||
/**
|
||||
* Remove a schedule entry from the schedule.
|
||||
*
|
||||
* @param entryId the id of the schedule to remove.
|
||||
* @exception std::invalid_argument if no schedule with the specified
|
||||
* id exists.
|
||||
*/
|
||||
virtual void
|
||||
removeFromSchedule(Ptr<const UniqueId>::Ref entryId)
|
||||
throw (std::invalid_argument)
|
||||
= 0;
|
||||
};
|
||||
|
||||
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
|
||||
|
||||
Author : $Author: maroy $
|
||||
Version : $Revision: 1.3 $
|
||||
Version : $Revision: 1.4 $
|
||||
Location : $Source: /home/paul/cvs2svn-livesupport/newcvsrepo/livesupport/products/scheduler/src/SchedulerDaemon.cxx,v $
|
||||
|
||||
------------------------------------------------------------------------------*/
|
||||
|
@ -165,6 +165,7 @@ SchedulerDaemon :: registerXmlRpcFunctions(
|
|||
xmlRpcServer->addMethod(uploadPlaylistMethod.get());
|
||||
xmlRpcServer->addMethod(displayScheduleMethod.get());
|
||||
xmlRpcServer->addMethod(displayPlaylistMethod.get());
|
||||
xmlRpcServer->addMethod(removeFromScheduleMethod.get());
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
|
||||
|
||||
Author : $Author: maroy $
|
||||
Version : $Revision: 1.4 $
|
||||
Version : $Revision: 1.5 $
|
||||
Location : $Source: /home/paul/cvs2svn-livesupport/newcvsrepo/livesupport/products/scheduler/src/SchedulerDaemon.h,v $
|
||||
|
||||
------------------------------------------------------------------------------*/
|
||||
|
@ -63,6 +63,7 @@
|
|||
#include "UploadPlaylistMethod.h"
|
||||
#include "DisplayScheduleMethod.h"
|
||||
#include "DisplayPlaylistMethod.h"
|
||||
#include "RemoveFromScheduleMethod.h"
|
||||
#include "XmlRpcDaemon.h"
|
||||
|
||||
|
||||
|
@ -118,7 +119,7 @@ using namespace LiveSupport::Core;
|
|||
* </code></pre>
|
||||
*
|
||||
* @author $Author: maroy $
|
||||
* @version $Revision: 1.4 $
|
||||
* @version $Revision: 1.5 $
|
||||
* @see ConnectionManagerFactory
|
||||
* @see StorageClientFactory
|
||||
* @see ScheduleFactory
|
||||
|
@ -150,6 +151,11 @@ class SchedulerDaemon : public Installable,
|
|||
*/
|
||||
Ptr<DisplayPlaylistMethod>::Ref displayPlaylistMethod;
|
||||
|
||||
/**
|
||||
* The RemoveFromScheduleMethod the daemon is providing.
|
||||
*/
|
||||
Ptr<RemoveFromScheduleMethod>::Ref removeFromScheduleMethod;
|
||||
|
||||
/**
|
||||
* Default constructor.
|
||||
*/
|
||||
|
@ -159,6 +165,7 @@ class SchedulerDaemon : public Installable,
|
|||
uploadPlaylistMethod.reset(new UploadPlaylistMethod());
|
||||
displayScheduleMethod.reset(new DisplayScheduleMethod());
|
||||
displayPlaylistMethod.reset(new DisplayPlaylistMethod());
|
||||
removeFromScheduleMethod.reset(new RemoveFromScheduleMethod());
|
||||
}
|
||||
|
||||
protected:
|
||||
|
|
|
@ -0,0 +1,168 @@
|
|||
/*------------------------------------------------------------------------------
|
||||
|
||||
Copyright (c) 2004 Media Development Loan Fund
|
||||
|
||||
This file is part of the LiveSupport project.
|
||||
http://livesupport.campware.org/
|
||||
To report bugs, send an e-mail to bugs@campware.org
|
||||
|
||||
LiveSupport is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
LiveSupport is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with LiveSupport; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
|
||||
Author : $Author: maroy $
|
||||
Version : $Revision: 1.1 $
|
||||
Location : $Source: /home/paul/cvs2svn-livesupport/newcvsrepo/livesupport/products/scheduler/src/Attic/SchedulerDaemonRemoveFromScheduleTest.cxx,v $
|
||||
|
||||
------------------------------------------------------------------------------*/
|
||||
|
||||
/* ============================================================ include files */
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "configure.h"
|
||||
#endif
|
||||
|
||||
#if HAVE_UNISTD_H
|
||||
#include <unistd.h>
|
||||
#else
|
||||
#error "Need unistd.h"
|
||||
#endif
|
||||
|
||||
|
||||
#include <string>
|
||||
#include <XmlRpcClient.h>
|
||||
#include <XmlRpcValue.h>
|
||||
|
||||
#include "SchedulerDaemon.h"
|
||||
#include "SchedulerDaemonRemoveFromScheduleTest.h"
|
||||
|
||||
|
||||
using namespace XmlRpc;
|
||||
using namespace LiveSupport::Scheduler;
|
||||
|
||||
/* =================================================== local data structures */
|
||||
|
||||
|
||||
/* ================================================ local constants & macros */
|
||||
|
||||
CPPUNIT_TEST_SUITE_REGISTRATION(SchedulerDaemonRemoveFromScheduleTest);
|
||||
|
||||
/**
|
||||
* The name of the configuration file for the scheduler daemon.
|
||||
*/
|
||||
static const std::string configFileName = "etc/scheduler.xml";
|
||||
|
||||
|
||||
/* =============================================== local function prototypes */
|
||||
|
||||
|
||||
/* ============================================================= module code */
|
||||
|
||||
/*------------------------------------------------------------------------------
|
||||
* Set up the test environment
|
||||
*----------------------------------------------------------------------------*/
|
||||
void
|
||||
SchedulerDaemonRemoveFromScheduleTest :: setUp(void) throw ()
|
||||
{
|
||||
Ptr<SchedulerDaemon>::Ref daemon = SchedulerDaemon::getInstance();
|
||||
|
||||
if (!daemon->isConfigured()) {
|
||||
try {
|
||||
std::auto_ptr<xmlpp::DomParser>
|
||||
parser(new xmlpp::DomParser(configFileName, true));
|
||||
const xmlpp::Document * document = parser->get_document();
|
||||
daemon->configure(*(document->get_root_node()));
|
||||
} catch (std::invalid_argument &e) {
|
||||
std::cerr << e.what() << std::endl;
|
||||
CPPUNIT_FAIL("semantic error in configuration file");
|
||||
} catch (xmlpp::exception &e) {
|
||||
std::cerr << e.what() << std::endl;
|
||||
CPPUNIT_FAIL("error parsing configuration file");
|
||||
}
|
||||
}
|
||||
|
||||
daemon->install();
|
||||
// daemon->start();
|
||||
// sleep(5);
|
||||
}
|
||||
|
||||
|
||||
/*------------------------------------------------------------------------------
|
||||
* Clean up the test environment
|
||||
*----------------------------------------------------------------------------*/
|
||||
void
|
||||
SchedulerDaemonRemoveFromScheduleTest :: tearDown(void) throw ()
|
||||
{
|
||||
Ptr<SchedulerDaemon>::Ref daemon = SchedulerDaemon::getInstance();
|
||||
|
||||
// daemon->stop();
|
||||
daemon->uninstall();
|
||||
}
|
||||
|
||||
|
||||
/*------------------------------------------------------------------------------
|
||||
* A simple smoke test.
|
||||
*----------------------------------------------------------------------------*/
|
||||
void
|
||||
SchedulerDaemonRemoveFromScheduleTest :: simpleTest(void)
|
||||
throw (CPPUNIT_NS::Exception)
|
||||
{
|
||||
XmlRpcValue parameters;
|
||||
XmlRpcValue result;
|
||||
struct tm time;
|
||||
|
||||
XmlRpcClient xmlRpcClient("localhost", 3344, "/RPC2", false);
|
||||
|
||||
// first schedule a playlist, so that there is something to remove
|
||||
parameters["playlistId"] = 1;
|
||||
time.tm_year = 2001;
|
||||
time.tm_mon = 11;
|
||||
time.tm_mday = 12;
|
||||
time.tm_hour = 10;
|
||||
time.tm_min = 0;
|
||||
time.tm_sec = 0;
|
||||
parameters["playtime"] = &time;
|
||||
|
||||
xmlRpcClient.execute("uploadPlaylist", parameters, result);
|
||||
CPPUNIT_ASSERT(result.valid());
|
||||
|
||||
Ptr<UniqueId>::Ref entryId(new UniqueId((int) result));
|
||||
|
||||
parameters["scheduleEntryId"] = (int) entryId->getId();
|
||||
|
||||
xmlRpcClient.execute("removeFromSchedule", parameters, result);
|
||||
CPPUNIT_ASSERT(result.valid());
|
||||
CPPUNIT_ASSERT(((bool)result) == true);
|
||||
}
|
||||
|
||||
|
||||
/*------------------------------------------------------------------------------
|
||||
* A simple negative test.
|
||||
*----------------------------------------------------------------------------*/
|
||||
void
|
||||
SchedulerDaemonRemoveFromScheduleTest :: negativeTest(void)
|
||||
throw (CPPUNIT_NS::Exception)
|
||||
{
|
||||
XmlRpcValue parameters;
|
||||
XmlRpcValue result;
|
||||
|
||||
XmlRpcClient xmlRpcClient("localhost", 3344, "/RPC2", false);
|
||||
|
||||
parameters["scheduleEntryId"] = 9999;
|
||||
|
||||
xmlRpcClient.execute("removeFromSchedule", parameters, result);
|
||||
CPPUNIT_ASSERT(result.valid());
|
||||
CPPUNIT_ASSERT(((bool)result) == false);
|
||||
}
|
||||
|
|
@ -0,0 +1,117 @@
|
|||
/*------------------------------------------------------------------------------
|
||||
|
||||
Copyright (c) 2004 Media Development Loan Fund
|
||||
|
||||
This file is part of the LiveSupport project.
|
||||
http://livesupport.campware.org/
|
||||
To report bugs, send an e-mail to bugs@campware.org
|
||||
|
||||
LiveSupport is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
LiveSupport is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with LiveSupport; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
|
||||
Author : $Author: maroy $
|
||||
Version : $Revision: 1.1 $
|
||||
Location : $Source: /home/paul/cvs2svn-livesupport/newcvsrepo/livesupport/products/scheduler/src/Attic/SchedulerDaemonRemoveFromScheduleTest.h,v $
|
||||
|
||||
------------------------------------------------------------------------------*/
|
||||
#ifndef SchedulerDaemonRemoveFromScheduleTest_h
|
||||
#define SchedulerDaemonRemoveFromScheduleTest_h
|
||||
|
||||
#ifndef __cplusplus
|
||||
#error This is a C++ include file
|
||||
#endif
|
||||
|
||||
|
||||
/* ============================================================ include files */
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "configure.h"
|
||||
#endif
|
||||
|
||||
#include <cppunit/extensions/HelperMacros.h>
|
||||
|
||||
|
||||
namespace LiveSupport {
|
||||
namespace Scheduler {
|
||||
|
||||
using namespace LiveSupport;
|
||||
|
||||
/* ================================================================ constants */
|
||||
|
||||
|
||||
/* =================================================================== macros */
|
||||
|
||||
|
||||
/* =============================================================== data types */
|
||||
|
||||
/**
|
||||
* Unit test to test the removeFromSchedule XML-RPC call.
|
||||
*
|
||||
* @author $Author: maroy $
|
||||
* @version $Revision: 1.1 $
|
||||
* @see SchedulerDaemon
|
||||
*/
|
||||
class SchedulerDaemonRemoveFromScheduleTest : public CPPUNIT_NS::TestFixture
|
||||
{
|
||||
CPPUNIT_TEST_SUITE(SchedulerDaemonRemoveFromScheduleTest);
|
||||
CPPUNIT_TEST(simpleTest);
|
||||
CPPUNIT_TEST(negativeTest);
|
||||
CPPUNIT_TEST_SUITE_END();
|
||||
|
||||
protected:
|
||||
|
||||
/**
|
||||
* Simple smoke test.
|
||||
*
|
||||
* @exception CPPUNIT_NS::Exception on test failures.
|
||||
*/
|
||||
void
|
||||
simpleTest(void) throw (CPPUNIT_NS::Exception);
|
||||
|
||||
/**
|
||||
* Simple negative test.
|
||||
*
|
||||
* @exception CPPUNIT_NS::Exception on test failures.
|
||||
*/
|
||||
void
|
||||
negativeTest(void) throw (CPPUNIT_NS::Exception);
|
||||
|
||||
public:
|
||||
|
||||
/**
|
||||
* Set up the environment for the test case.
|
||||
*/
|
||||
void
|
||||
setUp(void) throw ();
|
||||
|
||||
/**
|
||||
* Clean up the environment after the test case.
|
||||
*/
|
||||
void
|
||||
tearDown(void) throw ();
|
||||
};
|
||||
|
||||
|
||||
/* ================================================= external data structures */
|
||||
|
||||
|
||||
/* ====================================================== function prototypes */
|
||||
|
||||
|
||||
} // namespace Scheduler
|
||||
} // namespace LiveSupport
|
||||
|
||||
#endif // SchedulerDaemonRemoveFromScheduleTest_h
|
||||
|
|
@ -22,7 +22,7 @@
|
|||
|
||||
|
||||
Author : $Author: maroy $
|
||||
Version : $Revision: 1.2 $
|
||||
Version : $Revision: 1.3 $
|
||||
Location : $Source: /home/paul/cvs2svn-livesupport/newcvsrepo/livesupport/products/scheduler/src/Attic/SchedulerDaemonUploadTest.cxx,v $
|
||||
|
||||
------------------------------------------------------------------------------*/
|
||||
|
@ -135,6 +135,6 @@ SchedulerDaemonUploadTest :: simpleTest(void)
|
|||
parameters["playtime"] = &time;
|
||||
|
||||
xmlRpcClient.execute("uploadPlaylist", parameters, result);
|
||||
CPPUNIT_ASSERT(result);
|
||||
CPPUNIT_ASSERT(result.valid());
|
||||
}
|
||||
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
|
||||
|
||||
Author : $Author: maroy $
|
||||
Version : $Revision: 1.3 $
|
||||
Version : $Revision: 1.4 $
|
||||
Location : $Source: /home/paul/cvs2svn-livesupport/newcvsrepo/livesupport/products/scheduler/src/UploadPlaylistMethod.cxx,v $
|
||||
|
||||
------------------------------------------------------------------------------*/
|
||||
|
@ -135,11 +135,11 @@ UploadPlaylistMethod :: extractPlayschedule(
|
|||
|
||||
|
||||
/*------------------------------------------------------------------------------
|
||||
* Execute the stop XML-RPC function call.
|
||||
* Execute the upload playlist method XML-RPC function call.
|
||||
*----------------------------------------------------------------------------*/
|
||||
void
|
||||
UploadPlaylistMethod :: execute( XmlRpc::XmlRpcValue & parameters,
|
||||
XmlRpc::XmlRpcValue & returnValue)
|
||||
UploadPlaylistMethod :: execute(XmlRpc::XmlRpcValue & parameters,
|
||||
XmlRpc::XmlRpcValue & returnValue)
|
||||
throw ()
|
||||
{
|
||||
try {
|
||||
|
@ -151,6 +151,7 @@ UploadPlaylistMethod :: execute( XmlRpc::XmlRpcValue & parameters,
|
|||
|
||||
Ptr<UniqueId>::Ref id = extractPlaylistId(parameters[0]);
|
||||
Ptr<ptime>::Ref playschedule = extractPlayschedule(parameters[0]);
|
||||
Ptr<UniqueId>::Ref scheduleEntryId;
|
||||
|
||||
Ptr<StorageClientFactory>::Ref scf;
|
||||
Ptr<StorageClientInterface>::Ref storage;
|
||||
|
@ -177,15 +178,14 @@ UploadPlaylistMethod :: execute( XmlRpc::XmlRpcValue & parameters,
|
|||
return;
|
||||
}
|
||||
|
||||
schedule->schedulePlaylist(playlist, playschedule);
|
||||
scheduleEntryId = schedule->schedulePlaylist(playlist, playschedule);
|
||||
|
||||
returnValue = XmlRpc::XmlRpcValue((int) scheduleEntryId->getId());
|
||||
|
||||
} catch (std::invalid_argument &e) {
|
||||
// TODO: mark error
|
||||
returnValue = XmlRpc::XmlRpcValue(false);
|
||||
return;
|
||||
}
|
||||
|
||||
// TODO
|
||||
returnValue = XmlRpc::XmlRpcValue(true);
|
||||
}
|
||||
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
|
||||
|
||||
Author : $Author: maroy $
|
||||
Version : $Revision: 1.3 $
|
||||
Version : $Revision: 1.4 $
|
||||
Location : $Source: /home/paul/cvs2svn-livesupport/newcvsrepo/livesupport/products/scheduler/src/UploadPlaylistMethod.h,v $
|
||||
|
||||
------------------------------------------------------------------------------*/
|
||||
|
@ -76,9 +76,11 @@ using namespace LiveSupport::Core;
|
|||
* <li>playtime - the time when the playlist should be scheduled,
|
||||
* an ISO 8601 DateTime field</li>
|
||||
* </ul>
|
||||
* The return value is an int, the id of the schedule entry created
|
||||
* by uploading, or a boolean false, if there were errors.
|
||||
*
|
||||
* @author $Author: maroy $
|
||||
* @version $Revision: 1.3 $
|
||||
* @version $Revision: 1.4 $
|
||||
*/
|
||||
class UploadPlaylistMethod : public XmlRpc::XmlRpcServerMethod
|
||||
{
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
|
||||
|
||||
Author : $Author: maroy $
|
||||
Version : $Revision: 1.3 $
|
||||
Version : $Revision: 1.4 $
|
||||
Location : $Source: /home/paul/cvs2svn-livesupport/newcvsrepo/livesupport/products/scheduler/src/UploadPlaylistMethodTest.cxx,v $
|
||||
|
||||
------------------------------------------------------------------------------*/
|
||||
|
@ -169,7 +169,7 @@ UploadPlaylistMethodTest :: firstTest(void)
|
|||
rootParameter[0] = parameters;
|
||||
|
||||
method->execute(rootParameter, result);
|
||||
CPPUNIT_ASSERT(result);
|
||||
CPPUNIT_ASSERT(result.valid());
|
||||
}
|
||||
|
||||
|
||||
|
@ -198,7 +198,7 @@ UploadPlaylistMethodTest :: overlappingPlaylists(void)
|
|||
rootParameter[0] = parameters;
|
||||
|
||||
method->execute(rootParameter, result);
|
||||
CPPUNIT_ASSERT(result);
|
||||
CPPUNIT_ASSERT(result.valid());
|
||||
|
||||
// try to load the same one, but in an overlapping time region
|
||||
// (we know that playlist with id 1 in 1 hour long)
|
||||
|
@ -227,7 +227,7 @@ UploadPlaylistMethodTest :: overlappingPlaylists(void)
|
|||
rootParameter[0] = parameters;
|
||||
|
||||
method->execute(rootParameter, result);
|
||||
CPPUNIT_ASSERT(result);
|
||||
CPPUNIT_ASSERT(result.valid());
|
||||
|
||||
// try to load the same one, this time overlapping both previos instnaces
|
||||
parameters["playlistId"] = 1;
|
||||
|
|
Loading…
Reference in New Issue