コード例 #1
0
        protected override void RunInternal()
        {
            Uri universeUri   = new Uri(_client.BaseUri, "/api/universe.xml");
            Uri alliancesUri  = new Uri(_client.BaseUri, "/api/alliances.xml");
            Uri playersUri    = new Uri(_client.BaseUri, "/api/players.xml");
            Uri serverDataUri = new Uri(_client.BaseUri, "/api/serverData.xml");

            FileInfo universeFile   = new FileInfo(Path.Combine(_baseDir.FullName, _client.BaseUri.Host + "-universe.xml"));
            FileInfo alliancesFile  = new FileInfo(Path.Combine(_baseDir.FullName, _client.BaseUri.Host + "-alliances.xml"));
            FileInfo playersFile    = new FileInfo(Path.Combine(_baseDir.FullName, _client.BaseUri.Host + "-players.xml"));
            FileInfo serverDataFile = new FileInfo(Path.Combine(_baseDir.FullName, _client.BaseUri.Host + "-serverData.xml"));

            if (NeedUpdate(universeUri, universeFile, "universe").Sync())
            {
                Logger.Instance.Log(LogLevel.Info, "ApiImporterJob: Updating universe from API");

                Update(universeUri, universeFile).Sync();

                Universe model = XmlModelSerializer.Deserialize <Universe>(universeFile);
                ProcessData(model);
            }

            if (NeedUpdate(alliancesUri, alliancesFile, "alliances").Sync())
            {
                Logger.Instance.Log(LogLevel.Info, "ApiImporterJob: Updating alliances from API");

                Update(alliancesUri, alliancesFile).Sync();

                AlliancesContainer model = XmlModelSerializer.Deserialize <AlliancesContainer>(alliancesFile);
                ProcessData(model);
            }

            if (NeedUpdate(playersUri, playersFile, "players").Sync())
            {
                Logger.Instance.Log(LogLevel.Info, "ApiImporterJob: Updating players from API");

                Update(playersUri, playersFile).Sync();

                PlayersContainer model = XmlModelSerializer.Deserialize <PlayersContainer>(playersFile);
                ProcessData(model);
            }

            if (NeedUpdate(serverDataUri, serverDataFile, "serverData").Sync())
            {
                Logger.Instance.Log(LogLevel.Info, "ApiImporterJob: Updating serverData from API");

                Update(serverDataUri, serverDataFile).Sync();

                ServerData model = XmlModelSerializer.Deserialize <ServerData>(serverDataFile);
                ProcessData(model);
            }
        }
コード例 #2
0
        private void ProcessData(PlayersContainer model)
        {
            using (BotDb db = new BotDb())
            {
                Dictionary <int, Db.Player> allPlayers = db.Players.ToDictionary(s => s.PlayerId);
                List <Db.Player>            newPlayers = new List <Db.Player>();

                for (int i = 0; i < model.Players.Length; i++)
                {
                    var       player = model.Players[i];
                    Db.Player dbPlayer;
                    if (!allPlayers.TryGetValue(player.Id, out dbPlayer))
                    {
                        dbPlayer = new Db.Player
                        {
                            PlayerId = player.Id
                        };

                        newPlayers.Add(dbPlayer);
                        allPlayers[player.Id] = dbPlayer;
                    }

                    dbPlayer.Name   = player.Name;
                    dbPlayer.Status = ParseStatus(player.Status);

                    if (i % 250 == 0)
                    {
                        db.Players.AddRange(newPlayers);

                        db.SaveChanges();

                        newPlayers.Clear();
                    }
                }

                db.Players.AddRange(newPlayers);

                db.SaveChanges();
            }
        }
コード例 #3
0
        void ReleaseDesignerOutlets()
        {
            if (CoachName != null)
            {
                CoachName.Dispose();
                CoachName = null;
            }

            if (MatchesContainer != null)
            {
                MatchesContainer.Dispose();
                MatchesContainer = null;
            }

            if (PlayersContainer != null)
            {
                PlayersContainer.Dispose();
                PlayersContainer = null;
            }

            if (StadiumName != null)
            {
                StadiumName.Dispose();
                StadiumName = null;
            }

            if (TeamImage != null)
            {
                TeamImage.Dispose();
                TeamImage = null;
            }

            if (TeamName != null)
            {
                TeamName.Dispose();
                TeamName = null;
            }
        }