/// <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; }