Esempio n. 1
0
        /// <summary>
        /// Handles the DoWorker event for the file I/O worker
        /// </summary>
        /// <param name="sender">Object that fired the event</param>
        /// <param name="e">.NET supplied event parameters</param>
        private void fileIOWorker_DoWork(object sender, System.ComponentModel.DoWorkEventArgs e)
        {
            lock (syncLock)
            {
                System.Diagnostics.Stopwatch stopWatch = new System.Diagnostics.Stopwatch();
                stopWatch.Start();

                try
                {
                    string fileName = (string)e.Argument;

                    SetGadgetStatusHandler requestUpdateStatus = new SetGadgetStatusHandler(RequestUpdateStatusMessage);
                    CheckForCancellationHandler checkForCancellation = new CheckForCancellationHandler(IsCancelled);

                    if (File.Exists(fileName))
                    {
                        File.Delete(fileName);
                    }

                    dashboardHelper.PopulateDataSet(); // the only reason to call this is to see if any new user-defined vars have been added and apply them.
                    List<Epi.Data.TableColumn> tcList = dashboardHelper.GetFieldsAsListOfEpiTableColumns(useTabOrder);
                    DataView dv = dashboardHelper.DataSet.Tables[0].DefaultView;

                    if (!allFieldsSelected)
                    {
                        List<Epi.Data.TableColumn> tcFilteredList = new List<Epi.Data.TableColumn>();
                        foreach (string columnName in exportFields)
                        {
                            foreach (Epi.Data.TableColumn tc in tcList)
                            {
                                if (tc.Name.Equals(columnName) && !tcFilteredList.Contains(tc))
                                {
                                    tcFilteredList.Add(tc);
                                }
                            }
                        }

                        tcList = tcFilteredList;
                    }

                    Epi.ImportExport.CSVExporter csvExporter = new Epi.ImportExport.CSVExporter(
                        dv,
                        tcList,
                        fileName);

                    if (this.useTabOrder)
                    {
                        csvExporter.ColumnSortOrder = Epi.ImportExport.ColumnSortOrder.TabOrder;
                    }
                    else
                    {
                        csvExporter.ColumnSortOrder = Epi.ImportExport.ColumnSortOrder.None;
                    }

                    csvExporter.SetProgressBar += new SetProgressBarDelegate(CallbackIncrementProgressBar);
                    csvExporter.SetStatus += new UpdateStatusEventHandler(CallbackSetStatusMessage);
                    csvExporter.SetProgressAndStatus += new SetProgressAndStatusHandler(RequestUpdateStatusMessage);
                    csvExporter.CheckForCancellation += new CheckForCancellationHandler(IsCancelled);
                    if (dashboardHelper.IsUsingEpiProject)
                    {
                        csvExporter.AttachView(dashboardHelper.View);
                    }
                    csvExporter.Export();

                    //StreamWriter sw = File.CreateText(fileName);

                    //DataView dv = dashboardHelper.DataSet.Tables[0].DefaultView;
                    //WordBuilder wb = new WordBuilder(SEPARATOR);
                    //DataTable table = dashboardHelper.DataSet.Tables[0];
                    //if (useTabOrder || !allFieldsSelected)
                    //{
                    //    table = dv.ToTable(false);
                    //    dashboardHelper.OrderColumns(table, useTabOrder);

                    //    List<DataColumn> columnsToRemove = new List<DataColumn>();

                    //    foreach (DataColumn dc in table.Columns)
                    //    {
                    //        bool found = false;
                    //        foreach (Epi.Data.TableColumn tc in tcList)
                    //        {
                    //            if (tc.Name.Equals(dc.ColumnName))
                    //            {
                    //                found = true;
                    //                break;
                    //            }
                    //        }

                    //        if (!found)
                    //        {
                    //            columnsToRemove.Add(dc);
                    //        }
                    //    }

                    //    foreach (DataColumn dc in columnsToRemove)
                    //    {
                    //        table.Columns.Remove(dc);
                    //    }
                    //}

                    //foreach (DataColumn dc in table.Columns)
                    //{
                    //    wb.Add(dc.ColumnName);
                    //}

                    //sw.WriteLine(wb.ToString());
                    //int rowsExported = 0;
                    //int totalRows = 0;

                    //if (useTabOrder || !allFieldsSelected)
                    //{
                    //    totalRows = table.Rows.Count;
                    //    foreach (DataRow row in table.Rows)
                    //    {
                    //        wb = new WordBuilder(SEPARATOR);
                    //        for (int i = 0; i < table.Columns.Count; i++)
                    //        {
                    //            string rowValue = row[i].ToString().Replace("\r\n", " ");
                    //            if (rowValue.Contains(",") || rowValue.Contains("\""))
                    //            {
                    //                rowValue = rowValue.Replace("\"", "\"\"");
                    //                rowValue = Util.InsertIn(rowValue, "\"");
                    //            }
                    //            wb.Add(rowValue);
                    //        }
                    //        sw.WriteLine(wb);
                    //        rowsExported++;
                    //        if (rowsExported % 500 == 0)
                    //        {
                    //            //this.Dispatcher.BeginInvoke(new SetGadgetStatusHandler(RequestUpdateStatusMessage), string.Format(SharedStrings.DASHBOARD_EXPORT_PROGRESS, rowsExported.ToString(), totalRows.ToString()), (double)rowsExported);
                    //            RequestUpdateStatusMessage(string.Format(SharedStrings.DASHBOARD_EXPORT_PROGRESS, rowsExported.ToString(), totalRows.ToString()), (double)rowsExported);
                    //        }
                    //    }
                    //}
                    //else
                    //{
                    //    totalRows = dv.Count;
                    //    foreach (DataRowView rowView in dv)
                    //    {
                    //        wb = new WordBuilder(SEPARATOR);
                    //        for (int i = 0; i < table.Columns.Count; i++)
                    //        {
                    //            DataRow row = rowView.Row;
                    //            string rowValue = row[i].ToString().Replace("\r\n", " ");
                    //            if (rowValue.Contains(",") || rowValue.Contains("\""))
                    //            {
                    //                rowValue = rowValue.Replace("\"", "\"\"");
                    //                rowValue = Util.InsertIn(rowValue, "\"");
                    //            }
                    //            wb.Add(rowValue);
                    //        }
                    //        sw.WriteLine(wb);
                    //        rowsExported++;
                    //        if (rowsExported % 500 == 0)
                    //        {
                    //            //this.Dispatcher.BeginInvoke(new SetGadgetStatusHandler(RequestUpdateStatusMessage), string.Format(SharedStrings.DASHBOARD_EXPORT_PROGRESS, rowsExported.ToString(), totalRows.ToString()), (double)rowsExported);
                    //            RequestUpdateStatusMessage(string.Format(SharedStrings.DASHBOARD_EXPORT_PROGRESS, rowsExported.ToString(), totalRows.ToString()), (double)rowsExported);
                    //        }
                    //    }
                    //}

                    //this.Dispatcher.BeginInvoke(new SetStatusDelegate(SetStatusMessage), string.Format(SharedStrings.DASHBOARD_EXPORT_SUCCESS, rowsExported.ToString()));

                    //sw.Close();
                    //sw.Dispose();
                }

                catch (Exception ex)
                {
                    this.Dispatcher.BeginInvoke(new SetStatusDelegate(SetErrorMessage), ex.Message);
                }
                finally
                {
                    stopWatch.Stop();
                    System.Diagnostics.Debug.Print("File I/O Export thread finished in " + stopWatch.Elapsed.ToString());
                }
            }
        }