// TODO: This creates another session instance, should be executed inside the ThreadExecuter public static void PrintStartupInfo(SessionFactory factory, SettingsService settings) { if (settings.GetLocal().StashToLootFrom == 0) { Logger.Info("IA is configured to loot from the last stash page"); } else { Logger.Info($"IA is configured to loot from stash page #{settings.GetLocal().StashToLootFrom}"); } if (settings.GetLocal().StashToDepositTo == 0) { Logger.Info("IA is configured to deposit to the second-to-last stash page"); } else { Logger.Info($"IA is configured to deposit to stash page #{settings.GetLocal().StashToDepositTo}"); } using (var session = factory.OpenSession()) { var numItemsStored = session.CreateCriteria <PlayerItem>() .SetProjection(NHibernate.Criterion.Projections.RowCountInt64()) .UniqueResult <long>(); Logger.Info($"There are {numItemsStored} items stored in the database."); } if (settings.GetPersistent().BuddySyncEnabled) { Logger.Info($"Buddy items is enabled with user id {settings.GetPersistent().BuddySyncUserIdV2}"); } else { Logger.Info("Buddy items is disabled"); } if (settings.GetPersistent().ShowRecipesAsItems) { Logger.Info("Show recipes as items is enabled"); } else { Logger.Info("Show recipes as items is disabled"); } Logger.Info("Transfer to any mod is " + (settings.GetPersistent().TransferAnyMod ? "enabled" : "disabled")); Logger.Info("Experimental updates is " + (settings.GetPersistent().SubscribeExperimentalUpdates ? "enabled" : "disabled")); var mods = GlobalPaths.TransferFiles; if (mods.Count == 0) { Logger.Warn("No transfer files has been found"); } else { Logger.Info("The following transfer files has been found:"); foreach (var mod in mods) { Logger.Info($"\"{mod.Filename}\": Mod: \"{mod.Mod}\", HC: {mod.IsHardcore}"); } } Logger.Info("There are items stored for the following mods:"); foreach (var entry in new PlayerItemDaoImpl(factory, new DatabaseItemStatDaoImpl(factory)).GetModSelection()) { Logger.Info($"Mod: \"{entry.Mod}\", HC: {entry.IsHardcore}"); } var gdPath = new DatabaseSettingDaoImpl(factory).GetCurrentDatabasePath(); if (string.IsNullOrEmpty(gdPath)) { Logger.Info("The path to Grim Dawn is unknown (not great)"); } else { Logger.Info($"The path to Grim Dawn is \"{gdPath}\""); } Logger.Info("Startup data dump complete"); }
public static ServiceProvider Initialize(ThreadExecuter threadExecuter, SqlDialect dialect) { Logger.Debug("Creating services"); var factory = new SessionFactory(dialect); // Settings should be upgraded early, it contains the language pack etc and some services depends on settings. var settingsService = StartupService.LoadSettingsService(); var grimDawnDetector = new GrimDawnDetector(settingsService); IPlayerItemDao playerItemDao; IDatabaseItemDao databaseItemDao; IDatabaseSettingDao databaseSettingDao; IDatabaseItemStatDao databaseItemStatDao; IItemTagDao itemTagDao; IBuddyItemDao buddyItemDao; IBuddySubscriptionDao buddySubscriptionDao; IRecipeItemDao recipeItemDao; IItemSkillDao itemSkillDao; IAugmentationItemDao augmentationItemRepo; IItemCollectionDao itemCollectionRepo; if (dialect == SqlDialect.Sqlite) { playerItemDao = new PlayerItemRepo(threadExecuter, factory, dialect); databaseItemDao = new DatabaseItemRepo(threadExecuter, factory, dialect); databaseSettingDao = new DatabaseSettingRepo(threadExecuter, factory, dialect); databaseItemStatDao = new DatabaseItemStatRepo(threadExecuter, factory, dialect); itemTagDao = new ItemTagRepo(threadExecuter, factory, dialect); buddyItemDao = new BuddyItemRepo(threadExecuter, factory, dialect); buddySubscriptionDao = new BuddySubscriptionRepo(threadExecuter, factory, dialect); recipeItemDao = new RecipeItemRepo(threadExecuter, factory, dialect); itemSkillDao = new ItemSkillRepo(threadExecuter, factory); augmentationItemRepo = new AugmentationItemRepo(threadExecuter, factory, new DatabaseItemStatDaoImpl(factory, dialect), dialect); itemCollectionRepo = new ItemCollectionRepo(threadExecuter, factory, dialect); } else { databaseItemStatDao = new DatabaseItemStatDaoImpl(factory, dialect); playerItemDao = new PlayerItemDaoImpl(factory, databaseItemStatDao, dialect); databaseItemDao = new DatabaseItemDaoImpl(factory, dialect); databaseSettingDao = new DatabaseSettingDaoImpl(factory, dialect); itemTagDao = new ItemTagDaoImpl(factory, dialect); buddyItemDao = new BuddyItemDaoImpl(factory, databaseItemStatDao, dialect); buddySubscriptionDao = new BuddySubscriptionDaoImpl(factory, dialect); recipeItemDao = new RecipeItemDaoImpl(factory, dialect); itemSkillDao = new ItemSkillDaoImpl(factory); augmentationItemRepo = new AugmentationItemDaoImpl(factory, databaseItemStatDao, dialect); itemCollectionRepo = new ItemCollectionDaoImpl(factory, dialect); } // Chicken and the egg.. var itemStatService = new ItemStatService(databaseItemStatDao, itemSkillDao, settingsService); SearchController searchController = new SearchController( databaseItemDao, playerItemDao, itemStatService, buddyItemDao, augmentationItemRepo, settingsService, itemCollectionRepo ); List <object> services = new List <object>(); services.Add(itemTagDao); services.Add(databaseItemDao); services.Add(databaseItemStatDao); services.Add(playerItemDao); services.Add(databaseSettingDao); services.Add(buddyItemDao); services.Add(buddySubscriptionDao); services.Add(itemSkillDao); services.Add(augmentationItemRepo); //services.Add(userFeedbackService); services.Add(settingsService); services.Add(grimDawnDetector); services.Add(recipeItemDao); services.Add(itemCollectionRepo); services.Add(searchController); services.Add(itemStatService); var cacher = new TransferStashServiceCache(databaseItemDao); services.Add(cacher); Logger.Debug("All services created"); return(new ServiceProvider(services)); }