private void BenchmarkingTimer_Tick(object sender, EventArgs e) { foreach (var check in BenchmarkManager.GetStatusCheckAlgos()) { algorithmsListView1.SetSpeedStatus(check.Item1, check.Item2, GetDotsWaitString()); } }
public static (bool stopped, string failReason) StopDevice(ComputeDevice device, bool refreshStateChange = true) { // we can only start a device it is already stopped switch (device.State) { case DeviceState.Stopped: return(false, $"Device {device.Uuid} already stopped"); case DeviceState.Benchmarking: device.State = DeviceState.Stopped; BenchmarkManager.StopBenchmarForDevice(device); if (refreshStateChange) { NiceHashStats.StateChanged(); } return(true, ""); case DeviceState.Mining: device.State = DeviceState.Stopped; UpdateDevicesToMine(); if (refreshStateChange) { NiceHashStats.StateChanged(); } return(true, ""); default: return(false, $"Cannot handle state {device.State.ToString()} for device {device.Uuid}"); } }
private void FormBenchmark_New_FormClosing(object sender, FormClosingEventArgs e) { BenchmarkManager.OnAlgoStatusUpdate -= SetCurrentStatus; BenchmarkManager.OnStepUp -= StepUpBenchmarkStepProgress; BenchmarkManager.OnBenchmarkEnd -= EndBenchmark; if (ApplicationStateManager.BurnCalled) { return; } if (BenchmarkManager.InBenchmark) { e.Cancel = true; return; } // disable all pending benchmark foreach (var cDev in AvailableDevices.Devices) { foreach (var algorithm in cDev.AlgorithmSettings) { algorithm.ClearBenchmarkPending(); } } BenchmarkManager.ClearQueue(); // save already benchmarked algorithms ConfigManager.CommitBenchmarks(); }
public App() { var log = new Label(); MainPage = new ContentPage { Content = new StackLayout { VerticalOptions = LayoutOptions.Start, Children = { new Button { Text = "Start benchmark", Command = new Command(OnStartBenchmarkClick) }, log } } }; BenchmarkManager manager = BenchmarkManager.Current; manager.Log += text => log.Text += Environment.NewLine + text; manager.Register(typeof(BenchmarksBasic).GetTypeInfo().Assembly); }
public void CalcBenchmarkDevicesAlgorithmQueue() { var count = BenchmarkManager.CalcBenchDevAlgoQueue(); // GUI stuff progressBarBenchmarkSteps.Maximum = count; progressBarBenchmarkSteps.Value = 0; SetLabelBenchmarkSteps(0, count); }
static void Main(string[] args) { BenchmarkManager manager = BenchmarkManager.Current; manager.Log += WriteLine; manager.Register(typeof(BenchmarksBasic).Assembly); manager.Start(); ReadLine(); }
public static (bool started, string failReason) StartDevice(ComputeDevice device, bool skipBenhcmakrk = false) { // we can only start a device it is already stopped if (device.State != DeviceState.Stopped && !skipBenhcmakrk) { return(false, "Device already started"); } var started = true; var failReason = ""; var isErrorState = !device.AnyAlgorithmEnabled(); var isAllZeroPayingState = device.AllEnabledAlgorithmsZeroPaying(); // check if device has any benchmakrs var needsBenchmark = device.AllEnabledAlgorithmsWithoutBenchmarks(); var needsReBenchmark = device.HasEnabledAlgorithmsWithReBenchmark(); if (isErrorState || isAllZeroPayingState) { device.State = DeviceState.Error; started = false; failReason = isAllZeroPayingState ? "No enabled algorithm is profitable" : "Cannot start a device with all disabled algoirhtms"; } else if (needsBenchmark && !skipBenhcmakrk) { device.State = DeviceState.Benchmarking; BenchmarkManager.StartBenchmarForDevice(device, new BenchmarkStartSettings { StartMiningAfterBenchmark = true, BenchmarkPerformanceType = BenchmarkPerformanceType.Standard, BenchmarkOption = BenchmarkOption.ZeroOnly }); } else if (needsReBenchmark && !skipBenhcmakrk) { device.State = DeviceState.Benchmarking; BenchmarkManager.StartBenchmarForDevice(device, new BenchmarkStartSettings { StartMiningAfterBenchmark = true, BenchmarkPerformanceType = BenchmarkPerformanceType.Standard, BenchmarkOption = BenchmarkOption.ReBecnhOnly }); } else { device.State = DeviceState.Mining; UpdateDevicesToMine(); } RefreshDeviceListView?.Invoke(null, null); NiceHashStats.StateChanged(); return(started, failReason); }
// TODO add list for safety and kill all miners private void StopButonClick() { _benchmarkingTimer.Stop(); Logger.Debug("FormBenchmark", "StopButonClick() benchmark routine stopped"); //// copy benchmarked //CopyBenchmarks(); BenchmarkManager.Stop(); if (_exitWhenFinished) { Close(); } }
protected override void OnCreate(Bundle bundle) { base.OnCreate(bundle); SetContentView(Resource.Layout.Main); _console = FindViewById<TextView>(Resource.Id.console); _scroll = FindViewById<ScrollView>(Resource.Id.consoleScroll); _benchmarkManager = new BenchmarkManager(); _benchmarkManager.Log += BenchmarkManagerOnLog; using (var buttonRun = FindViewById<Button>(Resource.Id.run)) buttonRun.Click += ButtonRunOnClick; }
private bool StartButonClick() { CalcBenchmarkDevicesAlgorithmQueue(); // device selection check scope { var noneSelected = AvailableDevices.Devices.All(cDev => !cDev.Enabled); if (noneSelected) { MessageBox.Show(Translations.Tr("No device has been selected there is nothing to benchmark"), Translations.Tr("No device selected"), MessageBoxButtons.OK); return(false); } } // device todo benchmark check scope { if (!BenchmarkManager.HasWork) { MessageBox.Show(Translations.Tr("Current benchmark settings are already executed. There is nothing to do."), Translations.Tr("Nothing to benchmark"), MessageBoxButtons.OK); return(false); } } // disable gui controls benchmarkOptions1.Enabled = false; CloseBtn.Enabled = false; algorithmsListView1.IsInBenchmark = true; devicesListViewEnableControl1.IsInBenchmark = true; algorithmSettingsControl1.IsInBenchmark = true; algorithmSettingsControl1.Enabled = false; // set benchmark pending status foreach (var deviceAlgosTuple in BenchmarkManager.BenchDevAlgoQueue) { foreach (var algo in deviceAlgosTuple.Item2) { algo.SetBenchmarkPending(); } if (deviceAlgosTuple.Item1 != null) { algorithmsListView1.RepaintStatus(deviceAlgosTuple.Item1.Enabled, deviceAlgosTuple.Item1.Uuid); } } BenchmarkManager.Start(benchmarkOptions1.PerformanceType, this); _benchmarkingTimer.Start(); return(true); }
protected override void OnCreate(Bundle bundle) { base.OnCreate(bundle); SetContentView(Resource.Layout.Main); _console = FindViewById <TextView>(Resource.Id.console); _scroll = FindViewById <ScrollView>(Resource.Id.consoleScroll); _benchmarkManager = new BenchmarkManager(); _benchmarkManager.Log += BenchmarkManagerOnLog; using (var buttonRun = FindViewById <Button>(Resource.Id.run)) buttonRun.Click += ButtonRunOnClick; }
public void EndBenchmark(object sender, bool hasFailedAlgos) { if (ApplicationStateManager.BurnCalled) { return; } FormHelpers.SafeInvoke(this, () => { _benchmarkingTimer.Stop(); Logger.Debug("FormBenchmark", "EndBenchmark() benchmark routine finished"); //CopyBenchmarks(); BenchmarkStoppedGuiSettings(); // check if all ok if (!hasFailedAlgos && StartMiningOnFinish == false) { MessageBox.Show( Translations.Tr("All benchmarks have been successful"), Translations.Tr("Benchmark finished report"), MessageBoxButtons.OK); } else if (StartMiningOnFinish == false) { var result = MessageBox.Show( //Translations.Tr("Not all benchmarks finished successfully. Retry to re-run the benchmark process against unbenchmarked algos or Cancel to disable unbenchmarked algorithms."), Translations.Tr("Not all benchmarks finished successfully."), Translations.Tr("Benchmark finished report"), MessageBoxButtons.OK); //if (result == DialogResult.Retry) //{ // StartButonClick(); // return; //} // update algos status BenchmarkManager.CalcBenchDevAlgoQueue(); } if (_exitWhenFinished || StartMiningOnFinish) { Close(); } }); }
public void LviSetColor(ListViewItem lvi) { if (!(lvi.Tag is ComputeDevice cDevice)) { return; } var uuid = cDevice.Uuid; if (!cDevice.Enabled) { lvi.BackColor = DisabledColor; } else { lvi.BackColor = BenchmarkManager.IsDevBenchmarked(uuid) ? BenchmarkedColor : UnbenchmarkedColor; } }
public static (bool stopped, string failReason) StopAllDevice() { var allDevs = AvailableDevices.Devices; // TODO when starting and stopping we are not taking Pending and Error states into account var devicesToStop = allDevs.Where(dev => dev.State == DeviceState.Mining || dev.State == DeviceState.Benchmarking); if (devicesToStop.Count() == 0) { return(false, "No new devices to stop"); } var devicesToStopBenchmarking = devicesToStop.Where(dev => dev.State == DeviceState.Benchmarking); if (devicesToStopBenchmarking.Count() > 0) { BenchmarkManager.StopBenchmarForDevices(devicesToStopBenchmarking); } var devicesToStopMining = devicesToStop.Where(dev => dev.State == DeviceState.Mining); if (devicesToStopMining.Count() > 0) { foreach (var stopDevice in devicesToStopMining) { stopDevice.State = DeviceState.Stopped; } UpdateDevicesToMine(); } // TODO for now no partial success so if one fails send back that everything fails var stopped = true; var failReason = ""; //// try to stop all //foreach (var dev in devicesToStop) { // var (success, msg) = StopDevice(dev, false); // if (!success) { // stopped = false; // failReason = msg; // } //} NiceHashStats.StateChanged(); StopMining(true); return(stopped, failReason); }
private static GreenField.Targeting.Server.FacadeSettings CreateFacadeSettingsUnsafe(String connectionString, String usersConnectionString, Boolean shouldDropRepositories) { var infoCopier = new InfoCopier(); var cache = MemoryCache.Default; var countryRepositoryStorage = new CacheStorage <CountryRepository>(cache); var countrySerializer = new CountryToJsonSerializer(); var countryManager = new CountryManager(countryRepositoryStorage); var basketRenderer = new BasketRenderer(); var securityRepositoryCache = new CacheStorage <SecurityRepository>(cache); var calculationRequester = new CalculationRequester(); var monitor = new Monitor(); var securitySerializer = new SecurityToJsonSerializer(countrySerializer); var securityManager = new SecurityManager(securityRepositoryCache, monitor); IDataManagerFactory dataManagerFactory = new DataManagerFactory(); IUsersDataManagerFactory usersDataManagerFactory = new UsersDataManagerFactory(); var connectionFactory = new SqlConnectionFactory(connectionString); var usersConnectionFactory = new SqlConnectionFactory(usersConnectionString); var portfolioRepositoryCache = new CacheStorage <PortfolioRepository>(cache); var portfolioSerialzer = new TopDown.Core.ManagingPortfolios.PortfolioToJsonSerializer(securitySerializer); var portfolioManager = new TopDown.Core.ManagingPortfolios.PortfolioManager( portfolioRepositoryCache, portfolioSerialzer ); var targetingTypeManager = new TargetingTypeManager( new TopDown.Core.ManagingTargetingTypes.InfoDeserializer(), new CacheStorage <TargetingTypeRepository>(cache), new CacheStorage <TargetingTypeGroupRepository>(cache) ); var taxonomyManager = new TaxonomyManager( new CacheStorage <TaxonomyRepository>(cache), new TopDown.Core.ManagingTaxonomies.InfoDeserializer( new TopDown.Core.ManagingTaxonomies.XmlDeserializer() ) ); var basketRepositoryStorage = new CacheStorage <BasketRepository>(cache); var basketManager = new BasketManager( basketRepositoryStorage, new TopDown.Core.ManagingBaskets.XmlDeserializer(), new BasketSecurityRelationshipInvestigator() ); var benchmarkRepositoryStorage = new CacheStorage <BenchmarkRepository>(cache); var benchmarkManager = new BenchmarkManager(benchmarkRepositoryStorage); var portfolioSecurityTargetRepositoryCache = new CacheStorage <TopDown.Core.ManagingPst.PortfolioSecurityTargetRepository>(cache); var portfolioSecurityTargetRepositoryManager = new TopDown.Core.ManagingPst.RepositoryManager( infoCopier, portfolioSecurityTargetRepositoryCache ); var bpstCache = new CacheStorage <TopDown.Core.ManagingBpst.BasketSecurityPortfolioTargetRepository>(cache); var bpstManager = new TopDown.Core.ManagingBpst.BasketSecurityPortfolioTargetRepositoryManager(bpstCache); var ttgbsbvrCache = new CacheStorage <TopDown.Core.ManagingBpst.TargetingTypeGroupBasketSecurityBaseValueRepository>(cache); var ttgbsbvrManager = new TopDown.Core.ManagingBpst.TargetingTypeGroupBasketSecurityBaseValueRepositoryManager(ttgbsbvrCache); var issuerRepositoryStorage = new CacheStorage <IssuerRepository>(cache); var issuerManager = new IssuerManager(monitor, issuerRepositoryStorage); var repositoryManager = new TopDown.Core.RepositoryManager( monitor, basketManager, targetingTypeManager, countryManager, taxonomyManager, securityManager, portfolioManager, benchmarkManager, portfolioSecurityTargetRepositoryManager, bpstManager, ttgbsbvrManager, issuerManager ); if (shouldDropRepositories) { repositoryManager.DropEverything(); } var validationSerializer = new TopDown.Core.ValidationIssueToJsonSerializer(); var expressionSerializer = new ExpressionToJsonSerializer(validationSerializer); var expressionDeserializer = new ExpressionFromJsonDeserializer(); var defaultBreakdownValues = TopDown.Core.ManagingBpt.DefaultValues.CreateDefaultValues(); var picker = new ExpressionPicker(); var commonParts = new CommonParts(); var overlayModelBuilder = new TopDown.Core.Overlaying.ModelBuilder(null, commonParts); var overlayManager = new OverlayManager(overlayModelBuilder); var bptModelBuilder = new TopDown.Core.ManagingBpt.ModelBuilder( picker, commonParts, defaultBreakdownValues, overlayModelBuilder ); var globeTraverser = new GlobeTraverser(); var taxonomyTraverser = new TaxonomyTraverser(); var taxonomyToModelTransformer = new TaxonomyToModelTransformer(picker, bptModelBuilder, globeTraverser); var countriesDetector = new MissingCountriesDetector( new UnknownCountryIsoCodesDetector(), new TopDown.Core.ManagingTaxonomies.CountryIsoCodesExtractor(taxonomyTraverser), new TopDown.Core.Overlaying.CombinedCountryIsoCodesExtractor(new TopDown.Core.Overlaying.CountryIsoCodesExtractor()), new TopDown.Core.ManagingBenchmarks.CountryIsoCodesExtractor() ); var modelToTaxonomyTransformer = new ModelToTaxonomyTransformer(); var bptModelApplier = new TopDown.Core.ManagingBpt.ModelApplier( new TopDown.Core.ManagingBpt.ChangingBt.ChangesetApplier(dataManagerFactory, modelToTaxonomyTransformer), new TopDown.Core.ManagingBpt.ChangingBt.ModelToChangesetTransformer(globeTraverser), new TopDown.Core.ManagingBpt.ChangingPsto.ChangesetApplier(), new TopDown.Core.ManagingBpt.ChangingPsto.ModelToChangesetTransformer(), new TopDown.Core.ManagingBpt.ChangingTtbbv.ChangesetApplier(), new TopDown.Core.ManagingBpt.ChangingTtbbv.ModelToChangesetTransformer(globeTraverser), new TopDown.Core.ManagingBpt.ChangingTtbpt.ChangesetApplier(), new TopDown.Core.ManagingBpt.ChangingTtbpt.ModelToChangesetTransformer(globeTraverser), new TopDown.Core.ManagingBpt.ModelValidator(globeTraverser), dataManagerFactory, calculationRequester ); var targetsFlattener = new TargetsFlattener(infoCopier); var bptChangeDetector = new TopDown.Core.ManagingBpt.ModelChangeDetector( new TopDown.Core.ManagingBpt.ModelExpressionTraverser(globeTraverser) ); var bptManager = new TopDown.Core.ManagingBpt.ModelManager( globeTraverser, bptModelBuilder, taxonomyToModelTransformer, new BaseValueInitializer(globeTraverser), new BenchmarkValueInitializer(globeTraverser), new OverlayInitializer(globeTraverser, targetsFlattener), new PortfolioAdjustmentInitializer(globeTraverser), new TopDown.Core.ManagingBpt.ModelToJsonSerializer(expressionSerializer, portfolioSerialzer), new TopDown.Core.ManagingBpt.ModelFromJsonDeserializer( picker, bptModelBuilder, globeTraverser, expressionDeserializer ), repositoryManager, overlayManager, countriesDetector, bptModelApplier, bptChangeDetector ); var pstModelToChangeMapper = new TopDown.Core.ManagingPst.ModelToChangesetTransformer(); var pstChangeApplier = new TopDown.Core.ManagingPst.ChangesetApplier(); var pstModelBuilder = new TopDown.Core.ManagingPst.ModelBuilder(null, commonParts); var pstModelChangeDetector = new TopDown.Core.ManagingPst.ModelChangeDetector( new TopDown.Core.ManagingPst.ModelExpressionTraverser() ); var pstModelValidator = new TopDown.Core.ManagingPst.ModelValidator(); var pstManager = new PstManager( pstChangeApplier, pstModelValidator, pstModelToChangeMapper, new TopDown.Core.ManagingPst.ModelFromJsonDeserializer( pstModelBuilder, expressionDeserializer ), pstModelBuilder, portfolioSecurityTargetRepositoryManager, pstModelChangeDetector, dataManagerFactory, calculationRequester, new TopDown.Core.ManagingPst.ModelToJsonSerializer(expressionSerializer, securitySerializer) ); var portfiolioPickerManager = new ProtfolioPickerManager( new TopDown.Core.Gadgets.PortfolioPicker.ModelToJsonSerializer() ); var basketPickerManager = new TopDown.Core.Gadgets.BasketPicker.ModelManager( new TopDown.Core.Gadgets.BasketPicker.ModelBuilder( new BasketExtractor(taxonomyTraverser), new BasketRenderer() ), new TopDown.Core.Gadgets.BasketPicker.ModelToJsonSerializer() ); var bpstModelBuilder = new TopDown.Core.ManagingBpst.ModelBuilder( TopDown.Core.ManagingBpst.DefaultValues.CreateDefaultValues(), commonParts ); var bpstBenchmarkInitializer = new TopDown.Core.ManagingBpst.BenchmarkInitializer(); var bpstModelValidator = new TopDown.Core.ManagingBpst.ModelValidator(); var bpstModelChangeDetector = new TopDown.Core.ManagingBpst.ModelChangeDetector(new TopDown.Core.ManagingBpst.ModelExpressionTraverser()); var bpstModelManager = new TopDown.Core.ManagingBpst.ModelManager( new TopDown.Core.ManagingBpst.ModelToJsonSerializer(expressionSerializer, securitySerializer), bpstModelBuilder, new TopDown.Core.ManagingBpst.ModelFromJsonDeserializer( expressionDeserializer, bpstModelBuilder, bpstBenchmarkInitializer ), new TopDown.Core.ManagingBpst.ModelApplier( dataManagerFactory, new TopDown.Core.ManagingBpst.ChangingTtgbsbv.ChangesetApplier(), new TopDown.Core.ManagingBpst.ChangingTtgbsbv.ModelToChangesetTransformer(), new TopDown.Core.ManagingBpst.ChangingBpst.PortfolioTargetChangesetApplier(), new TopDown.Core.ManagingBpst.ChangingBpst.ModelToChangesetTransformter(), calculationRequester, bpstModelValidator, repositoryManager ), bpstModelValidator, bpstBenchmarkInitializer, bpstModelChangeDetector, repositoryManager ); var validationManager = new ValidationManager(validationSerializer); var hopper = new TopDown.Core.ManagingCalculations.Hopper( repositoryManager, bptManager, bpstModelManager, basketRenderer ); var commentManager = new TopDown.Core.ManagingComments.CommentManager(); var facade = new Facade( connectionFactory, usersConnectionFactory, dataManagerFactory, usersDataManagerFactory, repositoryManager, bptManager, picker, commonParts, pstManager, basketManager, portfiolioPickerManager, basketPickerManager, bpstModelManager, portfolioManager, hopper, commentManager ); var serializer = new Server.Serializer(); var bgaSerializer = new GreenField.Targeting.Server.BroadGlobalActive.Serializer( serializer, bptChangeDetector ); var deserializer = new Server.Deserializer(connectionFactory, dataManagerFactory, repositoryManager); var bgaDeserializer = new GreenField.Targeting.Server.BroadGlobalActive.Deserializer( deserializer, bptModelBuilder, globeTraverser ); var btSerializer = new GreenField.Targeting.Server.BasketTargets.Serializer(serializer, bpstModelChangeDetector); var btDeserializer = new GreenField.Targeting.Server.BasketTargets.Deserializer(deserializer, bpstModelBuilder, bpstBenchmarkInitializer); var buSerializer = new GreenField.Targeting.Server.BottomUp.Serializer(serializer, pstModelChangeDetector); var buDeserializer = new GreenField.Targeting.Server.BottomUp.Deserializer(deserializer, pstModelBuilder); var result = new GreenField.Targeting.Server.FacadeSettings( facade, serializer, bgaSerializer, bgaDeserializer, btSerializer, btDeserializer, buSerializer, buDeserializer, ConfigurationSettings.ShouldDropRepositoriesOnEachReload ); return(result); }
// TODO add check for any enabled algorithms public static (bool started, string failReason) StartAllAvailableDevices(bool isRpcCall = false) { var allDevs = AvailableDevices.Devices; var devicesToStart = allDevs.Where(dev => dev.State == DeviceState.Stopped); if (devicesToStart.Count() == 0) { return(false, "there are no new devices to start"); } // TODO for now no partial success so if one fails send back that everything fails var started = true; var failReason = ""; // TODO we have a BUG HERE if device enabled with all disabled algorithms var devicesToBenchmark = devicesToStart.Where(dev => dev.AllEnabledAlgorithmsWithoutBenchmarks() && dev.AnyAlgorithmEnabled()); var devicesToReBenchmark = devicesToStart.Where(dev => dev.HasEnabledAlgorithmsWithReBenchmark() && !devicesToBenchmark.Contains(dev)); foreach (var dev in devicesToBenchmark) { dev.State = DeviceState.Benchmarking; BenchmarkManager.StartBenchmarForDevice(dev, new BenchmarkStartSettings { StartMiningAfterBenchmark = true, BenchmarkPerformanceType = BenchmarkPerformanceType.Standard, BenchmarkOption = BenchmarkOption.ZeroOrReBenchOnly }); } foreach (var dev in devicesToReBenchmark) { dev.State = DeviceState.Benchmarking; BenchmarkManager.StartBenchmarForDevice(dev, new BenchmarkStartSettings { StartMiningAfterBenchmark = true, BenchmarkPerformanceType = BenchmarkPerformanceType.Standard, BenchmarkOption = BenchmarkOption.ReBecnhOnly }); } var devicesInErrorState = devicesToStart.Where(dev => !dev.AnyAlgorithmEnabled() || dev.AllEnabledAlgorithmsZeroPaying()).ToList(); var devicesInErrorStateUUIDs = devicesInErrorState.Select(dev => dev.Uuid); foreach (var dev in devicesInErrorState) { dev.State = DeviceState.Error; } // TODO check count var devicesToMine = devicesToStart.Where(dev => !dev.AllEnabledAlgorithmsWithoutBenchmarks() && !devicesInErrorStateUUIDs.Contains(dev.Uuid)).ToList(); foreach (var dev in devicesToMine) { dev.State = DeviceState.Mining; } UpdateDevicesToMine(); if (!isRpcCall) { NiceHashStats.StateChanged(); } RefreshDeviceListView?.Invoke(null, null); return(started, ""); }
public static Facade CreateFacade(String connectionString) { var infoCopier = new InfoCopier(); var countryRepositoryStorage = new InMemoryStorage <CountryRepository>(); var countrySerializer = new CountryToJsonSerializer(); var countryManager = new CountryManager(countryRepositoryStorage); var basketRenderer = new BasketRenderer(); var securityRepositoryCache = new InMemoryStorage <SecurityRepository>(); var calculationRequester = new CalculationRequester(); var monitor = new Monitor(); var securitySerializer = new SecurityToJsonSerializer(countrySerializer); var securityManager = new SecurityManager(securityRepositoryCache, monitor); IDataManagerFactory dataManagerFactory = new FakeDataManagerFactory(); var connectionFactory = new SqlConnectionFactory(connectionString); var portfolioRepositoryCache = new InMemoryStorage <PortfolioRepository>(); var portfolioSerialzer = new TopDown.Core.ManagingPortfolios.PortfolioToJsonSerializer(securitySerializer); var portfolioManager = new TopDown.Core.ManagingPortfolios.PortfolioManager( portfolioRepositoryCache, portfolioSerialzer ); var targetingTypeManager = new TargetingTypeManager( new TopDown.Core.ManagingTargetingTypes.InfoDeserializer(), new InMemoryStorage <TargetingTypeRepository>(), new InMemoryStorage <TargetingTypeGroupRepository>() ); var taxonomyManager = new TaxonomyManager( new InMemoryStorage <TaxonomyRepository>(), new TopDown.Core.ManagingTaxonomies.InfoDeserializer( new TopDown.Core.ManagingTaxonomies.XmlDeserializer() ) ); var basketRepositoryStorage = new InMemoryStorage <BasketRepository>(); var basketManager = new BasketManager( basketRepositoryStorage, new TopDown.Core.ManagingBaskets.XmlDeserializer(), new BasketSecurityRelationshipInvestigator() ); var benchmarkRepositoryStorage = new InMemoryStorage <BenchmarkRepository>(); var benchmarkManager = new BenchmarkManager(benchmarkRepositoryStorage); var portfolioSecurityTargetRepositoryCache = new InMemoryStorage <TopDown.Core.ManagingPst.PortfolioSecurityTargetRepository>(); var portfolioSecurityTargetRepositoryManager = new TopDown.Core.ManagingPst.RepositoryManager( infoCopier, portfolioSecurityTargetRepositoryCache ); var bpstCache = new InMemoryStorage <TopDown.Core.ManagingBpst.BasketSecurityPortfolioTargetRepository>(); var bpstManager = new TopDown.Core.ManagingBpst.BasketSecurityPortfolioTargetRepositoryManager(bpstCache); var ttgbsbvrCache = new InMemoryStorage <TopDown.Core.ManagingBpst.TargetingTypeGroupBasketSecurityBaseValueRepository>(); var ttgbsbvrManager = new TopDown.Core.ManagingBpst.TargetingTypeGroupBasketSecurityBaseValueRepositoryManager(ttgbsbvrCache); var issuerRepositoryStorage = new InMemoryStorage <IssuerRepository>(); var issuerManager = new IssuerManager(monitor, issuerRepositoryStorage); var repositoryManager = new TopDown.Core.RepositoryManager( monitor, basketManager, targetingTypeManager, countryManager, taxonomyManager, securityManager, portfolioManager, benchmarkManager, portfolioSecurityTargetRepositoryManager, bpstManager, ttgbsbvrManager, issuerManager ); repositoryManager.DropEverything(); var validationSerializer = new TopDown.Core.ValidationIssueToJsonSerializer(); var expressionSerializer = new ExpressionToJsonSerializer(validationSerializer); var expressionDeserializer = new ExpressionFromJsonDeserializer(); var defaultBreakdownValues = TopDown.Core.ManagingBpt.DefaultValues.CreateDefaultValues(); var picker = new ExpressionPicker(); var commonParts = new CommonParts(); var overlayModelBuilder = new TopDown.Core.Overlaying.ModelBuilder(null, commonParts); var overlayManager = new OverlayManager(overlayModelBuilder); var bptModelBuilder = new TopDown.Core.ManagingBpt.ModelBuilder( picker, commonParts, defaultBreakdownValues, overlayModelBuilder ); var globeTraverser = new GlobeTraverser(); var taxonomyTraverser = new TaxonomyTraverser(); var taxonomyToModelTransformer = new TaxonomyToModelTransformer(picker, bptModelBuilder, globeTraverser); var countriesDetector = new MissingCountriesDetector( new UnknownCountryIsoCodesDetector(), new TopDown.Core.ManagingTaxonomies.CountryIsoCodesExtractor(taxonomyTraverser), new TopDown.Core.Overlaying.CombinedCountryIsoCodesExtractor(new TopDown.Core.Overlaying.CountryIsoCodesExtractor()), new TopDown.Core.ManagingBenchmarks.CountryIsoCodesExtractor() ); var modelToTaxonomyTransformer = new ModelToTaxonomyTransformer(); var bptModelApplier = new TopDown.Core.ManagingBpt.ModelApplier( new TopDown.Core.ManagingBpt.ChangingBt.ChangesetApplier(dataManagerFactory, modelToTaxonomyTransformer), new TopDown.Core.ManagingBpt.ChangingBt.ModelToChangesetTransformer(globeTraverser), new TopDown.Core.ManagingBpt.ChangingPsto.ChangesetApplier(), new TopDown.Core.ManagingBpt.ChangingPsto.ModelToChangesetTransformer(), new TopDown.Core.ManagingBpt.ChangingTtbbv.ChangesetApplier(), new TopDown.Core.ManagingBpt.ChangingTtbbv.ModelToChangesetTransformer(globeTraverser), new TopDown.Core.ManagingBpt.ChangingTtbpt.ChangesetApplier(), new TopDown.Core.ManagingBpt.ChangingTtbpt.ModelToChangesetTransformer(globeTraverser), new TopDown.Core.ManagingBpt.ModelValidator(globeTraverser), dataManagerFactory, calculationRequester ); var targetsFlattener = new TargetsFlattener(infoCopier); var bptChangeDetector = new TopDown.Core.ManagingBpt.ModelChangeDetector( new TopDown.Core.ManagingBpt.ModelExpressionTraverser(globeTraverser) ); var bptManager = new TopDown.Core.ManagingBpt.ModelManager( globeTraverser, bptModelBuilder, taxonomyToModelTransformer, new BaseValueInitializer(globeTraverser), new BenchmarkValueInitializer(globeTraverser), new OverlayInitializer(globeTraverser, targetsFlattener), new PortfolioAdjustmentInitializer(globeTraverser), new TopDown.Core.ManagingBpt.ModelToJsonSerializer(expressionSerializer, portfolioSerialzer), new TopDown.Core.ManagingBpt.ModelFromJsonDeserializer( picker, bptModelBuilder, globeTraverser, expressionDeserializer ), repositoryManager, overlayManager, countriesDetector, bptModelApplier, bptChangeDetector ); var pstModelToChangeMapper = new TopDown.Core.ManagingPst.ModelToChangesetTransformer(); var pstChangeApplier = new TopDown.Core.ManagingPst.ChangesetApplier(); var pstModelBuilder = new TopDown.Core.ManagingPst.ModelBuilder(null, commonParts); var pstModelValidator = new TopDown.Core.ManagingPst.ModelValidator(); var pstManager = new PstManager( pstChangeApplier, pstModelValidator, pstModelToChangeMapper, new TopDown.Core.ManagingPst.ModelFromJsonDeserializer( pstModelBuilder, expressionDeserializer ), pstModelBuilder, portfolioSecurityTargetRepositoryManager, new TopDown.Core.ManagingPst.ModelChangeDetector( new TopDown.Core.ManagingPst.ModelExpressionTraverser() ), dataManagerFactory, calculationRequester, new TopDown.Core.ManagingPst.ModelToJsonSerializer(expressionSerializer, securitySerializer) ); var portfiolioPickerManager = new ProtfolioPickerManager( new TopDown.Core.Gadgets.PortfolioPicker.ModelToJsonSerializer() ); var basketPickerManager = new TopDown.Core.Gadgets.BasketPicker.ModelManager( new TopDown.Core.Gadgets.BasketPicker.ModelBuilder( new BasketExtractor(taxonomyTraverser), new BasketRenderer() ), new TopDown.Core.Gadgets.BasketPicker.ModelToJsonSerializer() ); var bpstModelBuilder = new TopDown.Core.ManagingBpst.ModelBuilder( TopDown.Core.ManagingBpst.DefaultValues.CreateDefaultValues(), commonParts ); var bpstBenchmarkInitializer = new TopDown.Core.ManagingBpst.BenchmarkInitializer(); var bpstModelValidator = new TopDown.Core.ManagingBpst.ModelValidator(); var bpstModelManager = new TopDown.Core.ManagingBpst.ModelManager( new TopDown.Core.ManagingBpst.ModelToJsonSerializer(expressionSerializer, securitySerializer), bpstModelBuilder, new TopDown.Core.ManagingBpst.ModelFromJsonDeserializer( expressionDeserializer, bpstModelBuilder, bpstBenchmarkInitializer ), new TopDown.Core.ManagingBpst.ModelApplier( dataManagerFactory, new TopDown.Core.ManagingBpst.ChangingTtgbsbv.ChangesetApplier(), new TopDown.Core.ManagingBpst.ChangingTtgbsbv.ModelToChangesetTransformer(), new TopDown.Core.ManagingBpst.ChangingBpst.PortfolioTargetChangesetApplier(), new TopDown.Core.ManagingBpst.ChangingBpst.ModelToChangesetTransformter(), calculationRequester, bpstModelValidator, repositoryManager ), bpstModelValidator, bpstBenchmarkInitializer, new TopDown.Core.ManagingBpst.ModelChangeDetector(new TopDown.Core.ManagingBpst.ModelExpressionTraverser()), repositoryManager ); var validationManager = new ValidationManager(validationSerializer); var hopper = new TopDown.Core.ManagingCalculations.Hopper( repositoryManager, bptManager, bpstModelManager, basketRenderer ); //var fileManager = new TopDown.Core.ManagingCalculations.TradingTargetsFileManager(repositoryManager, dataManagerFactory, connectionFactory); var commentManager = new Core.ManagingComments.CommentManager(); var facade = new Facade( connectionFactory, dataManagerFactory, repositoryManager, bptManager, picker, commonParts, pstManager, basketManager, portfiolioPickerManager, basketPickerManager, bpstModelManager, portfolioManager, hopper, commentManager ); return(facade); }