private XslPreprocessManager GetManager(
            NodeDataProvider dataProvider,
            GraphicsInfo graphicsInfo
            )
        {
            XslPreprocessManager result = new XslPreprocessManager(this._model.DbFs);

            result.AvailablePreprocessors.Add(new GraphPreprocessor(dataProvider, graphicsInfo));
            result.AvailablePreprocessors.Add(new GraphPreprocessorDialog(dataProvider, graphicsInfo));
            result.AvailablePreprocessors.Add(new DataGridPreprocessorDialog(dataProvider, graphicsInfo));
            result.AvailablePreprocessors.Add(new HtmlPreprocessorDialog(dataProvider, graphicsInfo, result));
            // result.AvailablePreprocessors.Add(new RDLPreprocessorDialog(dataProvider, graphicsInfo));

            return(result);
        }
        public VisualizeData GetVisualizeData(
            NodeDataProvider dataProvider,
            GraphicsInfo graphicsInfo
            )
        {
            XmlDocument          xmlData       = dataProvider.XmlDocument;
            MultyQueryResultInfo queriesResult = dataProvider.QueryResult;

            VisualizeData result = new VisualizeData
            {
                NodeLastUpdated        = queriesResult.NodeLastUpdated,
                NodeLastUpdateDuration = queriesResult.NodeLastUpdateDuration
            };

            if (xmlData != null && xmlData.DocumentElement != null)
            {
                result.SourceXml = xmlData.FormatXml();
            }

            ConcreteTemplateNodeDefinition nodeDefinition = dataProvider.NodeDefinition;

            string xslFileName = GetXslFileName(nodeDefinition);

            if (xslFileName != null && File.Exists(xslFileName))
            {
                XmlDocument xslDoc = new XmlDocument();

                xslDoc.Load(xslFileName);

                ConnectionGroupInfo connectionGroup = nodeDefinition.Connection;

                if (AppVersionHelper.IsNotDebug() && !connectionGroup.IsExternal)
                {
                    CryptoProcessor cryptoProcessor = new CryptoProcessor(
                        this._model.Settings.SystemSettings.PublicKeyXmlSign,
                        this._model.Settings.SystemSettings.PrivateKeyXmlDecrypt
                        );

                    cryptoProcessor.DecryptXmlDocument(xslDoc);
                }

                try
                {
                    XslPreprocessManager preprocessManager = GetManager(
                        dataProvider,
                        graphicsInfo
                        );

                    List <PreprocessorAreaData> datas;

                    using (preprocessManager.ExecuteXslPreprocessing(xslDoc, out datas))
                    {
                    }

                    foreach (PreprocessorAreaData preprocessorAreaData in datas)
                    {
                        preprocessorAreaData.CheckPreprocessors();
                    }

                    result.PreprocessorAreas = datas.ToList();
                }
                catch (Exception ex)
                {
                    log.ErrorFormat(
                        "nodeDefinition.TemplateNode.Queries(.Name)='{0}';xslFileName='{1}';Exception:'{2}'",
                        nodeDefinition.TemplateNode.Queries.Select(q => q.QueryName).Join(", "),
                        xslFileName,
                        ex
                        );
                }
            }

            return(result);
        }