public static Tuple<string[],string[]> GetCurrentConfiguration(string node = null) { if (string.IsNullOrEmpty(node)) { _currentNode = NodeTree; } else { _currentNode = _currentNode.Folder.First(p => p.NodeName == node); } var files = _currentNode.Report.ToArray(); var directories = _currentNode.Folder.Select(p => p.NodeName).ToArray(); return new Tuple<string[], string[]>(files, directories); }
public static void LoadReportConfiguration(string path = null,Nodes node = null) { if (_configDictionnary == null) { _configDictionnary = new Dictionary<string, Report>(); } if(string.IsNullOrEmpty(path)) { path = configurationFolder; NodeTree = new Nodes() { NodeName = "Root" }; node = NodeTree; } var files = Directory.GetFiles(path); if (files != null && files.Length > 0) { foreach (var file in files) { ProccessFileConfiguration(file, node); } } var folders = Directory.GetDirectories(path); foreach (var folder in folders) { var foderName = Path.GetFileName(folder); var tmp = new Nodes() { NodeName = string.Format("{0}/{1}", node.NodeName, foderName) }; LoadReportConfiguration(folder, tmp); node.Folder.Add(tmp); } }
private static void ProccessFileConfiguration(string config,Nodes myNode) { try { var report = new Report(); var xConfig = XDocument.Load(config); var reportNode = xConfig.Descendants("report"); //Load Report attribute var node = reportNode.Attributes().ToList(); report.ReportName = node.First(p => p.Name.ToString() == "name").Value.ToString(); report.ReporTheme = node.First(p => p.Name.ToString() == "theme").Value.ToString(); report.CollectionName = node.First(p => p.Name.ToString() == "collection").Value.ToString(); report.ServerPort = node.First(p => p.Name.ToString() == "port").Value.ToString(); report.ServerUri = node.First(p => p.Name.ToString() == "server").Value.ToString(); report.DataBase = node.First(p => p.Name.ToString() == "database").Value.ToString(); report.ExcelExportFileName = node.FirstOrDefault(p => p.Name.ToString() == "ExcelFileName") == null ? (report.ReportName +".xls") : node.FirstOrDefault(p => p.Name.ToString() == "ExcelFileName").Value.ToString(); //Load Filter List var filterNode = reportNode.Descendants("filter").Descendants("item").ToList(); if(filterNode != null && filterNode.Count > 0) { report.FilterList = new List<Filter>(); foreach(var filter in filterNode) { var oneFilter = filter.Attributes().ToList(); var item = new Filter(); item.Name = oneFilter.First(p => p.Name == "name").Value.ToString(); item.DisplayName = oneFilter.First(p => p.Name == "displayName").Value.ToString(); item.Type = oneFilter.First(p => p.Name == "type").Value.ToString(); item.Source = oneFilter.FirstOrDefault(p => p.Name == "source") != null ? oneFilter.FirstOrDefault(p => p.Name == "source").Value.ToString() : null; report.FilterList.Add(item); } } //Load Query var test = reportNode.Descendants("query").ToList()[0].Value; //Load LambdaFilter report.Query = new List<string>(); var piplineList = reportNode.Descendants("query").Descendants("pipline").ToList(); foreach(var pipline in piplineList) { report.Query.Add(pipline.Value); } report.OriginQuery = new List<string>(); foreach(var item in report.Query) { report.OriginQuery.Add(item); } report.LambdaQuery = AggregationQueryProcessing.LambdaFilterProcessing(reportNode.Descendants("lambdaFilter").ToList()[0]); //Load Grid Definition report.Grid = new GridDefinittion(); var gridNode = reportNode.Descendants("grid"); report.Grid.MaxInPage = int.Parse( gridNode.Attributes().ToList().First(p => p.Name == "maxInPage").Value.ToString()); report.Grid.Column = new List<ColumnDefinition>(); var columnsNode = gridNode.Descendants("column").ToList(); if(columnsNode != null && columnsNode.Count()>0) { foreach(var column in columnsNode) { var OneClomun = new ColumnDefinition(); var columnAttribute = column.Attributes().ToArray(); OneClomun.Header = columnAttribute.First(p => p.Name == "header").Value.ToString(); OneClomun.Name = columnAttribute.First(p => p.Name == "name").Value.ToString(); OneClomun.Binding = columnAttribute.First(p => p.Name == "binding").Value.ToString(); report.Grid.Column.Add(OneClomun); } } //Process filter dictionnary report.FilterDataValue = new Dictionary<string, object>(); if(report.FilterList != null) { foreach(var filter in report.FilterList) { report.FilterDataValue.Add(filter.Name, null); } } // Process Graph report.GraphList = new List<Graph>(); var graphicsdNode = reportNode.Descendants("charts"); if(graphicsdNode != null && graphicsdNode.Descendants("chart") != null && graphicsdNode.Descendants("chart").ToList() != null && graphicsdNode.Descendants("chart").ToList().Count() >0) { var chartList = graphicsdNode.Descendants("chart").ToList(); foreach(var chart in chartList) { var chartAttribute = chart.Attributes().ToArray(); var tmp = new Graph(); tmp.width = chartAttribute.First(p => p.Name == "width").Value.ToString(); tmp.Height = chartAttribute.First(p => p.Name == "height").Value.ToString(); tmp.Title= chartAttribute.First(p => p.Name == "title").Value.ToString(); tmp.Xfield = chartAttribute.First(p => p.Name == "xfield").Value.ToString(); tmp.FieldType = chartAttribute.First(p => p.Name == "type").Value.ToString(); tmp.ApplyFunction = chartAttribute.FirstOrDefault(p => p.Name == "applyFunction") != null ? chartAttribute.First(p => p.Name == "applyFunction").Value.ToString() : string.Empty; report.GraphList.Add(tmp); } } report.ReportName = string.Format("{0}/{1}", myNode.NodeName, report.ReportName); myNode.Report.Add(report.ReportName); _configDictionnary.Add(report.ReportName, report); } catch(Exception ex) { APILogger.Write(ex.Message, LogLevel.Error); throw ex; } }