Zetbox.Client.Presentables.ZetboxBase.InstanceListViewModel.ExportPage C# (CSharp) Method

ExportPage() private method

private ExportPage ( StreamWriter sw, List cols, IEnumerable instances ) : int
sw StreamWriter
cols List
instances IEnumerable
return int
        private int ExportPage(StreamWriter sw, List<ColumnDisplayModel> cols, IEnumerable<IDataObject> instances)
        {
            try
            {
                var dmvos = instances
                    .Select(obj => DataObjectViewModel.Fetch(ViewModelFactory, DataContext, ViewModelFactory.GetWorkspace(DataContext), obj));

                int count = 0;
                // Data
                foreach (var obj in dmvos)
                {
                    count += 1;

                    // This check has to be done AFTER counting
                    // to avoid the edgecase of pageSize deleted objects followed by more data
                    if (obj.ObjectState == DataObjectState.Deleted)
                        continue;

                    for (int colIdx = 0; colIdx < cols.Count; colIdx++)
                    {
                        string val = cols[colIdx].ExtractFormattedValue(obj);
                        if (val != null)
                        {
                            var needsQuoting = val.IndexOfAny(new[] { ';', '\n', '\r', '"' }) >= 0;
                            if (needsQuoting)
                            {
                                val = val.Replace("\"", "\"\"");
                                val = "\"" + val + "\"";
                            }
                            sw.Write(val);
                        }
                        if (colIdx < cols.Count - 1)
                        {
                            sw.Write(";");
                        }
                        else
                        {
                            sw.WriteLine();
                        }
                    }
                }

                return count;
            }
            catch (Exception ex)
            {
                OnExportPageError(sw, ex);
                return 0;
            }
        }