private void SaveAndClose()
        {
            if (iReportDatasourceMetadataBindingSource.Current == null) return;

            var datasource = GetDataSourceForCurrentMetadata();
            var traversedDatasourceResult = _traverser.TraversePath(datasource, pathTextEdit.Text);

            var toReturn = new ReportDatasourceMetadataWithTraversal(CurrentMetadata, pathTextEdit.Text,
                                                                     traversedDatasourceResult.TraversedDataType);

            _aggregator.Publish(new DataSourceSelectedForReportMessage(toReturn, _report));
            Close();
        }
        public void SetReportDatasource(XtraReport report, IReportDatasourceMetadata md, string traversalPath)
        {
            //Fetch datasource from repository
            object datasourceObject = _designDataRepository.GetDataSourceByUniqueId(md.UniqueId);

            //Traverse path
            var traverseResult = _dataSourceTraverser.TraversePath(datasourceObject, traversalPath);
            //Set Datasource
            report.SetReportOnDataSourceAsCollection(traverseResult.TraversedDataSource);

            //Store association          
            var mdWithTraversal = new ReportDatasourceMetadataWithTraversal(md, traversalPath,
                                                                                  traverseResult.TraversedDataType);
            _reportMetadataAssociationRepository.AssociateWithReportAsCurrent(mdWithTraversal, report);
        }