public override void ExportImpl(System.Windows.Window parentWindow, Data.DataMatrix matrix, string datasetName, object options)
        {
            var opts = options as DarwinCoreExporterOptions;

            var columnNames = new List <String>();

            matrix.Columns.ForEach(col => {
                if (!col.IsHidden)
                {
                    columnNames.Add(col.Name);
                }
            });

            datasetName = SystemUtils.StripIllegalFilenameChars(datasetName);

            using (ZipFile archive = new ZipFile(opts.Filename)) {
                archive.AddEntry(String.Format("{0}\\occurrence.txt", datasetName), (String name, Stream stream) => {
                    ExportToCSV(matrix, stream, opts, true);
                });

                archive.AddEntry(String.Format("{0}\\meta.xml", datasetName), (String name, Stream stream) => {
                    WriteMetaXml(stream, opts, columnNames);
                });

                archive.Save();
            }
        }
        public override void ExportImpl(Window parentWindow, Data.DataMatrix matrix, string datasetName, object optionsObj)
        {
            ExcelExporterOptions options = optionsObj as ExcelExporterOptions;

            if (options == null)
            {
                return;
            }

            if (FileExistsAndNotOverwrite(options.Filename))
            {
                return;
            }

            ProgressStart("Preparing to export...");

            int totalRows = matrix.Rows.Count;

            using (ExcelPackage p = new ExcelPackage(new FileInfo(options.Filename))) {
                //Here setting some document properties
                var v       = this.GetType().Assembly.GetName().Version;
                var version = String.Format("Version {0}.{1} (build {2})", v.Major, v.Minor, v.Revision);
                p.Workbook.Properties.Author = "BioLink " + version;
                var name = StringUtils.RemoveAll(datasetName, '&', '\'', '"', '<', '>');
                p.Workbook.Properties.Title = name;
                var ws = p.Workbook.Worksheets.Add("DwC");

                // Column headings...
                int colIndex = 1;
                matrix.Columns.ForEach(column => {
                    var cell = ws.Cells[1, colIndex++].Value = column.Name;
                });

                int rowIndex = 0;
                foreach (MatrixRow row in matrix.Rows)
                {
                    for (int i = 0; i < matrix.Columns.Count; ++i)
                    {
                        if (!matrix.Columns[i].IsHidden)
                        {
                            object val      = row[i];
                            String strValue = (val == null ? "" : val.ToString());
                            ws.SetValue(rowIndex + 2, i + 1, strValue);
                        }
                    }
                    if (rowIndex++ % 1000 == 0)
                    {
                        double percent = ((double)rowIndex / (double)totalRows) * 100.0;
                        ProgressMessage(String.Format("Exported {0} of {1} rows...", rowIndex, totalRows), percent);
                    }
                }

                ProgressMessage(String.Format("Exported {0} of {1} rows. Saving file '{2}'", rowIndex, totalRows, options.Filename), 100);

                p.Save();
            }

            ProgressEnd(String.Format("{0} rows exported.", totalRows));
        }
        public FrameworkElement ConstructView(IBioLinkReport report, Data.DataMatrix reportData, Utilities.IProgressObserver progress)
        {
            var viewer = new RTFReportViewer();

            viewer.ReportName = report.Name;
            viewer.rtf.Rtf    = reportData.Rows[0][0] as string;
            return(viewer);
        }
 public override bool CanExport(Data.DataMatrix matrix, String datasetName)
 {
     foreach (Pair <string, string> p in _recognizedColumns)
     {
         if (matrix.ContainsColumn(p.First) && matrix.ContainsColumn(p.Second))
         {
             return(true);
         }
     }
     return(false);
 }
        public override void ExportImpl(Window parentWindow, Data.DataMatrix matrix, string datasetName, object optionsObj)
        {
            ExcelExporterOptions options = optionsObj as ExcelExporterOptions;

            if (options == null)
            {
                return;
            }

            if (FileExistsAndNotOverwrite(options.Filename))
            {
                return;
            }

            ProgressStart("Preparing to export...");

            int totalRows = matrix.Rows.Count;

            using (StreamWriter writer = new StreamWriter(options.Filename)) {
                writer.WriteLine("<?xml version=\"1.0\"?><ss:Workbook xmlns:ss=\"urn:schemas-microsoft-com:office:spreadsheet\">");
                writer.WriteLine("<ss:Worksheet ss:Name=\"" + datasetName + "\">");
                writer.WriteLine("<ss:Table>");
                int currentRow = 0;
                foreach (MatrixRow row in matrix.Rows)
                {
                    writer.WriteLine("<ss:Row>");
                    for (int i = 0; i < matrix.Columns.Count; ++i)
                    {
                        if (!matrix.Columns[i].IsHidden)
                        {
                            object val = row[i];
                            writer.Write("<ss:Cell><ss:Data ss:Type=\"String\">");
                            String str = (val == null ? "" : val.ToString());
                            writer.Write(Escape(str));
                            writer.Write("</ss:Data></ss:Cell>");
                        }
                    }
                    if (++currentRow % 1000 == 0)
                    {
                        double percent = ((double)currentRow / (double)totalRows) * 100.0;
                        ProgressMessage(String.Format("Exported {0} of {1} rows...", currentRow, totalRows), percent);
                    }

                    writer.WriteLine("</ss:Row>");
                }

                writer.WriteLine("</ss:Table>");
                writer.WriteLine("</ss:Worksheet>");
                writer.WriteLine("</ss:Workbook>");
            }

            ProgressEnd(String.Format("{0} rows exported.", totalRows));
        }
        /// <summary>
        /// This exporter should only export columns that are Darwin core terms, so checks to see if there are any. If so, then yes, we can export them!
        /// </summary>
        /// <param name="matrix"></param>
        /// <param name="datasetName"></param>
        /// <returns></returns>
        public override bool CanExport(Data.DataMatrix matrix, string datasetName)
        {
            Boolean hasDwCTerms = false;

            matrix.Columns.ForEach(column => {
                DarwinCoreField field;
                if (Enum.TryParse <DarwinCoreField>(column.Name, true, out field))
                {
                    hasDwCTerms = true;
                }
            });

            return(hasDwCTerms);
        }
        protected override object GetOptions(System.Windows.Window parentWindow, Data.DataMatrix matrix, string datasetName)
        {
            var filename = PromptForFilename(".zip", "DwC-A Files (.zip)|*.zip", datasetName);

            if (!String.IsNullOrEmpty(filename))
            {
                if (FileExistsAndNotOverwrite(filename))
                {
                    return(null);
                }

                DarwinCoreExporterOptions options = new DarwinCoreExporterOptions();
                options.Filename = filename;
                return(options);
            }

            return(null);
        }
        public override void ExportImpl(Window parentWindow, Data.DataMatrix matrix, string datasetName, object optionsObj)
        {
            ExcelExporterOptions options = optionsObj as ExcelExporterOptions;

            if (options == null)
            {
                return;
            }

            ProgressStart("Exporting...");

            int totalRows = matrix.Rows.Count;

            if (FileExistsAndNotOverwrite(options.Filename))
            {
                return;
            }
            FileInfo file = new FileInfo(options.Filename);

            using (SQLiteExporterService service = new SQLiteExporterService(file.FullName)) {
                service.CreateTable("ExportedData", matrix);

                service.BeginTransaction();
                int count = 0;
                foreach (MatrixRow row in matrix)
                {
                    service.InsertRow("ExportedData", row);
                    if (++count % 1000 == 0)
                    {
                        double percent = ((double)count / (double)totalRows) * 100.0;
                        ProgressMessage(String.Format("Exporting {0} rows of {1}...", count, totalRows), percent);
                    }
                }
                ProgressMessage(String.Format("Saving...", count, totalRows));
                service.CommitTransaction();
            }

            ProgressEnd(String.Format("{0} rows exported.", totalRows));
        }
示例#9
0
        public MultimediaThumbnailViewer(IBioLinkReport report, Data.DataMatrix reportData, Utilities.IProgressObserver progress)
        {
            InitializeComponent();
            this.Report     = report;
            this.ReportData = reportData;
            this.Progress   = progress;

            var service = new SupportService(PluginManager.Instance.User);

            _tempFileManager = new KeyedObjectTempFileManager <int?>((mmId) => {
                if (mmId.HasValue)
                {
                    byte[] bytes = service.GetMultimediaBytes(mmId.Value);
                    if (bytes != null)
                    {
                        return(new MemoryStream(bytes));
                    }
                }
                return(null);
            });

            Loaded += new RoutedEventHandler(MultimediaThumbnailViewer_Loaded);
        }
        public override void ExportImpl(System.Windows.Window parentWindow, Data.DataMatrix matrix, string datasetName, object options)
        {
            var opt = options as KMLExporterOptions;

            if (opt != null)
            {
                var filename = opt.Filename;

                ProgressStart("Exporting points to '" + filename + "'");

                int latIndex = -1;
                int lonIndex = -1;


                foreach (Pair <string, string> p in _recognizedColumns)
                {
                    if (matrix.ContainsColumn(p.First) && matrix.ContainsColumn(p.Second))
                    {
                        latIndex = matrix.IndexOf(p.First);
                        lonIndex = matrix.IndexOf(p.Second);
                    }
                }

                if (latIndex < 0 || lonIndex < 0)
                {
                    ErrorMessage.Show("Failed to located Latitude and/or Longitude columns in data set!");
                    return;
                }

                int nameIndex = matrix.IndexOf(opt.LabelColumn);

                int rowCount = 0;
                using (var writer = new StreamWriter(filename)) {
                    writer.WriteLine("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
                    writer.WriteLine("<kml xmlns=\"http://www.opengis.net/kml/2.2\">");
                    writer.WriteLine("<Document>");


                    foreach (MatrixRow row in matrix.Rows)
                    {
                        var lat = row[latIndex];
                        var lon = row[lonIndex];
                        if (lat != null && lon != null)
                        {
                            writer.WriteLine("<Placemark>");
                            string name = "" + rowCount;
                            if (nameIndex >= 0)
                            {
                                var nameObj = row[nameIndex];
                                if (nameObj != null)
                                {
                                    name = row[nameIndex].ToString();
                                }
                                else
                                {
                                    name = "";
                                }
                            }
                            if (!string.IsNullOrEmpty(name))
                            {
                                writer.WriteLine(string.Format("<name>{0}</name>", name));
                            }

                            writer.WriteLine(string.Format("<description>{0}</description>", BuildDescription(row)));
                            writer.WriteLine(string.Format("<Point><coordinates>{0},{1}</coordinates></Point>", lon, lat));
                            writer.WriteLine("</Placemark>");
                        }

                        if (++rowCount % 1000 == 0)
                        {
                            double percent = ((double)rowCount / (double)matrix.Rows.Count) * 100;
                            this.ProgressMessage("Exporting points to '" + filename + "'", percent);
                        }
                    }

                    writer.WriteLine("</Document>");
                    writer.WriteLine("</kml>");
                }

                ProgressEnd(string.Format("{0} rows exported.", rowCount));
            }
        }
示例#11
0
        public FrameworkElement ConstructView(IBioLinkReport report, Data.DataMatrix reportData, Utilities.IProgressObserver progress)
        {
            var viewer = new MultimediaThumbnailViewer(report, reportData, progress);

            return(viewer);
        }