Exemplo n.º 1
0
        public static List <ChartDefinition> AnalyzeFiles(List <string> filenames, IOrganizationService service)
        {
            var list = new List <ChartDefinition>();

            foreach (var fileName in filenames)
            {
                var doc = XDocument.Load(fileName);

                var cd = new ChartDefinition
                {
                    FileName = fileName,
                    Name     = new FileInfo(fileName).Name,
                    IsValid  = doc.Element("visualization") != null,
                    Errors   = new List <string>()
                };

                if (!cd.IsValid)
                {
                    cd.Errors.Add("Not a chart definition");
                    list.Add(cd);
                    continue;
                }

                var chart = new Entity("savedqueryvisualization");

                var idElement = doc.Descendants("visualizationid").FirstOrDefault();
                if (idElement != null)
                {
                    chart.Id = new Guid(idElement.Value);
                }

                var nameElement = doc.Descendants("name").FirstOrDefault();
                if (nameElement == null)
                {
                    cd.Errors.Add("Missing 'name' node");
                }
                else
                {
                    chart["name"] = nameElement.Value;
                }

                var descriptionElement = doc.Descendants("description").FirstOrDefault();
                if (descriptionElement == null)
                {
                    cd.Errors.Add("Missing 'description' node");
                }
                else
                {
                    chart["description"] = descriptionElement.Value;
                }

                var primaryentitytypecodeElement = doc.Descendants("primaryentitytypecode").FirstOrDefault();
                if (primaryentitytypecodeElement == null)
                {
                    cd.Errors.Add("Missing 'primaryentitytypecode' node");
                }
                else
                {
                    chart["primaryentitytypecode"] = primaryentitytypecodeElement.Value;
                }

                var datadescriptionElement = doc.Descendants("datadescription").FirstOrDefault();
                if (datadescriptionElement == null)
                {
                    cd.Errors.Add("Missing 'datadescription' node");
                }
                else
                {
                    chart["datadescription"] = datadescriptionElement.FirstNode.ToString();
                }

                var presentationdescriptionElement = doc.Descendants("presentationdescription").FirstOrDefault();
                if (presentationdescriptionElement == null)
                {
                    cd.Errors.Add("Missing 'presentationdescription' node");
                }
                else
                {
                    chart["presentationdescription"] = presentationdescriptionElement.FirstNode.ToString();
                }

                var isdefaultElement = doc.Descendants("isdefault").FirstOrDefault();
                if (isdefaultElement == null)
                {
                    cd.Errors.Add("Missing 'isdefault' node");
                }
                else
                {
                    chart["isdefault"] = isdefaultElement.Value.ToLower() == "true";
                }

                cd.Entity = chart;

                if (chart.Id != Guid.Empty)
                {
                    cd.Exists = service.RetrieveMultiple(new QueryExpression("savedqueryvisualization")
                    {
                        Criteria = new FilterExpression
                        {
                            Conditions =
                            {
                                new ConditionExpression("savedqueryvisualizationid", ConditionOperator.Equal, chart.Id)
                            }
                        }
                    }).Entities.Count > 0;
                }

                list.Add(cd);
            }

            return(list);
        }
Exemplo n.º 2
0
        public static List<ChartDefinition> AnalyzeFiles(List<string> filenames, IOrganizationService service)
        {
            var list = new List<ChartDefinition>();

            foreach (var fileName in filenames)
            {
                var doc = XDocument.Load(fileName);

                var cd = new ChartDefinition
                {
                    FileName = fileName,
                    Name = new FileInfo(fileName).Name,
                    IsValid = doc.Element("visualization") != null,
                    Errors = new List<string>()
                };

                if (!cd.IsValid)
                {
                    cd.Errors.Add("Not a chart definition");
                    list.Add(cd);
                    continue;
                }

                var chart = new Entity("savedqueryvisualization");

                var idElement = doc.Descendants("visualizationid").FirstOrDefault();
                if (idElement != null)
                {
                      chart.Id = new Guid(idElement.Value);
                }

                var nameElement = doc.Descendants("name").FirstOrDefault();
                if (nameElement == null)
                {
                    cd.Errors.Add("Missing 'name' node");
                }
                else
                {
                    chart["name"] = nameElement.Value;
                }

                var descriptionElement = doc.Descendants("description").FirstOrDefault();
                if (descriptionElement == null)
                {
                    cd.Errors.Add("Missing 'description' node");
                }
                else
                {
                    chart["description"] = descriptionElement.Value;
                }

                var primaryentitytypecodeElement = doc.Descendants("primaryentitytypecode").FirstOrDefault();
                if (primaryentitytypecodeElement == null)
                {
                    cd.Errors.Add("Missing 'primaryentitytypecode' node");
                }
                else
                {
                    chart["primaryentitytypecode"] = primaryentitytypecodeElement.Value;
                }

                var datadescriptionElement = doc.Descendants("datadescription").FirstOrDefault();
                if (datadescriptionElement == null)
                {
                    cd.Errors.Add("Missing 'datadescription' node");
                }
                else
                {
                    chart["datadescription"] = datadescriptionElement.FirstNode.ToString();
                }

                var presentationdescriptionElement = doc.Descendants("presentationdescription").FirstOrDefault();
                if (presentationdescriptionElement == null)
                {
                    cd.Errors.Add("Missing 'presentationdescription' node");
                }
                else
                {
                    chart["presentationdescription"] = presentationdescriptionElement.FirstNode.ToString();
                }

                var isdefaultElement = doc.Descendants("isdefault").FirstOrDefault();
                if (isdefaultElement == null)
                {
                    cd.Errors.Add("Missing 'isdefault' node");
                }
                else
                {
                    chart["isdefault"] = isdefaultElement.Value.ToLower() == "true";
                }

                cd.Entity = chart;

                if (chart.Id != Guid.Empty)
                {
                    cd.Exists = service.RetrieveMultiple(new QueryExpression("savedqueryvisualization")
                    {
                        Criteria = new FilterExpression
                        {
                            Conditions =
                            {
                                new ConditionExpression("savedqueryvisualizationid", ConditionOperator.Equal, chart.Id)
                            }
                        }
                    }).Entities.Count > 0;
                }

                list.Add(cd);
            }

            return list;
        }