public void RecalculateRootModel( RootModel root, ISqlConnectionFactory connectionFactory, IDataManagerFactory dataManagerFactory, CalculationTicket ticket ) { // everything is recalculated automatically but overlays in case they were changed #warning it's a big question whether overlays need to be recalculated every time #warning we need to see if somebody has changed PST composition since we opened for editing but haven't yet saved SecurityRepository securityRepository; PortfolioRepository portfolioRepository; ManagingPst.PortfolioSecurityTargetRepository portfolioSecurityTargetRepository; using (var ondemandManager = new OnDemandDataManager(connectionFactory, dataManagerFactory)) { securityRepository = this.repositoryManager.ClaimSecurityRepository(ondemandManager); portfolioRepository = this.repositoryManager.ClaimPortfolioRepository(ondemandManager); portfolioSecurityTargetRepository = this.repositoryManager.ClaimPortfolioSecurityTargetRepository( root.LatestPstChangeset, ondemandManager.Claim() ); // in order to proceed we need to make sure all missing countries are there IEnumerable <BenchmarkSumByIsoInfo> benchmarks = new BenchmarkSumByIsoInfo[] { }; var computations = this.modelBuilder.CreateComputations(root.Globe, this.Traverser); var countryRepository = this.repositoryManager.ClaimCountryRepository(ondemandManager); var targetingTypeRepository = this.repositoryManager.ClaimTargetingTypeRepository(ondemandManager); var targetingType = targetingTypeRepository.GetTargetingType(root.TargetingType.Id); this.RegisterMissingCountriesIfAny( root, computations, countryRepository, targetingType, securityRepository, portfolioRepository, portfolioSecurityTargetRepository, benchmarks ); } this.InitializeOverlay( root, securityRepository, portfolioRepository, portfolioSecurityTargetRepository ); // required to inject problems to base values // we are not interested in the result of validation this.modelApplier.ValidateModel(root, ticket); }
protected IOnDemand <TDataManager> CreateOnDemandDataManager() { var result = new OnDemandDataManager <TDataManager>(this.connectionFactory, this.dataManagerFactory); return(result); }