Example #1
0
        public void CleanupDuplication()
        {
            //var db = _voleur.Db;
            var db = new NewsObjectContext(ConfigurationManager.ConnectionStrings["EnewsSqlServerRemote"].ConnectionString);



            var entries = db.Entries.ToList();
            var dist = entries.GroupBy(g => g.Title);
            var keep = new List<Entry>();
            foreach (var distitem in dist)
            {
                var items = distitem.ToList();
                var val = items.FirstOrDefault(i => !string.IsNullOrEmpty(i.Content));
                var keepme = val ?? items[0];
                keep.Add(keepme);
                entries.Remove(keepme);
            }

            foreach (var entry in entries)
            {
                if (entry.EntrySource != null)
                    db.EntrySources.DeleteObject(entry.EntrySource);
                db.Entries.DeleteObject(entry);
            }

            db.SaveChanges();
        }
Example #2
0
        public void FixGroupEntries()
        {
            var db = new NewsObjectContext();
            var g1 = db.Groups.SingleOrDefault(g => g.Name == "YoungPeople_Love");
            var g2 = db.Groups.SingleOrDefault(g => g.Name == "YoungPeople & Love");
            foreach (var entry in g2.Entries.ToList())
            {
                entry.Group = g1;
            }

            db.Groups.DeleteObject(g2);
            db.SaveChanges();
        }
Example #3
0
        public void CleanupDuplicatedTitles()
        {
            var db = new NewsObjectContext();
            var count = db.Entries.Count();


            var query = db.Entries.ToList();

            var removal = new List<Entry>();
            for (int i = query.Count - 1; i >= 0; i--)
            {
                var item = query[i];
                var exist = query.Exists(q => q != item && q.Title == item.Title);
                if (exist)
                    removal.Add(item);
            }

            foreach (var entry in removal)
            {
                db.EntrySources.DeleteObject(entry.EntrySource);
                db.Entries.DeleteObject(entry);
            }

            db.SaveChanges();
        }
Example #4
0
        public void SyncData()
        {
            var remote = new NewsObjectContext(ConfigurationManager.ConnectionStrings["EnewsSqlServerRemote"].ConnectionString);
            var remoteGroups = remote.Groups.ToDictionary(a => a.Id, b => b);
            var entrySource = remote.Sources.ToDictionary(a => a.Id, b => b);

            var entries1 = remote.Entries.Select(e => new
                {
                    e.Id,
                    e.Title,
                    Content = ""
                }).ToList();

            var local = new NewsObjectContext(ConfigurationManager.ConnectionStrings["EnewsSqlServerLocal"].ConnectionString);

            var entries2 = local.Entries.Select(e => e).ToList();
            var query = (from e in entries2
                         where !entries1.Exists(e1 => e1.Title == e.Title)
                         select e).ToList();

            for (int i = 0; i < query.Count; i++)
            {
                var entry = query[i];
                if (i % 40 == 0)
                {
                    remote.SaveChanges();
                    Debug.WriteLine(string.Format(">> Save {0}/{1}",i,query.Count));
                }

                if (entry.Group == null)
                    continue;
                if (!remoteGroups.ContainsKey(entry.Group.Id))
                    //throw new Exception("Group not exist");
                    continue;

                if (!entrySource.ContainsKey(entry.EntrySource.Source.Id))
                    throw new Exception("EntrySource not exist");
                // clone
                var newEntry = new Entry
                    {
                        Content = entry.Content,
                        Date = entry.Date,
                        Description = entry.Description,
                        Title = entry.Title,
                        ImageUrl = entry.ImageUrl,
                        ViewType = entry.ViewType,
                        ViewIndex = entry.ViewIndex,
                        Group = remoteGroups[entry.Group.Id],
                        Published = entry.Published,
                        EntrySource =
                            new EntrySource
                            {
                                Url = entry.EntrySource.Url,
                                Source = entrySource[entry.EntrySource.Source.Id]
                            }
                    };
                remote.Entries.AddObject(newEntry);
            }
            remote.SaveChanges();

            // Empty entry
            var entries3 = (from e in remote.Entries
                            where e.Content == null
                            select
                               e).ToList();

            foreach (var entry in entries3)
            {
                var tmp = entries2.SingleOrDefault(e => e.Title == entry.Title);
                if (tmp == null)
                    continue;
                entry.Content = tmp.Content;
            }

            remote.SaveChanges();
        }
Example #5
0
        public void CheckNullGroupEntries()
        {
            var db = new NewsObjectContext();
            var entries = db.Entries.Where(en => en.Group == null).ToList();

            foreach (var entry in entries)
            {
                db.EntrySources.DeleteObject(entry.EntrySource);
                db.Entries.DeleteObject(entry);
            }
            db.SaveChanges();
        }