public async Task CalculateData(CommonSuggestionEngineData commonData)
        {
            if (HasCalculatedData)
                return;
            HasCalculatedData = true;

            _commonData = commonData;
            await Task.Run(() => DoCalculateData());
        }
        public void CalculateData()
        {
            if (HasCalculatedData)
                return;
            HasCalculatedData = true;

            Task<IEnumerable<MovieInformationRow>> movieInformation = _couchRepository.GetAllMovieInformation();
            Task<IEnumerable<AllRatingsRow>> allRatings = _couchRepository.GetAllMovieRatings2();
            Task.WaitAll(movieInformation, allRatings);

            _commonData = new CommonSuggestionEngineData(allRatings.Result, movieInformation.Result);

            var calc1 = _linearCovarianceCalculator.CalculateData(_commonData);
            var calc2 = _twoToOneCovarianceCalculator.CalculateData(_commonData);
            Task.WaitAll(calc1, calc2);
        }