/// <summary>
        /// Maps a single aggregate to the UI datasource
        /// returned by the web service, including any additional links
        /// </summary>
        /// <param name="aggregate">the Windfarm Data</param>
        /// <param name="generator">The instance of the LinkGenerator to generate the Links</param>
        /// <returns>UI data source and links</returns>
        //public Windfarm MapAggregate(Aggregate aggregate, IAggregateLinkGenerator generator)
        public Windfarm MapAggregate(Aggregate aggregate, ILinkGenerator<Core.Model.Aggregate> generator)
        {
            if (aggregate == null)
                return  new Windfarm();

            //  Create a data segment and a link for each datatype
            var data = new List<WindfarmData>();
            foreach (var d in aggregate.Data)
            {
                data.Add(new WindfarmData()
                {
                    Type = Enum.GetName(typeof(DataTypeEnum), d.DataType),
                    Data = d.Data
                });
            }
            //  Create the UiAggregate
            var uiAggregate = new Windfarm()
            {
                Id = aggregate.Id,
                Name = aggregate.Name,
                Data = data,
                Links = generator.GenerateItemLinks(aggregate)
            };
            return uiAggregate;
        }
        /// <summary>
        /// Maps a single aggregate to the UI datasource, and only includes the specified datatype segment
        /// returned by the web service, including any additional links
        /// </summary>
        /// <param name="aggregate">the Windfarm Data</param>
        /// <param name="includeOnlyDataType">Include only the specified datatype segment</param>
        /// <param name="generator">Instance of the Link generator class</param>
        /// <returns>UI data source and links</returns>
        //public Windfarm MapAggregate(Core.Model.Aggregate aggregate, DataTypeEnum includeOnlyDataType, IAggregateLinkGenerator generator)
        public Windfarm MapAggregate(Core.Model.Aggregate aggregate, DataTypeEnum includeOnlyDataType, ILinkGenerator<Core.Model.Aggregate> generator)
        {
            if (aggregate == null)
                return new Windfarm();

            //  Create a data segment and a link for each datatype
            var data = new List<WindfarmData>();
            foreach (var d in aggregate.Data)
            {
                if (d.DataType == includeOnlyDataType)
                {
                    data.Add(new WindfarmData()
                    {
                        Type = Enum.GetName(typeof(DataTypeEnum), d.DataType),
                        Data = d.Data
                    });
                    break;      //  Found, now leave immediately
                }
            }
            //  Create the UiAggregate
            var uiAggregate = new Windfarm()
            {
                Id = aggregate.Id,
                Name = aggregate.Name,
                Data = data,
                Links = generator.GenerateItemLinks(aggregate)      //  Include links for all other datatypes
            };
            return uiAggregate;
        }