public static Report Create(Repository repository)
{
Report result = new Report() { GUID = Guid.NewGuid().ToString() };
result.FilePath = "NewReport." + Repository.SealReportFileExtension;
result.Repository = repository;
foreach (MetaSource source in repository.Sources)
{
ReportSource reportSource = result.AddSource(source);
}
if (result.Sources.Count == 0) result.AddSource(null);
foreach (ReportSource source in result.Sources)
{
source.LoadRepositoryMetaSources(repository);
//Remove the connection added
if (source.Connections.Count > 1) source.Connections.RemoveAll(i => i.IsEditable);
//And master table added for NoSQL
if (source.IsNoSQL && source.MetaData.Tables.Count > 1) source.MetaData.Tables.RemoveAll(i => i.IsEditable);
}
//and a first model
if (result.Models.Count == 0) result.AddModel();
//Add default views
ReportView defaultView = result.AddModelHTMLView();
if (defaultView == null) throw new Exception(string.Format("Unable to find any view in your repository. Check that your repository folder '{0}' contains all the default sub-folders and files...", repository.RepositoryPath));
result.ViewGUID = defaultView.GUID;
result.AddModelCSVView();
return result;
}