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");
                }
            }
Exemple #6
0
        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);
        }
Exemple #7
0
        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());
                }
            }