示例#1
0
 private void Dashboard_ConfigureDataConnection(object sender, ConfigureDataConnectionWebEventArgs e)
 {
     if (e.ConnectionParameters is ExtractDataSourceConnectionParameters extractParameters)
     {
         if (Guid.TryParse(extractParameters.FileName, out var id))
         {
             IDashboardDataExtract extract = GetDataExtract(id);
             if (extract != null)
             {
                 extract.ConfigureConnectionParameters(Application, extractParameters);
             }
         }
     }
 }
示例#2
0
        public IDashboardDataExtract ConfigureDataConnection(DataConnectionParametersBase dataConnectionParameters)
        {
            if (dataConnectionParameters is ExtractDataSourceConnectionParameters extractParameters &&
                Guid.TryParse(extractParameters.FileName, out var id))
            {
                IDashboardDataExtract extract = GetDataExtract(id);
                if (extract != null)
                {
                    extract.ConfigureConnectionParameters(Application, extractParameters);
                }

                return(extract);
            }

            return(null);
        }
        private void UpdateDataExtract(IDashboardDataExtract extract)
        {
            if (extract == null)
            {
                throw new ArgumentNullException(nameof(extract));
            }
            if (string.IsNullOrWhiteSpace(extract.Script))
            {
                return;
            }

            using (DashboardObjectDataSource ods = new DashboardObjectDataSource())
            {
                ScriptDataSource dataSource = CreateScriptDataSource(extract, Application);
                object           data       = dataSource.GetDataForDataExtract();
                if (data is byte[] buffer)
                {
                    SetDataExtractContent(extract, buffer);
                    return;
                }
                ods.DataSource = data;
                string fileName = Path.GetTempFileName();
                try
                {
                    using (DashboardExtractDataSource extractDataSource = new DashboardExtractDataSource())
                    {
                        extractDataSource.ExtractSourceOptions.DataSource = ods;
                        extractDataSource.FileName = fileName;
                        extractDataSource.UpdateExtractFile();
                        SetDataExtractContent(extract, File.ReadAllBytes(fileName));
                        if (data is ICollection collection)
                        {
                            extract.RowCount = collection.Count;
                        }
                    }
                }
                finally
                {
                    if (File.Exists(fileName))
                    {
                        File.Delete(fileName);
                    }
                }
            }
        }
        public void StartDataExtractUpdate(IDashboardDataExtract dataExtract)
        {
            var channel = CreateChannel();

            channel.StartDataExtractUpdate(dataExtract.GetKeyAsString());
        }
        public void ScheduleDataExtractCreationJob(IDashboardDataExtract dataExtract)
        {
            var channel = CreateChannel();

            channel.ScheduleUpdateDataExtractJob(dataExtract.GetKeyAsString());
        }
 private static void SetDataExtractContent(IDashboardDataExtract extract, byte[] fileData)
 {
     extract.ExtractData     = fileData;
     extract.ExtractDataSize = extract.ExtractData.LongLength;
 }
 protected virtual ScriptDataSource CreateScriptDataSource(IDashboardDataExtract extract, XafApplication application) =>
 new ScriptDataSource(extract.Script)
 {
     Application = application
 };