Author: ygrego Date: 2015-05-21 12:29:59 +0000 (Thu, 21 May 2015) New Revision: 1422 Url: http://forge.nuiton.org/projects/sandbox/repository/revisions/1422 Log: Implementation of the methods "createChannelList", "_createChannelATSC_T", "_createChannelIPTV", "_createChannelDVB_SI_DIRECT", "_createChannelDVBOrISDB" and "_convertInInteger". Modified: oipf/js/impl/VideoBroadcastObject.js Modified: oipf/js/impl/VideoBroadcastObject.js =================================================================== --- oipf/js/impl/VideoBroadcastObject.js 2015-05-20 15:21:06 UTC (rev 1421) +++ oipf/js/impl/VideoBroadcastObject.js 2015-05-21 12:29:59 UTC (rev 1422) @@ -904,5 +904,158 @@ } } + }, + + /* + * Description: + * Creates a ChannelList object from the specified SD&S Broadcast Discovery + * Record. Channels in the returned channel list will not be included in the + * channel list that can be retrieved via calls to getChannelConfig(). + * + * Arguments: + * - bdr: An XML-encoded string containing an SD&S Broadcast Discovery + * Record as specified in [OIPF_META2]. If the string is not a valid + * Broadcast Discovery Record, this method SHALL return null. + * + * Return: ChannelList + * + * FIXME + * - Yannis 21/05/2015 Validate the parameter bdr + */ + createChannelList: function(bdr) { + var channelListArray = bdr.split(","); + var channelList = new ChannelList(); + var channelInfoNumber = { + 3: true, + 4: true, + 5: true, + 6: true + }; + + if (channelListArray.length > 1) { + + for (var i = 0, li = channelListArray.length; i < li; i++) { + var channelInfo = channelListArray[i]; + var channelInfoArray = channelInfo.split("-"); + + var isChannelInfoNumberExist = + channelInfoNumber[channelInfoArray.length]; + + if (!isChannelInfoNumberExist) { + return null; + } + //Validation of channel information return null if false + + //Create the channel + var channelObject = this._createChannel(channelInfoArray); + channelList.push(channelObject); + } + + if (!this._localChannelList) { + this._localChannelList = []; + } + + this._localChannelList.push(channelList); + + return channelList; + } + + return null; + }, + + /* + * We consider that the parameter of this method is valid concerning + * the type of channel information it contains but they are string-encoded. + * And call the associated method which must process a specific + * group of channel information according to the number of information. + */ + _createChannel: function(minimalChannelInfoArray) { + var mapping = { + 3: "_createChannelATSC_T", + 4: "_createChannelDVB_SI_DIRECT", + 5: "_createChannelDVBOrISDB", + 6: "_createChannelIPTV " + }; + var channelInfoNumber = minimalChannelInfoArray.length; + return this[mapping[channelInfoNumber]].call(minimalChannelInfoArray); + }, + + /* + * This method must transform the information which must be of type Integer. + * Then create and return a Channel object. + * The parameter contain in this order: + * 0:Integer, 1:Integer, 2:String + * + * Return: Channel + */ + _createChannelATSC_T: function(channelInfoArray) { + var i = 0; + + return new Channel( + this._convertInInteger(channelInfoArray[i++]), + this._convertInInteger(channelInfoArray[i++]), + channelInfoArray[i++]); + }, + + /* + * This method must transform the information which must be of type Integer. + * Then create and return a Channel object. + * The parameter contain in this order: + * 0:Integer, 1:Integer, 2:Integer, 3:Integer, 4:String, 5:String + * + * Return: Channel + */ + _createChannelIPTV: function(channelInfoArray) { + var i = 0; + + return new Channel( + this._convertInInteger(channelInfoArray[i++]), + this._convertInInteger(channelInfoArray[i++]), + this._convertInInteger(channelInfoArray[i++]), + this._convertInInteger(channelInfoArray[i++]), + channelInfoArray[i++], + channelInfoArray[i++]); + }, + + /* + * This method must transform the information which must be of type Integer. + * Then create and return a Channel object. + * The parameter contain in this order: + * 0:Integer, 1:Integer, 2:Integer, 3:Integer, 4:String + * + * Return: Channel + */ + _createChannelDVBOrISDB: function(channelInfoArray) { + var i = 0; + + return new Channel( + this._convertInInteger(channelInfoArray[i++]), + this._convertInInteger(channelInfoArray[i++]), + this._convertInInteger(channelInfoArray[i++]), + this._convertInInteger(channelInfoArray[i++]), + channelInfoArray[i++]); + }, + + /* + * This method must transform the information which must be of type Integer. + * Then create and return a Channel object. + * The parameter contain in this order: + * 0:Integer, 1:String, 2:Integer, 3:String + * + * Return: Channel + */ + _createChannelDVB_SI_DIRECT: function(channelInfoArray) { + var i = 0; + + return new Channel( + this._convertInInteger(channelInfoArray[i++]), + channelInfoArray[i++], + this._convertInInteger(channelInfoArray[i++]), + channelInfoArray[i++]); + }, + + _convertInInteger: function(stringValue) { + return Number.parseInt(stringValue); } + }); \ No newline at end of file
participants (1)
-
ygregoï¼ users.nuiton.org