private async Task <LoadAnswer> ProcessLoadRequest(LoadRequest loadRequest)
        {
            LoadAnswer loadAnswer = new LoadAnswer();

            ExtractRequest extractRequest = new ExtractRequest(loadRequest.InitialYear, loadRequest.FinalYear);

            if (loadRequest.LoadFromDBLP)
            {
                (int numberOfResults, List <string> errorList) = await LoadFromSource(
                    "DBLP",
                    loadRequest,
                    extractRequest,
                    requestsManager.LoadDataFromDBLP,
                    dBLPExtractor.ExtractData);

                loadAnswer.DBLPNumberOfResults = numberOfResults;
                loadAnswer.DBLPErrors          = errorList;
            }

            if (loadRequest.LoadFromIEEEXplore)
            {
                (int numberOfResults, List <string> errorList) = await LoadFromSource(
                    "IEEEXplore",
                    loadRequest,
                    extractRequest,
                    requestsManager.LoadDataFromIEEEXplore,
                    iEEEXploreExtractor.ExtractData);

                loadAnswer.IEEEXploreNumberOfResults = numberOfResults;
                loadAnswer.IEEEXploreErrors          = errorList;
            }

            if (loadRequest.LoadFromGoogleScholar)
            {
                (int numberOfResults, List <string> errorList) = await LoadFromSource(
                    "Google Scholar",
                    loadRequest,
                    extractRequest,
                    requestsManager.LoadDataFromGoogleScholar,
                    bibTeXExtractor.ExtractData);

                loadAnswer.GoogleScholarNumberOfResults = numberOfResults;
                loadAnswer.GoogleScholarErrors          = errorList;
            }

            return(loadAnswer);
        }
        private void ShowResults(LoadAnswer loadAnswer, bool loadDBLP, bool loadIEEEXplore, bool loadGoogleScholar)
        {
            if (loadAnswer == null)
            {
                richTextBoxErrors.Text = "There was a problem with the answer of the warehouse.";

                return;
            }

            int dblpNumberOfResults          = loadAnswer.DBLPNumberOfResults;
            int ieeeXploreNumberOfResults    = loadAnswer.IEEEXploreNumberOfResults;
            int googleScholarNumberOfResults = loadAnswer.GoogleScholarNumberOfResults;

            labelDBLPReferencesNumber.Text          = dblpNumberOfResults.ToString();
            labelIEEEXploreReferencesNumber.Text    = ieeeXploreNumberOfResults.ToString();
            labelGoogleScholarReferencesNumber.Text = googleScholarNumberOfResults.ToString();

            int totalReferencesNumber = dblpNumberOfResults + ieeeXploreNumberOfResults + googleScholarNumberOfResults;

            labelTotalReferencesNumber.Text = totalReferencesNumber.ToString();

            string errorText = PrepareErrorText();

            if (errorText.Equals("") && totalReferencesNumber == 0)
            {
                errorText = "No publications loaded. It could be because no publication has been found or because they have been already loaded.";
            }

            richTextBoxErrors.Text = errorText;

            string PrepareErrorText()
            {
                string errors = "";

                if (loadDBLP && loadAnswer.DBLPErrors.Count > 0)
                {
                    errors += "DBLP:\n";
                    foreach (string error in loadAnswer.DBLPErrors)
                    {
                        errors += " - " + error + "\n";
                    }
                }

                if (loadIEEEXplore && loadAnswer.IEEEXploreErrors.Count > 0)
                {
                    errors += "IEEEXplore:\n";
                    foreach (string error in loadAnswer.IEEEXploreErrors)
                    {
                        errors += " - " + error + "\n";
                    }
                }

                if (loadGoogleScholar && loadAnswer.GoogleScholarErrors.Count > 0)
                {
                    errors += "Google Scholar:\n";
                    foreach (string error in loadAnswer.GoogleScholarErrors)
                    {
                        errors += " - " + error + "\n";
                    }
                }

                return(errors);
            }
        }