public void AssertExtractedFailDataset()
        {
            var dataSet = new ExtractedDataset(ResultLevel.FATAL);

            var baseResult    = new BaseResult(ResultLevel.FATAL, "Base result message");
            var parsingResult = new ParsingResult(ResultLevel.ERROR, "Parsing result", 123);

            dataSet.AddParsingResult(baseResult);
            dataSet.AddParsingResult(parsingResult);

            Assert.False(dataSet.IsExtractedSuccess);
            Assert.AreEqual(ResultLevel.FATAL, dataSet.ThresholdLevel);

            var entities = dataSet.ExtractedEntities;

            Assert.Null(entities);
        }
        public void AssertExtractedSuccessDataset()
        {
            var dataSet = new ExtractedDataset(ResultLevel.ERROR);

            var baseResult    = new BaseResult(ResultLevel.INFO, "Base result message");
            var parsingResult = new ParsingResult(ResultLevel.INFO, "Parsing result", 123);

            dataSet.AddParsingResult(baseResult);
            dataSet.AddParsingResult(parsingResult);

            Assert.True(dataSet.IsExtractedSuccess);
            Assert.AreEqual(ResultLevel.ERROR, dataSet.ThresholdLevel);

            var entities = dataSet.ExtractedEntities;

            Assert.AreEqual(1, entities.Count());
            Assert.AreEqual(123, (int)entities.First());
        }
        public void AssertExtractedFailDataset()
        {
            var mockDataSourceLocation = new Mock<IDataSourceLocation>();
            var dataSet = new ExtractedDataset<int>(ResultLevel.FATAL);

            var baseResult = new BaseResult(ResultLevel.FATAL, "Base result message");
            var parsingResult = new ParsingResult(ResultLevel.ERROR, "Parsing result", 123, mockDataSourceLocation.Object);

            dataSet.AddParsingResult(baseResult);
            dataSet.AddParsingResult(parsingResult);

            Assert.False(dataSet.IsExtractedSuccess);
            Assert.AreEqual(ResultLevel.FATAL, dataSet.ThresholdLevel);

            var entities = dataSet.ExtractedEntities;

            Assert.Null(entities);

        }
        public void AssertExtractedSuccessDataset()
        {
            var mockDataSourceLocation = new Mock<IDataSourceLocation>();
            var dataSet = new ExtractedDataset<int>(ResultLevel.ERROR);

            var baseResult = new BaseResult(ResultLevel.INFO, "Base result message");
            var parsingResult = new ParsingResult(ResultLevel.INFO, "Parsing result", 123, mockDataSourceLocation.Object);

            dataSet.AddParsingResult(baseResult);
            dataSet.AddParsingResult(parsingResult);

            Assert.True(dataSet.IsExtractedSuccess);
            Assert.AreEqual(ResultLevel.ERROR, dataSet.ThresholdLevel);

            var entities = dataSet.ExtractedEntities;

            Assert.AreEqual(1, entities.Count());
            Assert.AreEqual(123, (int)entities.First());

        }
        public override IExtractedDataset <T> Extract <T>(IDataToImport dataToImport)
        {
            var extractedDataset = new ExtractedDataset <T>(_thresholdLevel);

            ChemistryFileChildObjectExtractConfiguration chemistryDataExtractConfiguration = null;
            SampleFileChildObjectExtractConfiguration    sampleDataExtractConfiguration    = null;



            var castedDataToImport = dataToImport as ESDATDataToImport;

            if (castedDataToImport == null)
            {
                extractedDataset.AddParsingResult(new BaseResult(ResultLevel.FATAL, "Data to Import needs to be ESDATDataToImport"));
            }

            try
            {
                chemistryDataExtractConfiguration = _extractConfigurations.Where(x => x is ChemistryFileChildObjectExtractConfiguration)
                                                    .Cast <ChemistryFileChildObjectExtractConfiguration>()
                                                    .SingleOrDefault();
            }
            catch (Exception ex)
            {
                chemistryDataExtractConfiguration = null;
                extractedDataset.AddParsingResult(new BaseResult(ResultLevel.FATAL, "ESDAT data importer needs to have one and only one Chemistry file extract configuration"));
            }

            try
            {
                sampleDataExtractConfiguration = _extractConfigurations.Where(x => x is SampleFileChildObjectExtractConfiguration)
                                                 .Cast <SampleFileChildObjectExtractConfiguration>()
                                                 .SingleOrDefault();
            }
            catch (Exception ex)
            {
                sampleDataExtractConfiguration = null;
                extractedDataset.AddParsingResult(new BaseResult(ResultLevel.FATAL, "ESDAT data importer needs to have one and only one Sample file extract configuration"));
            }

            var model = new T();

            if (castedDataToImport.HeaderFileToImport == null)
            {
                var castedModel = model as ESDATModel;
                castedModel.LabName = _wqDefaultValueProvider.OrganizationNameSampleCollection;
                extractedDataset.AddParsingResults(new List <IResult> {
                    new BaseResult(ResultLevel.WARN, "Header file is null, use the default organization name in the default value provider")
                });
            }
            else
            {
                var headerFileExtractResults = ExtractHeaderFile(model, _extractConfigurations, castedDataToImport.HeaderFileToImport);
                extractedDataset.AddParsingResults(headerFileExtractResults);
            }


            if (chemistryDataExtractConfiguration != null && sampleDataExtractConfiguration != null)
            {
                var chemistryFileExtractResults = ExtractChemistryFileData(model, chemistryDataExtractConfiguration, castedDataToImport.ChemistryFileToImport);
                extractedDataset.AddParsingResults(chemistryFileExtractResults);

                var sampleFileExtractResults = ExtractSampleFileData(model, sampleDataExtractConfiguration, castedDataToImport.SampleFileToImport);
                extractedDataset.AddParsingResults(sampleFileExtractResults);
            }

            extractedDataset.AddParsingResults(new List <IResult> {
                new ParsingResult(ResultLevel.DEBUG, "Extract data into ESDAT model", model, null)
            });

            return(extractedDataset);
        }