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(); }
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()); } }
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(); } }