コード例 #1
0
        public ExecuteCommandAddPackageToConfiguration(IActivateItems activator, ExtractionConfiguration extractionConfiguration) : base(activator)
        {
            this._extractionConfiguration = extractionConfiguration;

            if (extractionConfiguration.IsReleased)
            {
                SetImpossible("Extraction is Frozen because it has been released and is readonly, try cloning it instead");
            }

            if (activator.CoreChildProvider is DataExportChildProvider childProvider)
            {
                if (childProvider.AllPackages.Any())
                {
                    _packages = childProvider.AllPackages;
                }
                else
                {
                    SetImpossible("There are no ExtractableDatasetPackages configured");
                }
            }
            else
            {
                SetImpossible("CoreChildProvider is not DataExportIconProvider");
            }
        }
コード例 #2
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);
            }
        }
コード例 #3
0
 /// <inheritdoc cref="GlobalExtractionChecker(IBasicActivateItems,ExtractionConfiguration)"/>
 public GlobalExtractionChecker(IBasicActivateItems activator, ExtractionConfiguration configuration, ExtractGlobalsCommand command, IPipeline alsoCheckPipeline)
 {
     this._configuration     = configuration;
     this._command           = command;
     this._alsoCheckPipeline = alsoCheckPipeline;
     _activator = activator;
 }
コード例 #4
0
        public string GetAccountExtractionConfiguration(HttpListenerContext ct, ActionInfo hi)
        {
            ExtractionConfiguration Ec = new ExtractionConfiguration();

            Ec.DefaultDocumentSpecification = "Stuff";
            Ec.OrientationDetectionMode     = OrientationDetectionMode.Off;
            DocumentType dt = new DocumentType();

            dt.Country        = "SE";
            dt.DisplayName    = "PDF";
            dt.ExtractionName = "Thefil.pdf";
            FieldGroup Fg = new FieldGroup();

            Fg.IsTableGroup = true;
            Fg.Name         = "My Group";
            Fg.Order        = 23;
            dt.FieldGroups.Add(Fg);
            DocumentTypeField dtf = new DocumentTypeField();

            dtf.FormatType = FormatType.RegularExpression;

            ExtractionType et = new ExtractionType();

            dtf.ExtractionType = et;

            dt.Fields.Add(dtf);
            dt.InternalName = "hejsan";
            dt.SystemName   = "Thesystemname";
            dt.IsSelected   = true;

            Ec.SelectedDocumentTypes.Add(dt);

            return(GetResponseString <ExtractionConfiguration>(Ec, ct));
        }
コード例 #5
0
        public override void Execute()
        {
            base.Execute();

            if (_project != null && _extractionConfiguration == null)
            {
                var available = _project.ExtractionConfigurations.Where(c => c.IsExtractable(out _)).Cast <ExtractionConfiguration>().ToArray();

                if (available.Any())
                {
                    _extractionConfiguration = SelectOne(available);
                }

                if (_extractionConfiguration == null)
                {
                    return;
                }
            }

            var ui = Activator.Activate <ExecuteExtractionUI, ExtractionConfiguration>(_extractionConfiguration);

            if (_selectedDataSet != null)
            {
                ui.TickAllFor(_selectedDataSet);
            }
        }
コード例 #6
0
        public void CloneWithExtractionProgress()
        {
            var sds          = _configuration.SelectedDataSets[0];
            var ci           = sds.GetCatalogue().CatalogueItems.First();
            var origProgress = new ExtractionProgress(DataExportRepository, sds, null, DateTime.Now, 10, "fff drrr", ci.ID);

            origProgress.ProgressDate = new DateTime(2001, 01, 01);
            origProgress.SaveToDatabase();

            ExtractionConfiguration deepClone = _configuration.DeepCloneWithNewIDs();

            Assert.AreEqual(deepClone.Cohort_ID, _configuration.Cohort_ID);
            Assert.AreNotEqual(deepClone.ID, _configuration.ID);

            var clonedSds = deepClone.SelectedDataSets.Single(s => s.ExtractableDataSet_ID == sds.ExtractableDataSet_ID);

            var clonedProgress = clonedSds.ExtractionProgressIfAny;

            Assert.IsNotNull(clonedProgress);
            Assert.IsNull(clonedProgress.StartDate);
            Assert.IsNull(clonedProgress.ProgressDate, "Cloning a ExtractionProgress should reset its ProgressDate back to null in anticipation of it being extracted again");

            Assert.AreEqual(clonedProgress.EndDate, origProgress.EndDate);
            Assert.AreEqual(clonedProgress.NumberOfDaysPerBatch, origProgress.NumberOfDaysPerBatch);
            Assert.AreEqual(clonedProgress.Name, origProgress.Name);
            Assert.AreEqual(clonedProgress.ExtractionInformation_ID, origProgress.ExtractionInformation_ID);


            deepClone.DeleteInDatabase();

            // remove the progress so that it doesn't trip other tests
            origProgress.DeleteInDatabase();
        }
コード例 #7
0
        public ExecuteCommandAddDatasetsToConfiguration(IBasicActivateItems itemActivator, ExtractionConfiguration targetExtractionConfiguration) : base(itemActivator)
        {
            _targetExtractionConfiguration = targetExtractionConfiguration;

            if (_targetExtractionConfiguration.IsReleased)
            {
                SetImpossible("Extraction is Frozen because it has been released and is readonly, try cloning it instead");
            }

            //if we don't yet know what datasets to add (i.e. haven't called SetExtractableDataSets)
            if (_toadd == null)
            {
                if (itemActivator.CoreChildProvider is DataExportChildProvider childProvider)
                {
                    //use the ones that are not already in the ExtractionConfiguration
                    var _datasets           = childProvider.GetDatasets(targetExtractionConfiguration).Select(n => n.ExtractableDataSet).ToArray();
                    var _importableDataSets = childProvider.ExtractableDataSets.Except(_datasets)

                                              //where it can be used in any Project OR this project only
                                              .Where(ds => ds.Project_ID == null || ds.Project_ID == targetExtractionConfiguration.Project_ID).ToArray();

                    SetExtractableDataSets(true, _importableDataSets);
                }
                else
                {
                    SetImpossible("CoreChildProvider was not DataExportChildProvider");
                }
            }
        }
コード例 #8
0
        public ExtractionConfigurationMenu(RDMPContextMenuStripArgs args, ExtractionConfiguration extractionConfiguration)
            : base(args, extractionConfiguration)
        {
            Items.Add("Edit", null, (s, e) => _activator.Activate <ExtractionConfigurationUI, ExtractionConfiguration>(extractionConfiguration));

            ///////////////////Change Cohorts//////////////

            Add(new ExecuteCommandRelease(_activator).SetTarget(extractionConfiguration));

            Add(new ExecuteCommandChooseCohort(_activator, extractionConfiguration));

            /////////////////Add Datasets/////////////
            Add(new ExecuteCommandAddDatasetsToConfiguration(_activator, extractionConfiguration));

            Add(new ExecuteCommandAddPackageToConfiguration(_activator, extractionConfiguration));

            Add(new ExecuteCommandGenerateReleaseDocument(_activator, extractionConfiguration));

            if (extractionConfiguration.IsReleased)
            {
                Add(new ExecuteCommandUnfreezeExtractionConfiguration(_activator, extractionConfiguration));
            }
            else
            {
                Add(new ExecuteCommandFreezeExtractionConfiguration(_activator, extractionConfiguration));
            }

            Add(new ExecuteCommandCloneExtractionConfiguration(_activator, extractionConfiguration));

            Add(new ExecuteCommandRefreshExtractionConfigurationsCohort(_activator, extractionConfiguration));

            ReBrandActivateAs("Extract...", RDMPConcept.ExtractionConfiguration, OverlayKind.Execute);
        }
コード例 #9
0
        private void dataGridView1_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e)
        {
            //note that this only deals with clicking cells, to see what happens hwen user clicks in blank area of datagrid see dataGridView1_MouseClick
            if (e.RowIndex >= 0)
            {
                if (e.Button == System.Windows.Forms.MouseButtons.Right)
                {
                    menu.Items.Clear();


                    _rightClickedRowExtractionConfigurationID = int.Parse(dataGridView1.Rows[e.RowIndex].Cells["ID"].Value.ToString());

                    ExtractionConfiguration selectedExtractionConfiguration = Activator.RepositoryLocator.DataExportRepository.GetObjectByID <ExtractionConfiguration>(_rightClickedRowExtractionConfigurationID);

                    menu.Items.Clear();

                    if (!selectedExtractionConfiguration.IsReleased)
                    {
                        menu.Items.Add(mi_SetDescription);
                    }

                    menu.Show(Cursor.Position.X, Cursor.Position.Y);
                }
            }
        }
コード例 #10
0
ファイル: DataExportChildProvider.cs プロジェクト: HDRUK/RDMP
        private void AddChildren(ExtractionConfiguration extractionConfiguration, DescendancyList descendancy)
        {
            HashSet <object> children = new HashSet <object>();

            var parameters = AllGlobalExtractionFilterParameters.Where(p => p.ExtractionConfiguration_ID == extractionConfiguration.ID)
                             .ToArray();

            if (parameters.Any())
            {
                var parameterNode = new ParametersNode(extractionConfiguration, parameters);
                children.Add(parameterNode);
            }

            //if it has a cohort
            if (extractionConfiguration.Cohort_ID != null)
            {
                var cohort = Cohorts.Single(c => c.ID == extractionConfiguration.Cohort_ID);
                children.Add(new LinkedCohortNode(extractionConfiguration, cohort));
            }

            //if it has extractable datasets add those
            foreach (SelectedDataSets ds in GetDatasets(extractionConfiguration))
            {
                children.Add(ds);
                AddChildren(ds, descendancy.Add(ds));
            }

            AddToDictionaries(children, descendancy);
        }
コード例 #11
0
        public ExecuteCommandGenerateReleaseDocument(IBasicActivateItems activator, ExtractionConfiguration extractionConfiguration) : base(activator)
        {
            _extractionConfiguration = extractionConfiguration;
            /////////////////Other stuff///////////
            if (!extractionConfiguration.CumulativeExtractionResults.Any())
            {
                SetImpossible("No datasets have been extracted");
            }

            if (_extractionConfiguration.Cohort_ID == null)
            {
                SetImpossible("ExtractionConfiguration does not have a cohort");
            }
            else
            {
                try
                {
                    // try to fetch the cohort (give it 2 seconds maximum).
                    // we don't want to freeze waiting for context menu to pop up on this
                    var eds = _extractionConfiguration.Cohort.GetExternalData(2);

                    if (eds == ExternalCohortDefinitionData.Orphan)
                    {
                        SetImpossible("Cohort did not exist");
                    }
                }
                catch (Exception)
                {
                    SetImpossible("Cohort was unreachable");
                }
            }
        }
コード例 #12
0
        /// <summary>
        /// For refreshing the current extraction configuration CohortIdentificationConfiguration ONLY.  The ExtractionConfiguration must have a cic and a refresh pipeline configured on it.
        /// </summary>
        /// <param name="configuration"></param>
        public CohortCreationRequest(ExtractionConfiguration configuration)
        {
            _repository = (DataExportRepository)configuration.Repository;

            if (configuration.CohortIdentificationConfiguration_ID == null)
            {
                throw new NotSupportedException("Configuration '" + configuration + "' does not have an associated CohortIdentificationConfiguration for cohort refreshing");
            }

            var origCohort     = configuration.Cohort;
            var origCohortData = origCohort.GetExternalData();

            CohortIdentificationConfiguration = configuration.CohortIdentificationConfiguration;
            Project = configuration.Project;

            if (Project.ProjectNumber == null)
            {
                throw new ProjectNumberException("Project '" + Project + "' does not have a ProjectNumber");
            }

            var definition = new CohortDefinition(null, origCohortData.ExternalDescription, origCohortData.ExternalVersion + 1, (int)Project.ProjectNumber, origCohort.ExternalCohortTable);

            definition.CohortReplacedIfAny = origCohort;

            NewCohortDefinition    = definition;
            DescriptionForAuditLog = "Cohort Refresh";

            AddInitializationObject(Project);
            AddInitializationObject(CohortIdentificationConfiguration);
            AddInitializationObject(FileToLoad);
            AddInitializationObject(ExtractionIdentifierColumn);
            AddInitializationObject(this);

            GenerateContext();
        }
コード例 #13
0
        protected override void SetBindings(BinderWithErrorProviderFactory rules, ExtractionConfiguration databaseObject)
        {
            base.SetBindings(rules, databaseObject);

            Bind(tbUsername, "Text", "Username", c => c.Username);
            Bind(tbID, "Text", "ID", c => c.ID);
            Bind(tbDescription, "Text", "Description", c => c.Description);
        }
コード例 #14
0
 private static ExtractionOptions GetRunCommand(ExtractionConfiguration ec)
 {
     return(new ExtractionOptions()
     {
         ExtractionConfiguration = ec.ID,
         ExtractGlobals = true,
     });
 }
コード例 #15
0
ファイル: DataExportChildProvider.cs プロジェクト: HDRUK/RDMP
 public IEnumerable <SelectedDataSets> GetDatasets(ExtractionConfiguration extractionConfiguration)
 {
     lock (WriteLock)
     {
         return(_configurationToDatasetMapping.TryGetValue(extractionConfiguration, out List <SelectedDataSets> result)?
                (IEnumerable <SelectedDataSets>)result :new SelectedDataSets[0]);
     }
 }
コード例 #16
0
        private Project GetProjectWithConfig(out ExtractionConfiguration config)
        {
            var p = new Project(DataExportRepository, "Fish");

            p.ProjectNumber = -5000;
            config          = new ExtractionConfiguration(DataExportRepository, p);
            return(p);
        }
コード例 #17
0
        public IEnumerable <SelectedDataSets> GetDatasets(ExtractionConfiguration extractionConfiguration)
        {
            if (_configurationToDatasetMapping.ContainsKey(extractionConfiguration))
            {
                return(_configurationToDatasetMapping[extractionConfiguration]);
            }

            return(new SelectedDataSets[0]);
        }
コード例 #18
0
        private ExecuteCommandAddDatasetsToConfiguration(IActivateItems itemActivator, ExtractionConfiguration targetExtractionConfiguration) : base(itemActivator)
        {
            _targetExtractionConfiguration = targetExtractionConfiguration;

            if (_targetExtractionConfiguration.IsReleased)
            {
                SetImpossible("Extraction is Frozen because it has been released and is readonly, try cloning it instead");
            }
        }
コード例 #19
0
        public ExecuteCommandFreezeExtractionConfiguration(IBasicActivateItems activator, ExtractionConfiguration extractionConfiguration) : base(activator)
        {
            _extractionConfiguration = extractionConfiguration;

            if (extractionConfiguration.IsReleased)
            {
                SetImpossible("ExtractionConfiguration is already released)");
            }
        }
コード例 #20
0
 public ExecuteCommandGenerateReleaseDocument(IActivateItems activator, ExtractionConfiguration extractionConfiguration) : base(activator)
 {
     _extractionConfiguration = extractionConfiguration;
     /////////////////Other stuff///////////
     if (!extractionConfiguration.CumulativeExtractionResults.Any())
     {
         SetImpossible("No datasets have been extracted");
     }
 }
コード例 #21
0
        public ExecuteCommandCloneExtractionConfiguration(IActivateItems activator, ExtractionConfiguration extractionConfiguration) : base(activator)
        {
            _extractionConfiguration = extractionConfiguration;

            if (!_extractionConfiguration.SelectedDataSets.Any())
            {
                SetImpossible("ExtractionConfiguration does not have any selected datasets");
            }
        }
コード例 #22
0
        public ExecuteCommandUnfreezeExtractionConfiguration(IActivateItems activator, ExtractionConfiguration configuration) : base(activator)
        {
            _configuration = configuration;

            if (!_configuration.IsReleased)
            {
                SetImpossible("Extraction Configuration is not Frozen");
            }
        }
        public override void Execute()
        {
            base.Execute();

            var newConfig = new ExtractionConfiguration(Activator.RepositoryLocator.DataExportRepository, _project);

            //refresh the project
            Publish(_project);
            Activate(newConfig);
        }
コード例 #24
0
        protected override void Initialize()
        {
            _configuration = RepositoryLocator.DataExportRepository.GetObjectByID <ExtractionConfiguration>(_options.ExtractionConfiguration);
            _project       = _configuration.Project;
            _pipeline      = RepositoryLocator.CatalogueRepository.GetObjectByID <Pipeline>(_options.Pipeline);

            if (HasConfigurationPreviouslyBeenReleased())
            {
                throw new Exception("Extraction Configuration has already been released");
            }
        }
コード例 #25
0
        public ExtractionConfigurationMenu(RDMPContextMenuStripArgs args, ExtractionConfiguration extractionConfiguration)
            : base(args, extractionConfiguration)
        {
            _extractionConfiguration = extractionConfiguration;
            _childProvider           = (DataExportChildProvider)_activator.CoreChildProvider;

            _datasets = _childProvider.GetDatasets(extractionConfiguration).Select(n => n.ExtractableDataSet).ToArray();

            Items.Add("Edit", null, (s, e) => _activator.Activate <ExtractionConfigurationUI, ExtractionConfiguration>(extractionConfiguration));

            _importableDataSets = _childProvider.ExtractableDataSets.Except(_datasets).Where(ds => ds.Project_ID == null || ds.Project_ID == extractionConfiguration.Project_ID).ToArray();

            ///////////////////Change Cohorts//////////////

            Add(new ExecuteCommandRelease(_activator).SetTarget(extractionConfiguration));

            Add(new ExecuteCommandChooseCohort(_activator, extractionConfiguration));

            /////////////////Add Datasets/////////////
            var addDataSets = new ToolStripMenuItem("Add DataSet(s)", _activator.CoreIconProvider.GetImage(RDMPConcept.ExtractableDataSet, OverlayKind.Link), (s, e) => AddDatasetsToConfiguration());

            addDataSets.Enabled = !extractionConfiguration.IsReleased && _importableDataSets.Any();//not frozen and must be at least 1 dataset that is not in the configuration!
            Items.Add(addDataSets);

            if (_childProvider.AllPackages.Any())
            {
                var addPackageMenuItem = new ToolStripMenuItem("Add DataSet Package", _activator.CoreIconProvider.GetImage(RDMPConcept.ExtractableDataSetPackage));
                foreach (ExtractableDataSetPackage package in _childProvider.AllPackages)
                {
                    ExtractableDataSetPackage package1 = package;
                    addPackageMenuItem.DropDownItems.Add(package.Name, null, (s, e) => AddPackageToConfiguration(package1));
                }
                addPackageMenuItem.Enabled = !extractionConfiguration.IsReleased && _importableDataSets.Any();//not frozen and must be at least 1 dataset that is not in the configuration!
                Items.Add(addPackageMenuItem);
            }

            Add(new ExecuteCommandGenerateReleaseDocument(_activator, extractionConfiguration));

            var freeze = new ToolStripMenuItem("Freeze Extraction", CatalogueIcons.FrozenExtractionConfiguration, (s, e) => Freeze());

            freeze.Enabled = !extractionConfiguration.IsReleased && _datasets.Any();
            Items.Add(freeze);

            if (extractionConfiguration.IsReleased)
            {
                Add(new ExecuteCommandUnfreezeExtractionConfiguration(_activator, extractionConfiguration));
            }

            Add(new ExecuteCommandCloneExtractionConfiguration(_activator, extractionConfiguration));

            Add(new ExecuteCommandRefreshExtractionConfigurationsCohort(_activator, extractionConfiguration));

            ReBrandActivateAs("Extract...", RDMPConcept.ExtractionConfiguration, OverlayKind.Execute);
        }
コード例 #26
0
        public ExtractionConfigurationMenu(RDMPContextMenuStripArgs args, ExtractionConfiguration extractionConfiguration)
            : base(args, extractionConfiguration)
        {
            Items.Add("Edit", null, (s, e) => _activator.Activate <ExtractionConfigurationUI, ExtractionConfiguration>(extractionConfiguration));

            Add(new ExecuteCommandRelease(_activator).SetTarget(extractionConfiguration));
            Add(new ExecuteCommandRefreshExtractionConfigurationsCohort(_activator, extractionConfiguration));

            Add(new ExecuteCommandOpenExtractionDirectory(_activator, extractionConfiguration));

            ReBrandActivateAs("Extract...", RDMPConcept.ExtractionConfiguration, OverlayKind.Execute);
        }
コード例 #27
0
        public void ExtractionProgressConstructor_NoTimePeriodicity()
        {
            var cata    = new Catalogue(CatalogueRepository, "MyCata");
            var eds     = new ExtractableDataSet(DataExportRepository, cata);
            var project = new Project(DataExportRepository, "My Proj");
            var config  = new ExtractionConfiguration(DataExportRepository, project);
            var sds     = new SelectedDataSets(DataExportRepository, config, eds, null);

            var ex = Assert.Throws <ArgumentException>(() => new ExtractionProgress(DataExportRepository, sds));

            Assert.AreEqual("Cannot create ExtractionProgress because Catalogue MyCata does not have a time coverage column", ex.Message);
        }
コード例 #28
0
        public string GetCustomerExtractionConfiguration(HttpListenerContext ct, ActionInfo hi)
        {
            ExtractionConfiguration Ec = new ExtractionConfiguration();

            Ec.DefaultDocumentSpecification = "A spec";
            Ec.OrientationDetectionMode     = OrientationDetectionMode.Off;
            DocumentType dt = new DocumentType();

            dt.IsSelected = true;
            dt.Languages.Add("SE");
            dt.ExtractionName = "TEst.pdf";
            dt.InternalName   = "TeSt.pdf";
            Ec.SelectedDocumentTypes.Add(dt);
            return(GetResponseString <ExtractionConfiguration>(Ec, ct));
        }
コード例 #29
0
 private void RunTestWithCleanup(Project p, ExtractionConfiguration config, ICheckNotifier notifier = null)
 {
     try
     {
         new ProjectChecker(new ThrowImmediatelyActivator(RepositoryLocator), p).Check(notifier ?? new ThrowImmediatelyCheckNotifier()
         {
             ThrowOnWarning = true
         });
     }
     finally
     {
         config.DeleteInDatabase();
         p.DeleteInDatabase();
     }
 }
コード例 #30
0
        private void TestDataExportOfTvf()
        {
            var config = new ExtractionConfiguration(DataExportRepository, _project);

            config.Cohort_ID = DataExportRepository.GetAllObjects <ExtractableCohort>().Single().ID;
            config.SaveToDatabase();

            var tvfExtractable = new ExtractableDataSet(DataExportRepository, _tvfCatalogue);

            var selected = new SelectedDataSets(DataExportRepository, config, tvfExtractable, null);

            //make all columns part of the extraction
            foreach (ExtractionInformation e in _tvfCatalogue.GetAllExtractionInformation(ExtractionCategory.Any))
            {
                config.AddColumnToExtraction(tvfExtractable, e);
            }

            //the default value should be 10
            Assert.AreEqual("10", _tvfTableInfo.GetAllParameters().Single().Value);

            //configure an extraction specific global of 1 so that only 1 chi number is fetched (which will be in the cohort)
            var globalP = new GlobalExtractionFilterParameter(DataExportRepository, config, "DECLARE @numberOfRecords AS int;");

            globalP.Value = "1";
            globalP.SaveToDatabase();

            var extractionCommand = new ExtractDatasetCommand(config, new ExtractableDatasetBundle(tvfExtractable));

            var source = new ExecuteDatasetExtractionSource();

            source.PreInitialize(extractionCommand, new ThrowImmediatelyDataLoadEventListener());

            var dt = source.GetChunk(new ThrowImmediatelyDataLoadEventListener(), new GracefulCancellationToken());

            Assert.AreEqual(1, dt.Rows.Count);

            Assert.AreEqual("ReleaseId", dt.Columns[0].ColumnName);

            //should be a guid
            Assert.IsTrue(dt.Rows[0][0].ToString().Length > 10);
            Assert.IsTrue(dt.Rows[0][0].ToString().Contains("-"));

            selected.DeleteInDatabase();
            globalP.DeleteInDatabase();
            config.DeleteInDatabase();

            tvfExtractable.DeleteInDatabase();
        }