/// <summary>
 /// Returns the <see cref="Led"/> having the passed ID.
 /// The method throws a <see cref="ResourceNotFoundException"/> if the requested <see cref="Led"/> does not exist.
 /// The method throws a <see cref="BadRequestException"/> if the passed ID is invalid.
 /// </summary>
 /// <param name="ledId">ID of the requested <see cref="Led"/></param>
 /// <returns>the <see cref="Led"/> having the passed ID</returns>
 public Led GetLed(string ledId)
 {
     string[] split = ledId.Split(':');
     if (split.Length != 2)
     {
         throw new BadRequestException(BadRequestException.MSG_INVALID_LED_ID);
     }
     else
     {
         int         controllerId = ApiBase.ParseInt(split[0], BadRequestException.MSG_INVALID_LED_ID);
         int         ledNumber    = ApiBase.ParseInt(split[1], BadRequestException.MSG_INVALID_LED_ID);
         ILedDataSet lds          = _ledStorage.GetLed(controllerId, ledNumber);
         if (lds == null)
         {
             throw new ResourceNotFoundException(ResourceNotFoundException.MSG_LED_NOT_FOUND.Replace("{VALUE}", ledId));
         }
         else
         {
             Led led = new Led();
             led.ControllerId = lds.ControllerId;
             led.LedNumber    = lds.LedNumber;
             led.RgbValue     = lds.RgbValue;
             return(led);
         }
     }
 }
        /// <summary>
        /// Returns the list of <see cref="Leds"/> which are member of the <see cref="Group"/> having the specified <see cref="Group.Id"/>.
        /// The methods throws a <see cref="ResourceNotFoundException"/> if the underlying <see cref="Group"/> does not exist.
        /// </summary>
        /// <param name="id"><see cref="Group.Id"/></param>
        /// <returns><see cref="GroupLeds"/> containing the <see cref="Leds"/> being member of the <see cref="Group"/></returns>
        public GroupLeds GetGroupLeds(int id)
        {
            IGroupDataSet gds = _groupStorage.GetGroup(id);

            if (gds != null)
            {
                GroupLeds gLeds = new GroupLeds();
                gLeds.GroupId = gds.Id;
                foreach (string ledId in gds.Leds)
                {
                    ILedDataSet lds = _ledStorage.GetLed(ledId);
                    if (lds != null)
                    {
                        Led led = new Led();
                        led.ControllerId = lds.ControllerId;
                        led.LedNumber    = lds.LedNumber;
                        led.RgbValue     = lds.RgbValue;
                        gLeds.Leds.Add(led);
                    }
                }
                return(gLeds);
            }
            else
            {
                throw new ResourceNotFoundException(ResourceNotFoundException.MSG_GROUP_NOT_FOUND.Replace("{VALUE}", id + ""));
            }
        }
        public void SetColor(string id, string rgb)
        {
            ILedDataSet lds = GetLed(id);

            if (lds == null)
            {
                throw new Exception("Unknown LED");
            }
            else
            {
                lds.RgbValue = rgb;
            }
        }