コード例 #1
0
        public IList <Series> Import(IImporterSettings settings)
        {
            var wmlSettings = (WaterMLImportSettings)settings;

            var    objDownloader = new Downloader();
            string fileName      = wmlSettings.PathToFile;
            var    themeName     = wmlSettings.ThemeName;

            string shortFileName = Path.GetFileNameWithoutExtension(fileName);
            string siteName      = shortFileName;
            string variableName  = shortFileName;

            int separatorIndex = shortFileName.IndexOf("_", System.StringComparison.Ordinal);

            if (separatorIndex > 0 && separatorIndex < shortFileName.Length - 1)
            {
                siteName     = shortFileName.Substring(0, shortFileName.IndexOf("_"));
                variableName = shortFileName.Substring(shortFileName.IndexOf("_"));
            }


            IList <Series> seriesList = objDownloader.DataSeriesFromXml(fileName);

            if (seriesList == null)
            {
                MessageBox.Show("error converting xml file");
            }
            else
            {
                if (objDownloader.ValidateSeriesList(seriesList))
                {
                    foreach (var series in seriesList)
                    {
                        objDownloader.SaveDataSeries(series, themeName, siteName, variableName);
                    }
                }
                else
                {
                    seriesList = null;
                }
            }

            if (seriesList == null)
            {
                return(new List <Series>(0));
            }

            return(seriesList);
        }
コード例 #2
0
        private DataSet AsDataSet(IImporterSettings settings)
        {
            var fileName = settings.PathToFile;

            if (!File.Exists(fileName))
            {
                return(new DataSet());
            }

            var extension           = Path.GetExtension(fileName);
            IExcelDataReader reader = null;
            var stream = File.Open(fileName, FileMode.Open);

            try
            {
                switch (extension)
                {
                case ".xls":
                    reader = ExcelReaderFactory.CreateBinaryReader(stream);
                    break;

                case ".xlsx":
                    reader = ExcelReaderFactory.CreateOpenXmlReader(stream);
                    break;

                default:
                    goto case ".xls";
                }

                reader.IsFirstRowAsColumnNames = true;
                var ds = reader.AsDataSet();
                return(ds);
            }
            finally
            {
                if (reader != null)
                {
                    reader.Close();
                }
                stream.Close();
            }
        }
コード例 #3
0
        public IList <Series> Import(IImporterSettings settings)
        {
            var wmlSettings = (WaterMLImportSettings)settings;

            string fileName  = wmlSettings.PathToFile;
            var    themeName = wmlSettings.ThemeName;

            string shortFileName = Path.GetFileNameWithoutExtension(fileName);
            string siteName      = shortFileName;
            string variableName  = shortFileName;

            int separatorIndex = shortFileName.IndexOf("_", StringComparison.Ordinal);

            if (separatorIndex > 0 && separatorIndex < shortFileName.Length - 1)
            {
                siteName     = shortFileName.Substring(0, shortFileName.IndexOf("_"));
                variableName = shortFileName.Substring(shortFileName.IndexOf("_"));
            }


            IList <Series> seriesList = null;
            var            parser     = ParserFactory.GetParser(fileName);

            using (var fileStrem = File.OpenRead(fileName))
            {
                try
                {
                    seriesList = parser.ParseGetValues(fileStrem);
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Error parsing xml file: " + ex.Message);
                }
            }

            if (seriesList != null)
            {
                if (ValidateSeriesList(seriesList))
                {
                    var db    = RepositoryFactory.Instance.Get <IRepositoryManager>();
                    var theme = new Theme(themeName);
                    foreach (var series in seriesList)
                    {
                        //check if the series has values
                        if (series.ValueCount == 0)
                        {
                            continue;
                        }

                        if (String.IsNullOrEmpty(series.Site.Name))
                        {
                            series.Site.Name = siteName;
                        }
                        if (String.IsNullOrEmpty(series.Variable.Name))
                        {
                            series.Variable.Name = variableName;
                        }
                        db.SaveSeries(series, theme, OverwriteOptions.Copy);
                    }
                }
            }

            return(seriesList ?? (new List <Series>(0)));
        }
コード例 #4
0
        public IList <Series> Import(IImporterSettings settings)
        {
            int progress = 0;

            ReportProgress(progress, "Starting importing...");

            var seriesRepo  = RepositoryFactory.Instance.Get <IDataSeriesRepository>();
            var repoManager = RepositoryFactory.Instance.Get <IRepositoryManager>();

            var toImport = new List <Tuple <ColumnInfo, Series, OverwriteOptions> > ();

            foreach (var cData in settings.ColumnDatas.Where(c => c.ImportColumn && c.ColumnName != settings.DateTimeColumn))
            {
                var site           = cData.Site;
                var variable       = cData.Variable;
                var method         = cData.Method;
                var source         = cData.Source;
                var qualityControl = cData.QualityControlLevel;

                //
                OverwriteOptions options;
                if (seriesRepo.ExistsSeries(site, variable))
                {
                    using (var dialog = new ExistsSeriesQuestionDialog(site.Name, variable.Name))
                    {
                        dialog.ShowDialog();
                        options = dialog.CurrentOption;
                    }
                }
                else
                {
                    options = OverwriteOptions.Overwrite;
                }

                var series = new Series(site, variable, method, qualityControl, source);
                toImport.Add(new Tuple <ColumnInfo, Series, OverwriteOptions>(cData, series, options));
            }

            var cultureToParseValues = (CultureInfo)CultureInfo.InvariantCulture.Clone();

            cultureToParseValues.NumberFormat.NumberDecimalSeparator = settings.ValuesNumberDecimalSeparator;

            progress = 10;
            ReportProgress(progress, "Parsing values...");
            foreach (DataRow row in settings.Data.Rows)
            {
                DateTime dateTime;
                if (!DateTime.TryParse(row[settings.DateTimeColumn].ToString(), out dateTime))
                {
                    continue;
                }

                foreach (var tuple in toImport)
                {
                    var columnInfo  = tuple.Item1;
                    var columnIndex = columnInfo.ColumnIndex;

                    Double value;
                    if (!Double.TryParse(Convert.ToString(row[columnIndex], cultureToParseValues),
                                         NumberStyles.Float,
                                         cultureToParseValues, out value))
                    {
                        continue;
                    }

                    var series = tuple.Item2;
                    series.DataValueList.Add(new DataValue(value, dateTime, 0)
                    {
                        OffsetValue = columnInfo.OffsetValue,
                        OffsetType  = columnInfo.OffsetType,
                    });
                }
            }

            progress = 15;
            ReportProgress(progress, "Saving values into local database...");

            var pStep = (settings.MaxProgressPercentWhenImport - progress) / toImport.Count;
            var theme = new Theme(Path.GetFileNameWithoutExtension(settings.PathToFile));

            foreach (var tuple in toImport)
            {
                var series = tuple.Item2;
                series.UpdateProperties();

                repoManager.SaveSeries(series, theme, tuple.Item3);

                progress += pStep;
                ReportProgress(progress, "Saving values into local database...");
            }

            return(toImport.Select(item => item.Item2).ToList());
        }