예제 #1
0
        public void SerializeTheListener()
        {
            var original = new SqlListener();

            original.MessagePrefix     = "MP";
            original.Column            = "C";
            original.Database          = "D";
            original.Interval          = 100;
            original.Password          = "******";
            original.Server            = "S";
            original.StartAtEnd        = true;
            original.Table             = "T";
            original.User              = "******";
            original.WinAuthentication = true;

            var xs = new XmlSerializer(original.GetType());
            var sb = new StringBuilder();
            var sw = new StringWriter(sb);

            xs.Serialize(sw, original);

            var sr = new StringReader(sb.ToString());

            var copy = (SqlListener)xs.Deserialize(sr);

            Assert.AreEqual(original.MessagePrefix, copy.MessagePrefix);
            Assert.AreEqual(original.Column, copy.Column);
            Assert.AreEqual(original.Database, copy.Database);
            Assert.AreEqual(original.Interval, copy.Interval);
            Assert.AreEqual(original.Password, copy.Password);
            Assert.AreEqual(original.Server, copy.Server);
            Assert.AreEqual(original.StartAtEnd, copy.StartAtEnd);
            Assert.AreEqual(original.Table, copy.Table);
            Assert.AreEqual(original.User, copy.User);
            Assert.AreEqual(original.WinAuthentication, copy.WinAuthentication);

            original.Dispose();
            copy.Dispose();
        }
예제 #2
0
        public void Generate(DataModel dataModel, SqlListener sqlListener = null)
        {
            // begin our transaction
            // sb.AppendLine("SET autocommit=0;");

            // set to no-op if not set.
            if (sqlListener == null)
            {
                sqlListener = (sql) => { };
            }

            // Create teams first
            {
                var sb = new StringBuilder();
                sb.AppendLine().AppendLine("/* Teams */");
                var teamInserts = dataModel.Teams.Select(t => this.GetTeamInsert(t));
                sb.Append(string.Join("\n", teamInserts));
                sqlListener(sb.ToString());
            }

            // playerssss
            {
                var sb = new StringBuilder();
                sb.Append("\n\n\n/* Players */");
                var players = dataModel.Players.Select(p => this.GetPlayerInsert(p));
                sb.Append(string.Join("\n", players));
                sqlListener(sb.ToString());
            }

            // Years
            {
                var sb = new StringBuilder();
                sb.Append("\n\n\n/* years */");
                var years = dataModel.Years.Select(y => this.GetYearInsert(y));
                sb.Append(string.Join("\n", years));
                sqlListener(sb.ToString());
            }

            // Player data
            {
                var pyds = dataModel.YearDatas.Select(yd => this.GetYearDataInsert(yd));
                ChunkInsertsAndNotify("/* Player year data */", pyds, sqlListener);
            }

            // Courses
            {
                var sb = new StringBuilder();
                sb.AppendLine().AppendLine().AppendLine("/* Courses */");
                var courses = dataModel.Courses.Select(c => this.GetCoursesInsert(c));
                sb.Append(string.Join("\n", courses));
                sqlListener(sb.ToString());
            }

            // Weeks
            {
                var sb = new StringBuilder();
                sb.AppendLine().AppendLine().AppendLine("/* Weeks */");
                var weeks = dataModel.Weeks.Select(p => this.GetWeekInsert(p));
                sb.Append(string.Join("\n", weeks));
                sqlListener(sb.ToString());
            }

            // Team year datas
            {
                var sb = new StringBuilder();
                sb.AppendLine().AppendLine().AppendLine("/* Team year datas */");
                var teamYearData = dataModel.TeamYearData.Select(p => this.GetTeamYearDataInsert(p));
                sb.Append(string.Join("\n", teamYearData));
                sqlListener(sb.ToString());
            }

            // Team Matchup
            {
                var sb = new StringBuilder();
                sb.AppendLine().AppendLine().AppendLine("/* team matchups */");
                var teamMatchups = dataModel.TeamMatchup.Select(tm => this.GetTeamMatchupInsert(tm));
                sb.Append(string.Join("\n", teamMatchups));
                sqlListener(sb.ToString());
            }

            // Team Matchup to Team -- This is one is special cause we don't have an entity for it!
            {
                var sb = new StringBuilder();
                sb.AppendLine().AppendLine().AppendLine("/* team matchup to team */");
                var teamMatchupsToTeam = dataModel.TeamMatchup.Select(tm => this.GetTeamMatchupToTeamInsert(tm));
                sb.Append(string.Join("\n", teamMatchupsToTeam));
                sqlListener(sb.ToString());
            }

            // Matchup
            {
                var sb = new StringBuilder();
                sb.AppendLine().AppendLine().AppendLine("/* matchup */");
                var matchUps = dataModel.MatchUp.Select(m => this.GetMatchupInsert(m));
                sb.AppendLine(string.Join("\n", matchUps));
                sqlListener(sb.ToString());
            }

            // MatchupToPlayer
            {
                var matchUpToPlayers = dataModel.MatchUp.Select(m => this.GetMatchupToPlayerInsert(m));
                ChunkInsertsAndNotify("/* matchup to player */", matchUpToPlayers, sqlListener);
            }

            // results
            {
                var results = dataModel.Results.Select(m => this.GetResultsInsert(m));
                ChunkInsertsAndNotify("/* results! */", results, sqlListener);
            }

            // Leaderboard
            {
                var sb = new StringBuilder();
                sb.AppendLine().AppendLine().AppendLine("/* leaderboardddsss */");
                var lbs = dataModel.LeaderBoards.Select(l => this.GetLeaderBoardInsert(l));
                sb.AppendLine(string.Join("\n", lbs));
                sqlListener(sb.ToString());
            }

            // Leaderboard data
            {
                var lbData = dataModel.LeaderBoardDatas.Select(l => this.GetLeaderBoardDataInsert(l));
                ChunkInsertsAndNotify("/* lb data */", lbData, sqlListener);
            }

            // data migrations
            {
                var sb = new StringBuilder();
                sb.AppendLine().AppendLine().AppendLine("/* data migration data */");
                var dmData = dataModel.DataMigrations.Select(l => this.GetDataMigrationInsert(l));
                sb.AppendLine(string.Join("\n", dmData));
                sqlListener(sb.ToString());
            }
        }
예제 #3
0
        private void ChunkInsertsAndNotify(string header, IEnumerable <string> inserts, SqlListener sqlListener)
        {
            var sb = new StringBuilder();

            sb.AppendLine("/* lb data */");

            int i = 0;
            var groupedInserts = inserts.GroupBy(x => i++ / 50).Select(x => x.AsEnumerable());

            foreach (var e in groupedInserts)
            {
                sb.AppendLine(string.Join("\n", e));
                sqlListener(sb.ToString());
                sb.Clear();
            }
        }