Exemplo n.º 1
0
        /// <summary>
        /// Генерировать отчёт для загрузки через браузер
        /// </summary>
        public static void GenerateReport(RepBuilder repBuilder, object[] repParams,
                                          string templateDir, string fileName, HttpResponse response)
        {
            if (repBuilder == null)
            {
                throw new ArgumentNullException("repBuilder");
            }
            if (response == null)
            {
                throw new ArgumentNullException("response");
            }

            try
            {
                response.ClearHeaders();
                response.ClearContent();

                response.ContentType = "application/octet-stream";
                if (!string.IsNullOrEmpty(fileName))
                {
                    response.AppendHeader("Content-Disposition", "attachment;filename=\"" + fileName + "\"");
                }

                repBuilder.SetParams(repParams);
                repBuilder.Make(response.OutputStream, templateDir);
            }
            catch
            {
                response.ClearHeaders();
                response.ClearContent();
                response.ContentType = "text/html";
                throw;
            }
        }
Exemplo n.º 2
0
        private void btnMake_Click(object sender, System.EventArgs e)
        {
            // определение директорий отчётов
            repTemplDir = NormalDir(txtTemplDir.Text);
            repOutDir   = NormalDir(txtOutDir.Text);

            ListView.SelectedListViewItemCollection items = lvRep.SelectedItems;
            if (items.Count > 0)
            {
                try
                {
                    // генерация отчёта
                    ListViewItem item        = items[0];
                    string       dllFileName = item.SubItems[0].Text;
                    string       repFileName = dllFileName.Substring(0, dllFileName.Length - 4) + "Out.xml";

                    RepBuilder rep     = item.Tag as RepBuilder;
                    DateTime   startTm = DateTime.Now;
                    rep.Make(repOutDir + repFileName, repTemplDir);

                    MessageBox.Show("Report has been generated.\n" +
                                    "Execution time: " + DateTime.Now.Subtract(startTm).ToString() +
                                    "\nOutput file: " + repOutDir + repFileName);
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Error making the report:\n" + ex.Message);
                }
            }
            else
            {
                MessageBox.Show("Select report.");
            }
        }
        private void btnExecute_Click(object sender, System.EventArgs e)
        {
            repTemplDir = NormalDir(txtTemplDir.Text);
            repOutDir   = NormalDir(txtOutDir.Text);

            ListView.SelectedListViewItemCollection items = lvRep.SelectedItems;
            if (items.Count > 0)
            {
                try
                {
                    ListViewItem item        = items[0];
                    string       dllFileName = item.SubItems[0].Text;
                    string       repFileName = dllFileName.Substring(0, dllFileName.Length - 4) + "Out.xml";

                    RepBuilder rep = item.Tag as RepBuilder;
                    if (rep.WinForm == null || rep.WinForm.ShowDialog() == DialogResult.OK)
                    {
                        DateTime startTm = DateTime.Now;
                        rep.Make(repOutDir + repFileName, repTemplDir);

                        MessageBox.Show("Report has been generated.\n" +
                                        "Execution time: " + DateTime.Now.Subtract(startTm).ToString() +
                                        "\nOutput file: " + repOutDir + repFileName);
                    }
                    else
                    {
                        MessageBox.Show("Report generation has been canceled.");
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Error executing the report:\n" + ex.Message);
                }
            }
            else
            {
                MessageBox.Show("Select report.");
            }
        }
Exemplo n.º 4
0
        protected void Page_Load(object sender, EventArgs e)
        {
            // получение данных пользователя
            UserData userData = UserData.GetUserData();

            // проверка входа в систему
            if (!userData.LoggedOn)
            {
                throw new Exception(WebPhrases.NotLoggedOn);
            }

            // перевод веб-страницы
            Translator.TranslatePage(this, "Scada.Web.WFrmReport");

            // заполнение списка отчётов
            DirectoryInfo dirInfo = new DirectoryInfo(AppData.BinDir);
            SortedList <string, RepBuilder> repList = new SortedList <string, RepBuilder>();

            if (dirInfo.Exists)
            {
                FileInfo[] fileInfoArr = dirInfo.GetFiles("Rep*.dll", SearchOption.TopDirectoryOnly);
                foreach (FileInfo fileInfo in fileInfoArr)
                {
                    string fileName = fileInfo.Name;
                    string fullName = fileInfo.FullName;

                    // пропуск библиотеки базового абстрактного класса и библиотек отчётов, на которые недостаточно прав
                    if (fileName == "RepBuilder.dll" || !userData.GetRight(fileName).ViewRight)
                    {
                        continue;
                    }

                    // загрузка библиотеки (сборки)
                    Assembly asm = null; // библиотека
                    try
                    {
                        asm = Assembly.LoadFile(fullName);
                    }
                    catch (Exception ex)
                    {
                        AppData.Log.WriteAction(string.Format(Localization.UseRussian ?
                                                              "Ошибка при загрузке отчёта из библиотеки\n{0}\n{1}" :
                                                              "Error loading report from the assembly\n{0}\n{1}", fullName, ex.Message),
                                                Log.ActTypes.Error);
                        continue;
                    }

                    // получение типа из загруженной библиотеки
                    Type   repType   = null;
                    string typeName  = "Scada.Report." + fileName.Substring(0, fileName.Length - 4);
                    string unableMsg = string.Format(Localization.UseRussian ?
                                                     "Не удалось получить тип отчёта {0} из библиотеки\n{1}" :
                                                     "Unable to get the report type {0} from the assembly\n{1}", typeName, fullName);

                    try
                    {
                        repType = asm.GetType(typeName);
                        if (repType == null)
                        {
                            AppData.Log.WriteAction(unableMsg, Log.ActTypes.Error);
                            continue;
                        }
                    }
                    catch (Exception ex)
                    {
                        AppData.Log.WriteAction(unableMsg + "\n" + ex.Message, Log.ActTypes.Error);
                        continue;
                    }

                    try
                    {
                        // создание экземпляра класса отчёта
                        RepBuilder rep = Activator.CreateInstance(repType) as RepBuilder;

                        // добавление отчёта в список
                        repList.Add(rep.RepName, rep);
                    }
                    catch (Exception ex)
                    {
                        AppData.Log.WriteAction(string.Format(Localization.UseRussian ?
                                                              "Ошибка при создании экземпляра класса отчёта {0} из библиотеки\n{1}\n{2}" :
                                                              "Error creating report class instance {0} from the assembly\n{1}\n{2}",
                                                              repType, fullName, ex.Message), Log.ActTypes.Error);
                    }
                }
            }

            // вывод списка отчётов на форму
            if (repList.Count == 0)
            {
                lblReportList.Visible = false;
                lblNoReports.Visible  = true;
            }
            else
            {
                for (int i = 0; i < repList.Count; i++)
                {
                    RepBuilder rep = repList.Values[i];
                    AddReport(i + 1, rep.RepName, rep.WebFormFileName);
                }
            }
        }
Exemplo n.º 5
0
 /// <summary>
 /// Записать сообщение о генерации отчёта в журнал
 /// </summary>
 public static void WriteGenerationAction(Log log, RepBuilder repBuilder, UserData userData)
 {
     log.WriteAction(string.Format(WebPhrases.GenReport, repBuilder.RepName, userData.UserProps.UserName));
 }
Exemplo n.º 6
0
        /// <summary>
        /// Перезагрузить библиотеки
        /// </summary>
        private void Reload()
        {
            // определение директорий отчётов
            repDllDir   = NormalDir(txtDllDir.Text);
            repTemplDir = NormalDir(txtTemplDir.Text);
            repOutDir   = NormalDir(txtOutDir.Text);
            DirectoryInfo repDllDirInfo = new DirectoryInfo(repDllDir);

            // заполнение списка отчётов
            lvRep.Items.Clear();
            if (repDllDirInfo.Exists)
            {
                FileInfo[] fileInfoAr = repDllDirInfo.GetFiles("*.dll");
                foreach (FileInfo fileInfo in fileInfoAr)
                {
                    // загрузка библиотеки (сборки)
                    string   asmName = repDllDir + fileInfo.Name; // имя файла библиотеки
                    Assembly asm     = null;                      // библиотека
                    try
                    {
                        asm = Assembly.LoadFile(asmName);
                    }
                    catch (Exception ex)
                    {
                        if (chkShowErr.Checked)
                        {
                            MessageBox.Show("Error loading library\n" + asmName + "\n" + ex.Message);
                        }
                        continue;
                    }

                    // определение имени типа в загруженной библиотеке
                    string typeName = ReportNamespace +
                                      fileInfo.Name.Substring(0, fileInfo.Name.Length - 4);
                    if (typeName == "Utils.Report.RepBuilder" /*базовый абстрактный класс*/)
                    {
                        continue;
                    }

                    // получение типа из загруженной библиотеки
                    Type repType = null;
                    try
                    {
                        repType = asm.GetType(typeName);
                        if (repType == null && chkShowErr.Checked)
                        {
                            MessageBox.Show("Getting the type " + typeName + " failed. Library:\n" + asmName);
                        }
                    }
                    catch (Exception ex)
                    {
                        if (chkShowErr.Checked)
                        {
                            MessageBox.Show("Getting the type " + typeName + " failed. Library:\n" + asmName +
                                            "\n" + ex.Message);
                        }
                    }

                    if (repType != null)
                    {
                        try
                        {
                            // создание экземпляра класса отчёта
                            RepBuilder rep = Activator.CreateInstance(repType) as RepBuilder;

                            // заполнение элемента списка отчётов
                            ListViewItem item =
                                new ListViewItem(new string[] { fileInfo.Name, rep.RepName, rep.RepDescr });
                            item.Tag = rep;
                            lvRep.Items.Add(item);
                        }
                        catch (Exception ex)
                        {
                            if (chkShowErr.Checked)
                            {
                                MessageBox.Show("Error creating instance of the class " + repType +
                                                ". Library:\n" + asmName + "\n" + ex.Message);
                            }
                        }
                    }
                }
                if (lvRep.Items.Count > 0)
                {
                    lvRep.Items[0].Selected = true;
                }
            }
            else
            {
                MessageBox.Show("DLL directory does not exist:\n" + repDllDir);
            }
        }
        private void Reload()
        {
            repDllDir   = NormalDir(txtDllDir.Text);
            repTemplDir = NormalDir(txtTemplDir.Text);
            repOutDir   = NormalDir(txtOutDir.Text);
            DirectoryInfo repDllDirInfo = new DirectoryInfo(repDllDir);


            lvRep.Items.Clear();
            if (repDllDirInfo.Exists)
            {
                FileInfo[] fileInfoAr = repDllDirInfo.GetFiles("*.dll");
                foreach (FileInfo fileInfo in fileInfoAr)
                {
                    string   asmName = repDllDir + fileInfo.Name;
                    Assembly asm     = null;
                    try
                    {
                        asm = Assembly.LoadFile(asmName);
                    }
                    catch (Exception ex)
                    {
                        if (chkShowErr.Checked)
                        {
                            MessageBox.Show("Error loading library\n" + asmName + "\n" + ex.Message);
                        }
                        continue;
                    }

                    string typeName = ReportNamespace +
                                      fileInfo.Name.Substring(0, fileInfo.Name.Length - 4);
                    if (typeName == "Utils.Report.RepBuilder")
                    {
                        continue;
                    }


                    Type repType = null;
                    try
                    {
                        repType = asm.GetType(typeName);
                        if (repType == null && chkShowErr.Checked)
                        {
                            MessageBox.Show("Getting the type " + typeName + " failed. Library:\n" + asmName);
                        }
                    }
                    catch (Exception ex)
                    {
                        if (chkShowErr.Checked)
                        {
                            MessageBox.Show("Getting the type " + typeName + " failed. Library:\n" + asmName +
                                            "\n" + ex.Message);
                        }
                    }

                    if (repType != null)
                    {
                        try
                        {
                            RepBuilder rep = Activator.CreateInstance(repType) as RepBuilder;


                            ListViewItem item =
                                new ListViewItem(new string[] { fileInfo.Name, rep.RepName, rep.RepDescr });
                            item.Tag = rep;
                            lvRep.Items.Add(item);
                        }
                        catch (Exception ex)
                        {
                            if (chkShowErr.Checked)
                            {
                                MessageBox.Show("Error creating instance of the class " + repType +
                                                ". Library:\n" + asmName + "\n" + ex.Message);
                            }
                        }
                    }
                }
                if (lvRep.Items.Count > 0)
                {
                    lvRep.Items[0].Selected = true;
                }
            }
            else
            {
                MessageBox.Show("DLL directory does not exist:\n" + repDllDir);
            }
        }