Esempio n. 1
0
        private void SetupDataExport()
        {
            _extractableDataSet = new ExtractableDataSet(DataExportRepository, _catalogue);

            _project = new Project(DataExportRepository, _testDatabaseName);
            _project.ProjectNumber = 1;

            Directory.CreateDirectory(ProjectDirectory);
            _project.ExtractionDirectory = ProjectDirectory;

            _project.SaveToDatabase();

            _configuration = new ExtractionConfiguration(DataExportRepository, _project);

            //select the dataset for extraction under this configuration
            _selectedDataSet = new SelectedDataSets(RepositoryLocator.DataExportRepository, _configuration, _extractableDataSet, null);

            //select all the columns for extraction
            foreach (var toSelect in _extractionInformations)
            {
                var col = new ExtractableColumn(DataExportRepository, _extractableDataSet, _configuration, toSelect, toSelect.Order, toSelect.SelectSQL);

                if (col.GetRuntimeName().Equals("PrivateID"))
                {
                    col.IsExtractionIdentifier = true;
                }

                col.SaveToDatabase();

                _extractableColumns.Add(col);
            }
        }
Esempio n. 2
0
        private void HandleReorder(ExtractableColumn sourceColumn, IOrderable targetOrderable, DropTargetLocation location)
        {
            if (targetOrderable == null)
            {
                targetOrderable = olvSelected.Objects.Cast <IOrderable>().OrderByDescending(o => o.Order).FirstOrDefault();
            }

            if (targetOrderable == null)
            {
                return;
            }

            int destinationOrder = targetOrderable.Order;

            switch (location)
            {
            case DropTargetLocation.AboveItem:

                //bump down the other columns
                foreach (ConcreteColumn c in olvSelected.Objects.OfType <ConcreteColumn>().ToArray())
                {
                    if (c.Order >= destinationOrder && !Equals(c, sourceColumn))
                    {
                        c.Order++;
                        c.SaveToDatabase();
                    }
                }

                //should now be space at the destination order position
                sourceColumn.Order = destinationOrder;
                break;

            case DropTargetLocation.None:
            case DropTargetLocation.BelowItem:

                //bump up other columns
                foreach (ConcreteColumn c in olvSelected.Objects.OfType <ConcreteColumn>().ToArray())
                {
                    if (c.Order <= destinationOrder && !Equals(c, sourceColumn))
                    {
                        c.Order--;
                        c.SaveToDatabase();
                    }
                }

                sourceColumn.Order = destinationOrder;
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }

            sourceColumn.SaveToDatabase();

            olvSelected.RefreshObjects(olvSelected.Objects.OfType <object>().ToArray());

            SortSelectedByOrder();
        }
Esempio n. 3
0
        public void TestNoIsExtractionIdentifierFinding()
        {
            //nothing in database means no dodgy datasets
            Assert.IsEmpty(((DataExportRepository)DataExportRepository).GetSelectedDatasetsWithNoExtractionIdentifiers());

            var cata   = new Catalogue(CatalogueRepository, "ommn");
            var ds     = new ExtractableDataSet(DataExportRepository, cata);
            var proj   = new Project(DataExportRepository, "proj");
            var config = new ExtractionConfiguration(DataExportRepository, proj);
            var sds    = new SelectedDataSets(DataExportRepository, config, ds, null);

            //only one selected dataset
            var dodgy = ((DataExportRepository)DataExportRepository).GetSelectedDatasetsWithNoExtractionIdentifiers().ToArray();

            Assert.AreEqual(1, dodgy.Count());
            Assert.AreEqual(sds, dodgy[0]);

            //make an extarctable column on that dataset
            var col = new ColumnInfo(CatalogueRepository, "ff", "varchar(1)", new TableInfo(CatalogueRepository, "fff"));
            var ci  = new CatalogueItem(CatalogueRepository, cata, "A");
            var ei  = new ExtractionInformation(CatalogueRepository, ci, col, col.Name);
            var ec  = new ExtractableColumn(DataExportRepository, ds, config, ei, 0, col.Name);

            //still shouldn't be dodgy
            dodgy = ((DataExportRepository)DataExportRepository).GetSelectedDatasetsWithNoExtractionIdentifiers().ToArray();
            Assert.AreEqual(1, dodgy.Count());
            Assert.AreEqual(sds, dodgy[0]);

            //now make it non dodgy by being IsExtractionIdentifier
            ec.IsExtractionIdentifier = true;
            ec.SaveToDatabase();

            //no longer dodgy because there is an extraction identifier
            dodgy = ((DataExportRepository)DataExportRepository).GetSelectedDatasetsWithNoExtractionIdentifiers().ToArray();
            Assert.AreEqual(0, dodgy.Count());
        }
        public void SQLServerDestination()
        {
            DiscoveredDatabase dbToExtractTo = null;

            var ci = new CatalogueItem(CatalogueRepository, _catalogue, "YearOfBirth");
            var columnToTransform = _columnInfos.Single(c => c.GetRuntimeName().Equals("DateOfBirth", StringComparison.CurrentCultureIgnoreCase));

            string transform = "YEAR(" + columnToTransform.Name + ")";

            var ei = new ExtractionInformation(CatalogueRepository, ci, columnToTransform, transform);

            ei.Alias = "YearOfBirth";
            ei.ExtractionCategory = ExtractionCategory.Core;
            ei.SaveToDatabase();

            //make it part of the ExtractionConfiguration
            var newColumn = new ExtractableColumn(DataExportRepository, _selectedDataSet.ExtractableDataSet, (ExtractionConfiguration)_selectedDataSet.ExtractionConfiguration, ei, 0, ei.SelectSQL);

            newColumn.Alias = ei.Alias;
            newColumn.SaveToDatabase();

            _extractableColumns.Add(newColumn);

            //recreate the extraction command so it gets updated with the new column too.
            _request = new ExtractDatasetCommand(_configuration, _extractableCohort, new ExtractableDatasetBundle(_extractableDataSet),
                                                 _extractableColumns, new HICProjectSalt(_project),
                                                 new ExtractionDirectory(@"C:\temp\", _configuration));

            try
            {
                _configuration.Name = "ExecuteFullExtractionToDatabaseMSSqlDestinationTest";
                _configuration.SaveToDatabase();

                ExtractionPipelineUseCase            execute;
                IExecuteDatasetExtractionDestination result;

                var dbname = TestDatabaseNames.GetConsistentName(_project.Name + "_" + _project.ProjectNumber);
                dbToExtractTo = DiscoveredServerICanCreateRandomDatabasesAndTablesOn.ExpectDatabase(dbname);
                if (dbToExtractTo.Exists())
                {
                    dbToExtractTo.Drop();
                }

                base.Execute(out execute, out result);

                var destinationTable = dbToExtractTo.ExpectTable(_expectedTableName);
                Assert.IsTrue(destinationTable.Exists());

                var dt = destinationTable.GetDataTable();

                Assert.AreEqual(1, dt.Rows.Count);
                Assert.AreEqual(_cohortKeysGenerated[_cohortKeysGenerated.Keys.First()].Trim(), dt.Rows[0]["ReleaseID"]);
                Assert.AreEqual(new DateTime(2001, 1, 1), dt.Rows[0]["DateOfBirth"]);
                Assert.AreEqual(2001, dt.Rows[0]["YearOfBirth"]);

                Assert.AreEqual(columnToTransform.Data_type, destinationTable.DiscoverColumn("DateOfBirth").DataType.SQLType);
                Assert.AreEqual("int", destinationTable.DiscoverColumn("YearOfBirth").DataType.SQLType);
            }
            finally
            {
                if (_extractionServer != null)
                {
                    _extractionServer.DeleteInDatabase();
                }

                if (dbToExtractTo != null)
                {
                    dbToExtractTo.Drop();
                }
            }
        }
Esempio n. 5
0
        public void SQLServerDestination(bool lookupsEtc)
        {
            DiscoveredDatabase dbToExtractTo = null;

            var ci = new CatalogueItem(CatalogueRepository, _catalogue, "YearOfBirth");

            _columnToTransform = _columnInfos.Single(c => c.GetRuntimeName().Equals("DateOfBirth", StringComparison.CurrentCultureIgnoreCase));

            string transform = "YEAR(" + _columnToTransform.Name + ")";


            if (_catalogue.GetAllExtractionInformation(ExtractionCategory.Any).All(ei => ei.GetRuntimeName() != "YearOfBirth"))
            {
                var ei = new ExtractionInformation(CatalogueRepository, ci, _columnToTransform, transform);
                ei.Alias = "YearOfBirth";
                ei.ExtractionCategory = ExtractionCategory.Core;
                ei.SaveToDatabase();

                //make it part of the ExtractionConfiguration
                var newColumn = new ExtractableColumn(DataExportRepository, _selectedDataSet.ExtractableDataSet, (ExtractionConfiguration)_selectedDataSet.ExtractionConfiguration, ei, 0, ei.SelectSQL);
                newColumn.Alias = ei.Alias;
                newColumn.SaveToDatabase();

                _extractableColumns.Add(newColumn);
            }

            if (lookupsEtc)
            {
                CreateLookupsEtc();
            }

            try
            {
                _configuration.Name = "ExecuteFullExtractionToDatabaseMSSqlDestinationTest";
                _configuration.SaveToDatabase();

                var dbname = TestDatabaseNames.GetConsistentName(_project.Name + "_" + _project.ProjectNumber);
                dbToExtractTo = DiscoveredServerICanCreateRandomDatabasesAndTablesOn.ExpectDatabase(dbname);
                if (dbToExtractTo.Exists())
                {
                    dbToExtractTo.Drop();
                }

                base.ExecuteRunner();

                var destinationTable = dbToExtractTo.ExpectTable(_expectedTableName);
                Assert.IsTrue(destinationTable.Exists());

                var dt = destinationTable.GetDataTable();

                Assert.AreEqual(1, dt.Rows.Count);
                Assert.AreEqual(_cohortKeysGenerated[_cohortKeysGenerated.Keys.First()].Trim(), dt.Rows[0]["ReleaseID"]);
                Assert.AreEqual(new DateTime(2001, 1, 1), dt.Rows[0]["DateOfBirth"]);
                Assert.AreEqual(2001, dt.Rows[0]["YearOfBirth"]);

                Assert.AreEqual(_columnToTransform.Data_type, destinationTable.DiscoverColumn("DateOfBirth").DataType.SQLType);
                Assert.AreEqual("int", destinationTable.DiscoverColumn("YearOfBirth").DataType.SQLType);

                if (lookupsEtc)
                {
                    AssertLookupsEtcExist(dbToExtractTo);
                }
            }
            finally
            {
                if (dbToExtractTo != null && dbToExtractTo.Exists())
                {
                    dbToExtractTo.Drop();
                }

                _pipeline?.DeleteInDatabase();
            }
        }