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); }
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(); } }
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))); }
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()); }