private readonly IDataService _service; // Data service for accessing Aggregates #endregion Fields #region Constructors /// <summary> /// Ctor: Accepts injected dataservice /// </summary> /// <param name="dataService">The DataService instance being injected</param> /// <param name="datasourceMapper">The mapper instance</param> public DatasourceController(IDataService dataService, IDatasourceMapper datasourceMapper, IDatasourceLinkGenerator generator) { if (dataService == null) throw new ArgumentNullException("dataService", "No valid dataservice supplied to the controller."); if (datasourceMapper == null) throw new ArgumentNullException("datasourceMapper", "No valid mapper class supplied to the controller."); if (generator == null) throw new ArgumentNullException("generator", "No valid link generator supplied to the controller."); _service = dataService; _mapper = datasourceMapper; _generator = generator; }
/// <summary> /// Responsibile for mapping a collection of Windfarm Data sources /// to the set of links to be returned by the web service /// </summary> /// <param name="sources">Collection of Windfarm Data sources</param> /// <param name="generator">The instance of the Link Generator</param> /// <returns>Collection of Links to the individaul aggregate data sources</returns> public IEnumerable<DataSourceInfo> MapSourcesToLinks(IEnumerable<Core.Model.DataSource> sources, IDatasourceLinkGenerator generator) { var results = new List<DataSourceInfo>(); foreach (var dataSource in sources) { var uiDataSource = new DataSourceInfo() { Title = dataSource.Title, Links = generator.GenerateCollectionLinks(dataSource) }; results.Add(uiDataSource); } return results; }
/// <summary> /// Maps a single aggregate data source to the UI datasource /// returned by the web service, including any additional links /// </summary> /// <param name="source">the Windfarm Data Source</param> /// <param name="generator">The instance of the Link Generator</param> /// <returns>UI data source and links</returns> public DataSource MapSource(Core.Model.DataSource source, IDatasourceLinkGenerator generator) { if (source == null) return new DataSource(); var datasource = new DataSource() { Id = source.Id, Title = source.Title, Description = source.Description, Copyright = source.CopyRight, Path = source.AccessPath, LastUpdateed = source.LastImported, Links = generator.GenerateItemLinks(source) }; return datasource; }