public TVTNews FindNewsMatchWithV2(TVTNews other) { var allNews = LeadingDatabase.GetAllNews(); var results1 = allNews.Where(x => x.TitleDE == other.TitleDE); if (results1.Count() == 1) { return(results1.First()); } else { var results2 = allNews.Where(new Func <TVTNews, bool>(x => { if (x.Genre == other.Genre && x.Quality == other.Quality && x.NewsType == other.NewsType && x.Price == other.Price) { if (x.NewsType == TVTNewsType.FollowingNews && !string.IsNullOrEmpty(x.NewsThreadId) && !string.IsNullOrEmpty(other.NewsThreadId)) { if (x.NewsThreadInitial != null && other.NewsThreadInitial != null) { if (x.NewsThreadInitial.TitleDE == other.NewsThreadInitial.TitleDE) { return(true); } } else { return(true); } } else { return(true); } } return(false); })); if (results2.Count() == 0) { System.Diagnostics.Trace.WriteLine("Not found: " + other.TitleDE); } else if (results2.Count() == 1) { return(results2.First()); } else { System.Diagnostics.Trace.WriteLine("Found more then one: " + other.TitleDE); } } return(null); }
public void MergeNewsData(TVTNews target, TVTNews leading, bool mergeNoEffects = false) { var type = typeof(TVTNews); foreach (var property in type.GetProperties()) { if (mergeNoEffects && property.Name == "Effects") { //Nichts machen } else { if (property.Name != "Id") { if (property.CanWrite && property.CanRead) { property.SetValue(target, property.GetValue(leading, null), null); } } } } }
public void AddNews(TVTNews news) { NewsData.Add(news); }
public static void Convert(List <NewsOldV2> newsOldV2, ITVTDatabase database, TVTDataRoot dataRoot) { foreach (var newsSrc in newsOldV2) { var news = new TVTNews(); news.DataRoot = dataRoot; ConvertCommonMinimal(newsSrc, news, database); if (newsSrc.parentID == 0) { news.NewsType = TVTNewsType.InitialNews; news.NewsThreadId = newsSrc.id.ToString(); news.Tag = -1; } else { news.NewsType = TVTNewsType.FollowingNews; news.NewsThreadId = newsSrc.parentID.ToString(); news.Tag = newsSrc.episode; } //PossibleFollower - erst später ermitteln; news.Genre = (TVTNewsGenre)newsSrc.genre; news.AvailableAfterDays = -1; news.YearRangeFrom = -1; news.YearRangeTo = -1; news.MinHoursAfterPredecessor = -1; news.TimeRangeFrom = -1; news.TimeRangeTo = -1; news.Price = ConvertOldToNewValue(newsSrc.price); news.Quality = ConvertOldToNewValue(newsSrc.topicality); news.Resource1Type = null; news.Resource2Type = null; news.Resource3Type = null; news.Resource4Type = null; database.AddNews(news); } var allNews = database.GetAllNews(); List <string> threadsDone = new List <string>(); //Episoden-ID fixen foreach (var news in allNews) { if (!threadsDone.Contains(news.NewsThreadId)) { var newsThread = allNews.Where(x => x.NewsThreadId == news.NewsThreadId); var start = newsThread.FirstOrDefault(x => (int)x.Tag == -1); start.Tag = 0; var rest = newsThread.ToList(); rest.Remove(start); var episode = 1; foreach (var restNews in rest.OrderBy(x => x.Tag).ToList()) { restNews.Tag = episode; episode++; } threadsDone.Add(news.NewsThreadId); } } foreach (var news in allNews) { var episode = (int)news.Tag; TVTNews follower = allNews.FirstOrDefault(x => x.NewsThreadId == news.NewsThreadId && (int)x.Tag == episode + 1); if (follower != null) { follower.NewsType = TVTNewsType.FollowingNews; news.Effects.Add(new TVTNewsEffect(TVTNewsEffectType.TriggerNews, follower.Id.ToString())); } else { if (news.NewsThreadId == news.OldId) { news.NewsType = TVTNewsType.InitialNews; } else { news.NewsType = TVTNewsType.FollowingNews; } } } foreach (var news in allNews) { //if ( news.NewsType == TVTNewsType.SingleNews ) // news.NewsThreadId = null; //else //{ TVTNews thread_owner = allNews.FirstOrDefault(x => x.OldId == news.NewsThreadId); news.NewsThreadId = thread_owner.Id.ToString(); //} } }
public void B_ReadXMLV2AndMerge() { System.Diagnostics.Trace.WriteLine(Directory.GetCurrentDirectory()); Assert.IsTrue(File.Exists("database.xml")); var databaseV2 = new TVTDatabase(); databaseV2.Initialize(); var persister = new XmlPersisterV2(); persister.LoadXML("database.xml", databaseV2, TVTDataRoot.V2InUse); var sqlDB = new TVTDatabase(); sqlDB.Initialize(); sqlDB.Clear(); using (var connection = TVTSQLSession.GetSessionNewDB()) { string myConnectionString = "SERVER=localhost;" + "DATABASE=tvtower_new;" + "UID=TVTowerUser;" + "PASSWORD=123;"; var mvSQLDatabase = new TVTSQLDatabase(myConnectionString); mvSQLDatabase.FillTVTDatabase(sqlDB); } var merging = new DatabaseMerging(sqlDB); { foreach (var currMovie in databaseV2.GetAllProgrammes(true, true)) { var found = merging.FindProgrammeMatch(currMovie); if (found != null) { merging.MergeProgrammeData(found, currMovie, true); found.DataRoot = TVTDataRoot.V2InUse; found.IsChanged = true; foreach (var member in found.Staff) { if (member.Person != null) { member.Person.DataRoot = TVTDataRoot.V2InUse; member.Person.IsChanged = true; } } } else { var newProgramme = new TVTProgramme(); newProgramme.GenerateGuid(); merging.MergeProgrammeData(newProgramme, currMovie); newProgramme.DataRoot = TVTDataRoot.V2InUse; newProgramme.IsNew = true; newProgramme.IsChanged = true; foreach (var member in newProgramme.Staff) { member.Person.DataRoot = TVTDataRoot.V2InUse; member.Person.IsChanged = true; } sqlDB.AddProgramme(newProgramme); } } } { foreach (var currNews in databaseV2.GetAllNews()) { var found = merging.FindNewsMatchWithV2(currNews); if (found != null) { merging.MergeNewsData(found, currNews, true); found.DataRoot = TVTDataRoot.V2InUse; found.IsChanged = true; } else { var newNews = new TVTNews(); newNews.GenerateGuid(); merging.CopyPropertyValues <TVTNews>(newNews, currNews); newNews.DataRoot = TVTDataRoot.V2InUse; newNews.IsNew = true; newNews.IsChanged = true; sqlDB.AddNews(newNews); } } } { foreach (var currAd in databaseV2.GetAllAdvertisings()) { var found = merging.FindAdMatchWithV2(currAd); if (found != null) { merging.CopyPropertyValues <TVTAdvertising>(found, currAd); found.DataRoot = TVTDataRoot.V2InUse; found.IsChanged = true; } else { var newAd = new TVTAdvertising(); newAd.GenerateGuid(); merging.CopyPropertyValues <TVTAdvertising>(newAd, currAd); newAd.DataRoot = TVTDataRoot.V2InUse; newAd.IsNew = true; newAd.IsChanged = true; sqlDB.AddAdvertising(newAd); } } } using (var connection = TVTSQLSession.GetSessionNewDB()) { string myConnectionString = "SERVER=localhost;" + "DATABASE=tvtower_new;" + "UID=TVTowerUser;" + "PASSWORD=123;"; var mvSQLDatabase = new TVTSQLDatabase(myConnectionString); mvSQLDatabase.WriteChangesToDatabase(sqlDB); } }