static void Main() { // Load Config.xml to setup log4net string path = Path.GetDirectoryName( System.Reflection.Assembly.GetExecutingAssembly() .GetModules()[0].FullyQualifiedName) + "\\log4net.xml"; if (File.Exists(path)) { XmlConfigurator.Configure(new FileInfo(path)); } // Setup storage manager string configsPath = Path.Combine(Environment.Environment.AppPath, @"Config"); var configurationManager = new ConfigurationManager(configsPath); var databaseName = configurationManager.GetConfig("Common").GetSection("Database").GetSetting("FileName").Value; var schemaScript = configurationManager.GetConfig("Common").GetSection("Database").GetSetting("SchemaScript").Value; IStorageManager storageManager = new SqLiteStorageManager(); storageManager.CreateOrOpenStorage( string.Concat(Environment.Environment.AppPath, databaseName), string.Concat(Environment.Environment.AppPath, schemaScript)); // Setup localization string localizationsPath = Path.Combine(Environment.Environment.AppPath, @"Resources\Localizations"); ILocalizationManager localizationManager = new LocalizationManager(localizationsPath); try { var localization = configurationManager.GetConfig("Common") .GetSection("Localization") .GetSetting("Current") .Value; List<ILocalization> localizations = localizationManager.GetAvailableLocalizations(); ILocalization current = null; if (!string.IsNullOrEmpty(localization)) { current = localizations.FirstOrDefault( l => l.FileInfo.Name.ToUpper() == localization.ToUpper()); } if (current == null) { current = localizations.LastOrDefault(); } localizationManager.SetupLocalization(current); } catch (Exception exception) { Log.Error(exception); } // Setup repositories var repositoryFactory = new RepositoryFactory(storageManager); repositoryFactory.RegisterSpecificationTranslator(new CustomerSpecTranslator()) .RegisterSpecificationTranslator(new ShippingAddressSpecTranslator()) .RegisterSpecificationTranslator(new CategorySpecTranslator()) .RegisterSpecificationTranslator(new PriceListSpecTranslator()) .RegisterSpecificationTranslator(new CommonTranslator<Product>()) .RegisterSpecificationTranslator(new OrderSpecTranslator()) .RegisterSpecificationTranslator(new OrderItemSpecTranslator()) .RegisterSpecificationTranslator(new ProductPriceSpecTranslator()) .RegisterSpecificationTranslator( new ProductsUnitOfMeasureSpecTranslator()) .RegisterSpecificationTranslator(new RoutePointSpecTranslator()) .RegisterSpecificationTranslator(new RouteSpecTranslator()) .RegisterSpecificationTranslator( new RoutePointTemplateSpecTranslator()) .RegisterSpecificationTranslator(new RouteTemplateSpecTranslator()) .RegisterSpecificationTranslator(new CommonTranslator<Status>()) .RegisterSpecificationTranslator(new CommonTranslator<UnitOfMeasure>()) .RegisterSpecificationTranslator(new WarehouseSpecTranslator()); IModelsFactory modelsFactory = new ModelsFactory(repositoryFactory); var main = new Main(localizationManager); var presentersFactory = new PresentersFactory(storageManager, repositoryFactory, modelsFactory, main, configurationManager, localizationManager); string userName = configurationManager.GetConfig("Common").GetSection("Server").GetSetting("Username").Value; string password = configurationManager.GetConfig("Common").GetSection("Server").GetSetting("Password").Value; if (string.IsNullOrEmpty(userName) || string.IsNullOrEmpty(password)) { main.SetView(new LogonView(presentersFactory, localizationManager)); } else { main.SetView(new MenuView(presentersFactory, localizationManager)); } Log.Info("Application start"); System.Windows.Forms.Application.Run(main); Log.Info("Application finish"); }
public void MyTestInitialize() { const string dbScriptFileName = @"\schema.sql"; string databaseScriptFullPath = TestEnvironment.GetApplicationDirectory() + dbScriptFileName; var storageManager = new SqLiteStorageManager(); _sqliteDtabase = storageManager.InitializeInMemoryStorage(databaseScriptFullPath); _repositoryFactory = new RepositoryFactory(storageManager); _repositoryFactory.RegisterSpecificationTranslator(new CommonTranslator<Customer>()) .RegisterSpecificationTranslator(new ShippingAddressSpecTranslator()); }
public void SynchronizeTest() { var webServer = new WebServer("http://mss.alkotorg.com", "manager", "423200"); const int bathSize = 300; var storageManager = new SqLiteStorageManager(); var unitOfWorkFactory = new SqLiteUnitOfWorkFactory(storageManager); // Initialization const string dbScriptFileName = @"\schema.sql"; string databaseScriptFullPath = TestEnvironment.GetApplicationDirectory() + dbScriptFileName; string databaseFileFullPath = TestEnvironment.GetApplicationDirectory() + @"\storage.sqlite"; var database = storageManager.CreateOrOpenStorage(databaseFileFullPath, databaseScriptFullPath); var repositoryFactory = new RepositoryFactory(storageManager); repositoryFactory.RegisterSpecificationTranslator(new CommonTranslator<Customer>()) .RegisterSpecificationTranslator(new ShippingAddressSpecTranslator()) .RegisterSpecificationTranslator(new CommonTranslator<Category>()) .RegisterSpecificationTranslator(new CommonTranslator<PriceList>()) .RegisterSpecificationTranslator(new CommonTranslator<Product>()) .RegisterSpecificationTranslator(new OrderSpecTranslator()) .RegisterSpecificationTranslator(new OrderItemSpecTranslator()) .RegisterSpecificationTranslator(new ProductPriceSpecTranslator()) .RegisterSpecificationTranslator( new ProductsUnitOfMeasureSpecTranslator()) .RegisterSpecificationTranslator(new RoutePointSpecTranslator()) .RegisterSpecificationTranslator(new RouteSpecTranslator()) .RegisterSpecificationTranslator( new RoutePointTemplateSpecTranslator()) .RegisterSpecificationTranslator(new RouteTemplateSpecTranslator()) .RegisterSpecificationTranslator(new CommonTranslator<Status>()) .RegisterSpecificationTranslator(new CommonTranslator<UnitOfMeasure>()) .RegisterSpecificationTranslator(new CommonTranslator<Warehouse>()); // Customers synchronization var customerDtoRepository = new WebRepository<CustomerDto>(webServer); var customerSqLiteRepository = repositoryFactory.CreateRepository<Customer>(); DtoTranslator<Customer, CustomerDto> customerTranslator = new CustomerTranslator(repositoryFactory); var customerSyncCmd = new SynchronizationCommand<CustomerDto, Customer>(customerDtoRepository, customerSqLiteRepository, customerTranslator, unitOfWorkFactory, bathSize); customerSyncCmd.Execute(); // Shipping addresses synchronization var shippingAddressDtoRepository = new WebRepository<ShippingAddressDto>(webServer); var shippingAddressSqLiteRepository = repositoryFactory.CreateRepository<ShippingAddress>(); DtoTranslator<ShippingAddress, ShippingAddressDto> shippingAddressdTranslator = new ShippingAddressdTranslator(); var shippingAddressSyncCmd = new SynchronizationCommand<ShippingAddressDto, ShippingAddress>( shippingAddressDtoRepository, shippingAddressSqLiteRepository, shippingAddressdTranslator, unitOfWorkFactory, bathSize); shippingAddressSyncCmd.Execute(); // Categories synchronization var categoriesDtoRepository = new WebRepository<CategoryDto>(webServer); var categorySqLiteRepository = repositoryFactory.CreateRepository<Category>(); DtoTranslator<Category, CategoryDto> categoriesTranslator = new CategoryTranslator(); var categoriesSyncCmd = new CategotiesSynchronization(categoriesDtoRepository, categorySqLiteRepository, categoriesTranslator, unitOfWorkFactory, bathSize); categoriesSyncCmd.Execute(); // Statuses synchronization var statusDtoRepository = new WebRepository<StatusDto>(webServer); var statusSqLiteRepository = repositoryFactory.CreateRepository<Status>(); DtoTranslator<Status, StatusDto> statusTranslator = new StatusTranslator(); var statusSyncCommand = new SynchronizationCommand<StatusDto, Status>(statusDtoRepository, statusSqLiteRepository, statusTranslator, unitOfWorkFactory, bathSize); statusSyncCommand.Execute(); // Warehouses synchronization var warehouseDtoRepository = new WebRepository<WarehouseDto>(webServer); var warehouseSqLiteRepository = repositoryFactory.CreateRepository<Warehouse>(); DtoTranslator<Warehouse, WarehouseDto> warehouseTranslator = new WarehouseTranslator(); var warehouseSyncCommand = new SynchronizationCommand<WarehouseDto, Warehouse>(warehouseDtoRepository, warehouseSqLiteRepository, warehouseTranslator, unitOfWorkFactory, bathSize); warehouseSyncCommand.Execute(); // Price lists synchronization var priceListDtoRepository = new WebRepository<PriceListDto>(webServer); var priceListSqLiteRepository = repositoryFactory.CreateRepository<PriceList>(); DtoTranslator<PriceList, PriceListDto> priceListTranslator = new PriceListTranslator(repositoryFactory); var priceListSyncCommand = new SynchronizationCommand<PriceListDto, PriceList>(priceListDtoRepository, priceListSqLiteRepository, priceListTranslator, unitOfWorkFactory, bathSize); priceListSyncCommand.Execute(); // UnitOfMeasures synchronization var unitOfMeasureDtoRepository = new WebRepository<UnitOfMeasureDto>(webServer); var unitOfMeasureSqLiteRepository = repositoryFactory.CreateRepository<UnitOfMeasure>(); DtoTranslator<UnitOfMeasure, UnitOfMeasureDto> unitOfMeasureTranslator = new UnitOfMeasureTranslator(); var unitOfMeasureSyncCommand = new SynchronizationCommand<UnitOfMeasureDto, UnitOfMeasure>( unitOfMeasureDtoRepository, unitOfMeasureSqLiteRepository, unitOfMeasureTranslator, unitOfWorkFactory, bathSize); unitOfMeasureSyncCommand.Execute(); // Products synchronization var productDtoRepository = new WebRepository<ProductDto>(webServer); var productSqLiteRepository = repositoryFactory.CreateRepository<Product>(); DtoTranslator<Product, ProductDto> productTranslator = new ProductTranslator(repositoryFactory); var productSyncCommand = new SynchronizationCommand<ProductDto, Product>(productDtoRepository, productSqLiteRepository, productTranslator, unitOfWorkFactory, bathSize); productSyncCommand.Execute(); // Product prices synchronization var productsPriceDtoRepository = new WebRepository<ProductPriceDto>(webServer); var productsPriceSqLiteRepository = repositoryFactory.CreateRepository<ProductsPrice>(); DtoTranslator<ProductsPrice, ProductPriceDto> productsPriceTranslator = new ProductsPriceTranslator(); var productsPricesSyncCommand = new SynchronizationCommand<ProductPriceDto, ProductsPrice>( productsPriceDtoRepository, productsPriceSqLiteRepository, productsPriceTranslator, unitOfWorkFactory, bathSize); productsPricesSyncCommand.Execute(); // Product units of measure synchronization var productsUomDtoRepository = new WebRepository<ProductUnitOfMeasureDto>(webServer); var productsUnitOfMeasureSqLiteRepository = repositoryFactory.CreateRepository<ProductsUnitOfMeasure>(); DtoTranslator<ProductsUnitOfMeasure, ProductUnitOfMeasureDto> productsUnitOfMeasureTranslator = new ProductsUnitOfMeasureTranslator(); var productsUomSyncCommand = new SynchronizationCommand<ProductUnitOfMeasureDto, ProductsUnitOfMeasure>( productsUomDtoRepository, productsUnitOfMeasureSqLiteRepository, productsUnitOfMeasureTranslator, unitOfWorkFactory, bathSize); productsUomSyncCommand.Execute(); // Route templates synchronization var routeTemplateDtoRepository = new WebRepository<RouteTemplateDto>(webServer); var routeTemplateSqLiteRepository = repositoryFactory.CreateRepository<RouteTemplate>(); DtoTranslator<RouteTemplate, RouteTemplateDto> routeTemplateTranslator = new RouteTemplateTranslator(repositoryFactory); var routeTemplateSyncCommand = new SynchronizationCommand<RouteTemplateDto, RouteTemplate>( routeTemplateDtoRepository, routeTemplateSqLiteRepository, routeTemplateTranslator, unitOfWorkFactory, bathSize); routeTemplateSyncCommand.Execute(); // Route points templates synchronization var routePointTemplateDtoRepository = new WebRepository<RoutePointTemplateDto>(webServer); var routePointTemplateSqLiteRepository = repositoryFactory.CreateRepository<RoutePointTemplate>(); DtoTranslator<RoutePointTemplate, RoutePointTemplateDto> routePointTemplateTranslator = new RoutePointTemplateTranslator(); var routePointTemplateSyncCommand = new SynchronizationCommand<RoutePointTemplateDto, RoutePointTemplate>( routePointTemplateDtoRepository, routePointTemplateSqLiteRepository, routePointTemplateTranslator, unitOfWorkFactory, bathSize); routePointTemplateSyncCommand.Execute(); // Copy result database File.Copy(databaseFileFullPath, @"\Storage Card\storage.sqlite"); database.Dispose(); }