public void should_rename_column() { var importer = new Presentation.Services.Importer.Importer(_dataRepositoryMapper, _columnInfos, _importerTask, _dialogCreator); var tables = importer.ImportDataTables(_importDataTable, _excelFile, _sheetNames[0], _cms); bool errorNaN; var dataRepositories = sut.ConvertImportDataTableList(tables, _columnInfos, out errorNaN); errorNaN.ShouldBeFalse(); dataRepositories.Count.ShouldBeEqualTo(2); foreach (var col in dataRepositories[0]) { tables[0].Columns.ContainsName(col.Name).ShouldBeTrue(); _columnNames.Contains(col.DataInfo.Source).ShouldBeTrue(); } foreach (var col in dataRepositories[1]) { tables[1].Columns.ContainsName(col.Name).ShouldBeTrue(); _columnNames.Contains(col.DataInfo.Source).ShouldBeTrue(); } dataRepositories.Each(repository => repository.RenameColumnsToSource()); foreach (var col in dataRepositories[0]) { tables[0].Columns.ContainsName(col.Name).ShouldBeFalse(); _columnNames.Contains(col.Name).ShouldBeTrue(); } foreach (var col in dataRepositories[1]) { tables[1].Columns.ContainsName(col.Name).ShouldBeFalse(); _columnNames.Contains(col.Name).ShouldBeTrue(); } }
public void should_convert_data_table_sheet1_with_metadata() { var importer = new Presentation.Services.Importer.Importer(_dataRepositoryMapper, _columnInfos, _importerTask, _dialogCreator); var metaData = new MetaDataTable(); _importDataTable.MetaData = metaData; metaData.Columns.Add(new MetaDataColumn { DataType = typeof(string), ColumnName = "Column1", DisplayName = "DisplayColumn1", Description = "Text for Column1", Required = true, ListOfValues = new Dictionary <string, string> { { "A", "A" }, { "B", "B" } }, IsListOfValuesFixed = true, DefaultValue = "A" }); var tables = importer.ImportDataTables(_importDataTable, _excelFile, _sheetNames[0], _cms); tables[0].MetaData.Rows.Add((MetaDataRow)tables[0].MetaData.NewRow()); bool errorNaN; var dataRepositories = sut.ConvertImportDataTableList(tables, _columnInfos, out errorNaN); errorNaN.ShouldBeFalse(); dataRepositories.Count.ShouldBeEqualTo(2); dataRepositories[0].ExtendedProperties.Contains(metaData.Columns.ItemByIndex(0).ColumnName).ShouldBeTrue(); dataRepositories[0].ExtendedProperties[metaData.Columns.ItemByIndex(0).ColumnName].ValueAsObject.ShouldBeEqualTo(metaData.Columns.ItemByIndex(0).DefaultValue); }
public void should_convert_data_table_sheet1() { var importer = new Presentation.Services.Importer.Importer(_dataRepositoryMapper, _columnInfos, _importerTask, _dialogCreator); bool errorNaN; var tables = importer.ImportDataTables(_importDataTable, _excelFile, _sheetNames[0], _cms, A.Fake <Cache <string, Rectangle> >()); var dataRepositories = sut.ConvertImportDataTableList(tables, _columnInfos, out errorNaN); errorNaN.ShouldBeFalse(); dataRepositories.Count.ShouldBeEqualTo(2); tables[0].Rows.Count.ShouldBeEqualTo(46); dataRepositories[0].ExtendedProperties.Contains("Source").ShouldBeTrue(); dataRepositories[0].ExtendedProperties["Source"].ValueAsObject.ShouldBeEqualTo(tables[0].Source); foreach (var col in dataRepositories[0]) { tables[0].Columns.ContainsName(col.Name).ShouldBeTrue(); _columnNames.Contains(col.DataInfo.Source).ShouldBeTrue(); col.Values.Count.ShouldBeEqualTo(46); } tables[1].Rows.Count.ShouldBeEqualTo(46); dataRepositories[1].ExtendedProperties.Contains("Source").ShouldBeTrue(); dataRepositories[1].ExtendedProperties["Source"].ValueAsObject.ShouldBeEqualTo(tables[1].Source); foreach (var col in dataRepositories[1]) { tables[1].Columns.ContainsName(col.Name).ShouldBeTrue(); _columnNames.Contains(col.DataInfo.Source).ShouldBeTrue(); col.Values.Count.ShouldBeEqualTo(46); } }
public SourceFilePreviewControl(string fileName, Cache <string, Rectangle> rangeCache, Presentation.Services.Importer.Importer importer) { InitializeComponent(); _rangesCache = rangeCache; _importer = importer; _fileName = fileName; showFilePreview(_fileName); }
public void should_optional_not_mapped_column_is_not_used() { var importer = new Presentation.Services.Importer.Importer(_dataRepositoryMapper, _columnInfos, _importerTask, _dialogCreator); var columnNames = new List <string> { "NumberColumn [h]", "Concentration [g/l]", "Concentration2 [mol %]" }; var cms = new List <ColumnMapping> { new ColumnMapping { SourceColumn = columnNames[0], Target = "Time" }, new ColumnMapping { SourceColumn = columnNames[1], Target = "Concentration" }, new ColumnMapping { SourceColumn = columnNames[2], Target = "Concentration" } }; var tables = importer.ImportDataTables(_importDataTable, _excelFile, _sheetNames[1], cms); bool errorNaN; var dataRepositories = sut.ConvertImportDataTableList(tables, _columnInfos, out errorNaN); errorNaN.ShouldBeFalse(); dataRepositories.Count.ShouldBeEqualTo(2); foreach (var col in dataRepositories[0]) { tables[0].Columns.ContainsName(col.Name).ShouldBeTrue(); columnNames.Contains(col.DataInfo.Source).ShouldBeTrue(); } foreach (var col in dataRepositories[1]) { tables[1].Columns.ContainsName(col.Name).ShouldBeTrue(); columnNames.Contains(col.DataInfo.Source).ShouldBeTrue(); } foreach (var table in tables) { table.Columns.Count.ShouldBeEqualTo(3); } foreach (var col in dataRepositories[0]) { col.Name.ShouldNotBeEqualTo("Error"); } foreach (var col in dataRepositories[1]) { col.Name.ShouldNotBeEqualTo("Error"); } }
public void StartImport(string sourceFile, ImportTableConfiguration configuration, Mode mode) { var metaDataCategories = configuration.MetaDataCategories; _mode = mode; _columnInfos = configuration.ColumnInfos; var importDataTable = _importMapper.ConvertToImportDataTable(metaDataCategories, _columnInfos); if (importDataTable == null) { throw new InvalidArgumentException("Could not map to import table"); } MaximizeBox = true; namingImportPanel.FillWith(_namingView); _importer = new Presentation.Services.Importer.Importer(_dataRepositoryMapper, _columnInfos, _importerTask, _dialogCreator); _importDataTable = importDataTable; _columnMappingControls = new Dictionary <string, ColumnMappingControl>(); // Page Source _openSourceFileControl = new OpenSourceFileControl(_dialogCreator, sourceFile) { Dock = DockStyle.Fill }; openSourceFileControlPanel.FillWith(_openSourceFileControl); _openSourceFileControl.OnOpenSourceFile += openSourceFileEvent; xtraTabControl.SelectedPageChanged += (s, e) => OnEvent(() => changeTabs(e.Page, e.PrevPage)); xtraTabControl.SelectedTabPage.Appearance.Header.Font = Fonts.SelectedTabHeaderFont; _rangesCache = new Cache <string, Rectangle>(); createSourceFilePreviewControl(sourceFile); btnImport.Click += (s, e) => OnEvent(importData); btnSelectRange.Click += (s, e) => OnEvent(selectRange); btnImportAll.Click += (s, e) => OnEvent(importAllData); FormClosing += onFormClosing; // Page Imports _dataSetControl = new DataSetControl(_imports, _columnInfos, true); panelImportedTabs.FillWith(_dataSetControl); _dataSetControl.MissingRequiredData += (s, e) => OnEvent(() => enableOKButton(false)); _dataSetControl.RequiredDataCompleted += (s, e) => OnEvent(() => enableOKButton(true)); _dataSetControl.TableDeleted += (s, e) => OnEvent(enableImportsPage); enableImportsPage(); enableOKButton(false); }
private void cleanMemory() { _namingView = null; if (_openSourceFileControl != null) { _openSourceFileControl.OnOpenSourceFile -= openSourceFileEvent; _openSourceFileControl = null; } if (_imports != null) { foreach (ImportDataTable table in _imports.Tables) { table.MetaData?.Dispose(); table.Dispose(); } _imports.Dispose(); } if (_importDataTable != null) { _importDataTable.MetaData?.Dispose(); _importDataTable.Dispose(); } CleanUpHelper.ReleaseEvents(_dataSetControl); _dataSetControl?.Dispose(); CleanUpHelper.ReleaseEvents(_sourceFilePreviewControl); _sourceFilePreviewControl?.Dispose(); CleanUpHelper.ReleaseControls(Controls); Controls.Clear(); _imports = null; _openSourceFileControl = null; _sourceFilePreviewControl = null; _columnMappingControl = null; _dataSetControl = null; _importDataTable = null; _importer = null; _presenter = null; _dataRepositoryMapper = null; _importMapper = null; _columnInfos = null; cleanColumnMappingControls(); _columnMappingControls?.Clear(); _columnMappingControls = null; columnMappingControlPanel.Controls.Clear(); }
public void should_import_geometric_error() { var importer = new Presentation.Services.Importer.Importer(_dataRepositoryMapper, _columnInfos, _importerTask, _dialogCreator); var columnNames = new List <string> { "NumberColumn [h]", "Concentration [g/l]", "Concentration2 [mol %]" }; //define the mapping (normally done by user within gui var cms = new List <ColumnMapping> { new ColumnMapping { SourceColumn = columnNames[0], Target = "Time" }, new ColumnMapping { SourceColumn = columnNames[1], Target = "Concentration" }, new ColumnMapping { SourceColumn = columnNames[2], Target = "Error" } }; //enter meta data setting cms[2].MetaData = _importDataTable.Columns.ItemByName("Error").MetaData.Clone(); var row = (MetaDataRow)cms[2].MetaData.NewRow(); row[STR_AUXILIARYTYPE] = STR_STDDEV_GEOMETRIC; cms[2].MetaData.Rows.Add(row); cms[2].MetaData.AcceptChanges(); //import data and do the conversion var tables = importer.ImportDataTables(_importDataTable, _excelFile, _sheetNames[1], cms); bool errorNaN; var dataRepositories = sut.ConvertImportDataTableList(tables, _columnInfos, out errorNaN); errorNaN.ShouldBeTrue(); //check correctness dataRepositories.Count.ShouldBeEqualTo(1); foreach (var col in dataRepositories[0]) { tables[0].Columns.ContainsName(col.Name).ShouldBeTrue(); columnNames.Contains(col.DataInfo.Source).ShouldBeTrue(); var dataInfo = col.DataInfo; switch (col.Name) { case "Time": dataInfo.AuxiliaryType.ShouldBeEqualTo(AuxiliaryType.Undefined); dataInfo.Origin.ShouldBeEqualTo(ColumnOrigins.BaseGrid); break; case "Concentration": dataInfo.AuxiliaryType.ShouldBeEqualTo(AuxiliaryType.Undefined); dataInfo.Origin.ShouldBeEqualTo(ColumnOrigins.Observation); col.RelatedColumns.ShouldNotBeNull(); var hasRelatedColumn = false; foreach (var relatedCol in col.RelatedColumns) { hasRelatedColumn.ShouldBeFalse(); relatedCol.Name.ShouldBeEqualTo("Error"); relatedCol.DataInfo.AuxiliaryType.ShouldBeEqualTo(AuxiliaryType.GeometricStdDev); relatedCol.DataInfo.Origin.ShouldBeEqualTo(ColumnOrigins.ObservationAuxiliary); hasRelatedColumn = true; } hasRelatedColumn.ShouldBeTrue(); break; case "Error": dataInfo.AuxiliaryType.ShouldBeEqualTo(AuxiliaryType.GeometricStdDev); dataInfo.Origin.ShouldBeEqualTo(ColumnOrigins.ObservationAuxiliary); break; } } }
public void should_cut_unit_from_column() { var importer = new Presentation.Services.Importer.Importer(_dataRepositoryMapper, _columnInfos, _importerTask, _dialogCreator); var columnNames = new List <string> { "NumberColumn [h]", "Concentration [g/l]", "Concentration2 [mol %]" }; var cms = new List <ColumnMapping> { new ColumnMapping { SourceColumn = columnNames[0], Target = "Time" }, new ColumnMapping { SourceColumn = columnNames[1], Target = "Concentration" }, new ColumnMapping { SourceColumn = columnNames[2], Target = "Concentration" } }; var tables = importer.ImportDataTables(_importDataTable, _excelFile, _sheetNames[1], cms); bool errorNaN; var dataRepositories = sut.ConvertImportDataTableList(tables, _columnInfos, out errorNaN); errorNaN.ShouldBeFalse(); dataRepositories.Count.ShouldBeEqualTo(2); foreach (var col in dataRepositories[0]) { tables[0].Columns.ContainsName(col.Name).ShouldBeTrue(); columnNames.Contains(col.DataInfo.Source).ShouldBeTrue(); } foreach (var col in dataRepositories[1]) { tables[1].Columns.ContainsName(col.Name).ShouldBeTrue(); columnNames.Contains(col.DataInfo.Source).ShouldBeTrue(); } dataRepositories.Each(repository => { repository.RenameColumnsToSource(); repository.CutUnitFromColumnNames(); }); foreach (var col in dataRepositories[0]) { tables[0].Columns.ContainsName(col.Name).ShouldBeFalse(); columnNames.Contains(col.Name).ShouldBeFalse(); var sourceElements = col.DataInfo.Source.Split('.'); var name = sourceElements[sourceElements.Length - 1]; columnNames.Contains(name).ShouldBeTrue(); //ends with columnName col.Name.ShouldBeEqualTo(name.Substring(0, name.IndexOf('[')) + name.Substring(name.IndexOf(']') + 1).Trim()); } foreach (var col in dataRepositories[1]) { tables[1].Columns.ContainsName(col.Name).ShouldBeFalse(); columnNames.Contains(col.Name).ShouldBeFalse(); var sourceElements = col.DataInfo.Source.Split('.'); var name = sourceElements[sourceElements.Length - 1]; columnNames.Contains(name).ShouldBeTrue(); //ends with columnName col.Name.ShouldBeEqualTo(name.Substring(0, name.IndexOf('[')) + name.Substring(name.IndexOf(']') + 1).Trim()); } }