示例#1
0
        private void UpdateDatabaseAsync(IEnumerable <LocalizedItem> items)
        {
            CultureInfo culture = Settings.DatabaseCulture;

            Observable.Start(() =>
            {
                // select items to update and convert them
                var dbItems = items
                              .Where(o => o.DatabaseEntity != null && string.IsNullOrEmpty(o.DatabaseEntity.Name) == false &&
                                     o.TranslatedEntity != null && string.IsNullOrEmpty(o.TranslatedEntity.Name) == false)
                              .Select(GetTranslatedDbItem);

                if (dbItems.Any() == false)
                {
                    return;
                }

                using (var provider = new MangosProvider())
                {
                    dbItems = provider.UpdateItems(dbItems, culture)
                              .ToList();
                }

                // refresh updated items
                items.Join(dbItems, o => o.DatabaseEntity.Id, o => o.Id, (li, dbi) => new { li, dbi })
                .ToList()
                .ForEach(o =>
                {
                    o.li.Error          = null;
                    o.li.DatabaseEntity = o.dbi;
                });
            });
        }
示例#2
0
        public static void ApplyProxySettings()
        {
            System.Net.WebProxy proxy = null;
            if (Properties.Settings.Default.UseProxy == true)
            {
                proxy = new System.Net.WebProxy(Properties.Settings.Default.ProxyAddress, Properties.Settings.Default.ProxyPort);
                switch (Settings.ProxyAuth)
                {
                case ProxyAuthEnum.DefaultAuthentification:
                    proxy.UseDefaultCredentials = true;
                    break;

                case ProxyAuthEnum.CustomAuthentification:
                    proxy.Credentials = new System.Net.NetworkCredential(
                        Settings.ProxyUsername,
                        MangosProvider.Decrypt(Settings.ProxyPassword));
                    break;

                case ProxyAuthEnum.NoAuthentification:
                default:
                    break;
                }
            }
            System.Net.WebRequest.DefaultWebProxy = proxy;
        }
        private void UpdateDatabaseAsync(IEnumerable <LocalizedItem> items)
        {
            CultureInfo culture = Settings.DatabaseCulture;

            Observable.Start(() =>
            {
                // select items to update and convert them
                var dbItems = items
                              //.Where(o => o.Status == LocalizationStatus.NotEqual)
                              .Select(GetTranslatedDbItem);

                if (dbItems.Any() == false)
                {
                    return;
                }

                using (var provider = new MangosProvider())
                {
                    dbItems = provider.UpdateItems(dbItems, culture)
                              .ToList();
                }

                // refresh updated items
                items.Join(dbItems, o => o.DatabaseEntity.Id, o => o.Id, (li, dbi) => new { li, dbi })
                .ToList()
                .ForEach(o => o.li.DatabaseEntity = o.dbi);
            });
        }
示例#4
0
        private void LoadItemsAsync()
        {
            CultureInfo culture = Settings.DatabaseCulture;
            // get a processId so we can stop it if the user request a new batch before we finished this one
            int processId = ++_loadProcessId;

            SetCollectionView(null);
            Observable.Start(() =>
            {
                // load items from database
                using (var provider = new MangosProvider())
                    using (var pc = new PerformanceChecker("GetItems"))
                    {
                        return(provider.GetItems(culture)
                               .Select(o => new LocalizedItem(o))
                               .ToList());
                    }
            })
            .ObserveOnDispatcher()
            .Subscribe(result =>
            {
                // check processId to make sure the user has not requested another batch meantime
                if (processId != _loadProcessId)
                {
                    return;
                }

                // display loaded items to user
                SetCollectionView(result);
            }, OnError);
        }
示例#5
0
        private void LoadDataAsync()
        {
            CultureInfo culture = Settings.DatabaseCulture;

            // get a processId so we can stop it if the user request a new batch before we finished this one
            int processId = ++_loadProcessId;

            SetCollectionView(null);
            Observable.Start(() =>
            {
                // load items from database
                var result = Enumerable.Empty <WowApiLocalizedData>();
                using (var provider = new MangosProvider())
                {
                    if (SelectedDataType.DataType == typeof(WowApi.Models.Achievement))
                    {
                        result = provider.GetAchievements(culture)
                                 .Select(o => new WowApiLocalizedData {
                            ItemId = o.Id
                        });
                    }
                    else if (SelectedDataType.DataType == typeof(WowApi.Models.Item))
                    {
                        result = provider.GetItems(culture)
                                 .Select(o => new WowApiLocalizedData {
                            ItemId = o.Id
                        });
                    }
                    else if (SelectedDataType.DataType == typeof(WowApi.Models.Quest))
                    {
                        result = provider.GetQuests(culture)
                                 .Select(o => new WowApiLocalizedData {
                            ItemId = o.Id
                        });
                    }
                    return(result.ToList());
                }
            })
            .ObserveOnDispatcher()
            .Subscribe(result =>
            {
                // check processId to make sure the user has not requested another batch meantime
                if (processId != _loadProcessId)
                {
                    return;
                }

                // display loaded items to user
                SetCollectionView(result);
            }, OnError);
        }
示例#6
0
 private void LoadApplicationSettings()
 {
     DatabaseHost     = Settings.DatabaseHost;
     DatabasePort     = Settings.DatabasePort;
     DatabaseName     = Settings.DatabaseName;
     DatabaseUsername = Settings.DatabaseUsername;
     DatabasePassword = MangosProvider.Decrypt(Settings.DatabasePassword);
     UseProxy         = Settings.UseProxy;
     ProxyAddress     = Settings.ProxyAddress;
     ProxyPort        = Settings.ProxyPort;
     ProxyAuth        = Settings.ProxyAuth;
     ProxyUsername    = Settings.ProxyUsername;
     ProxyPassword    = MangosProvider.Decrypt(Settings.ProxyPassword);
 }
示例#7
0
 private void SaveApplicationSettings()
 {
     Settings.DatabaseHost     = DatabaseHost;
     Settings.DatabasePort     = DatabasePort;
     Settings.DatabaseName     = DatabaseName;
     Settings.DatabaseUsername = DatabaseUsername;
     Settings.DatabasePassword = MangosProvider.Encrypt(DatabasePassword);
     Settings.UseProxy         = UseProxy;
     Settings.ProxyAddress     = ProxyAddress;
     Settings.ProxyPort        = ProxyPort;
     Settings.ProxyAuth        = ProxyAuth;
     Settings.ProxyUsername    = ProxyUsername;
     Settings.ProxyPassword    = MangosProvider.Encrypt(ProxyPassword);
     Settings.Save();
 }
示例#8
0
        private void UpdateDatabaseAsync(IEnumerable <LocalizedQuest> items)
        {
            CultureInfo culture = Settings.DatabaseCulture;

            Observable.Start(() =>
            {
                // select valid items and convert them to update database
                var dbItems = items
                              .Where(o => string.IsNullOrEmpty(o.Error) == false)
                              .Select(GetTranslatedDbItem);

                using (var provider = new MangosProvider())
                {
                    dbItems = provider.UpdateQuests(dbItems, culture)
                              .ToList();
                }
                items.Join(dbItems, o => o.DatabaseEntity.Id, o => o.Id, (li, dbi) => new { li, dbi })
                .ToList()
                .ForEach(o => o.li.DatabaseEntity = o.dbi);
            });
        }
        private void LoadGameObjects()
        {
            CultureInfo culture = Settings.DatabaseCulture;

            Observable.Start(() =>
            {
                int minId = 0;
                // load a bunch of objects from database
                var provider = new MangosProvider();
                return(provider.GetGameObjects(culture)
                       .Where(o => o.Type == (int)MangosTEx.Services.DataTypes.GameObjectType.TEXT)
                       //.Where(o => o.Id > minId)
                       .Take(150)
                       .ToList());
            })
            .ObserveOnDispatcher()
            .Subscribe(result =>
            {
                GameObjects = result;
                UpdateGameObjectLocaleEvent += OnUpdateGameObjectLocale;
                Task.Factory.StartNew(() => GetGameObjectsLocales(result));
            }, OnError);
        }