Beispiel #1
0
 public static void Init()
 {
     JMMUser.Populate(a => a.JMMUserID);
     CloudAccount.Populate(a => a.CloudID);
     ImportFolder.Populate(a => a.ImportFolderID);
     AniDB_Anime.Populate(a => a.AniDB_AnimeID);
     AniDB_Episode.Populate(a => a.AniDB_EpisodeID);
     AniDB_File.Populate(a => a.AniDB_FileID);
     AniDB_Anime_Title.Populate(a => a.AniDB_Anime_TitleID);
     AniDB_Anime_Tag.Populate(a => a.AniDB_Anime_TagID);
     AniDB_Tag.Populate(a => a.AniDB_TagID);
     CustomTag.Populate(a => a.CustomTagID);
     CrossRef_CustomTag.Populate(a => a.CrossRef_CustomTagID);
     CrossRef_File_Episode.Populate(a => a.CrossRef_File_EpisodeID);
     VideoLocalPlace.Populate(a => a.VideoLocal_Place_ID);
     VideoLocal.Populate(a => a.VideoLocalID);
     VideoLocalUser.Populate(a => a.VideoLocal_UserID);
     GroupFilter.Populate(a => a.GroupFilterID);
     AnimeEpisode.Populate(a => a.AnimeEpisodeID);
     AnimeEpisode_User.Populate(a => a.AnimeEpisode_UserID);
     AnimeSeries.Populate(a => a.AnimeSeriesID);
     AnimeSeries_User.Populate(a => a.AnimeSeries_UserID);
     AnimeGroup.Populate(a => a.AnimeGroupID);
     AnimeGroup_User.Populate(a => a.AnimeGroup_UserID);
     GroupFilter.PostProcess();
     CleanUpMemory();
 }
 public void Save(AnimeSeries_User obj)
 {
     lock (obj)
     {
         UpdatePlexKodiContracts(obj);
         AnimeSeries_User old;
         using (var session = JMMService.SessionFactory.OpenSession())
         {
             old = session.Get <AnimeSeries_User>(obj.AnimeSeries_UserID);
         }
         using (var session = JMMService.SessionFactory.OpenSession())
         {
             HashSet <GroupFilterConditionType> types = AnimeSeries_User.GetConditionTypesChanged(old, obj);
             // populate the database
             using (var transaction = session.BeginTransaction())
             {
                 session.SaveOrUpdate(obj);
                 transaction.Commit();
             }
             Cache.Update(obj);
             if (!Changes.ContainsKey(obj.JMMUserID))
             {
                 Changes[obj.JMMUserID] = new ChangeTracker <int>();
             }
             Changes[obj.JMMUserID].AddOrUpdate(obj.AnimeSeriesID);
             obj.UpdateGroupFilter(types);
         }
     }
     //logger.Trace("Updating group stats by series from AnimeSeries_UserRepository.Save: {0}", obj.AnimeSeriesID);
     //StatsCache.Instance.UpdateUsingSeries(obj.AnimeSeriesID);
 }
Beispiel #3
0
        public static void Init()
        {
            JMMUser.Populate();
            CloudAccount.Populate();
            ImportFolder.Populate();
            AniDB_Anime.Populate();
            AniDB_Episode.Populate();
            AniDB_File.Populate();
            AniDB_Anime_Title.Populate();
            AniDB_Anime_Tag.Populate();
            AniDB_Tag.Populate();
            CustomTag.Populate();
            CrossRef_CustomTag.Populate();
            CrossRef_File_Episode.Populate();
            VideoLocalPlace.Populate();
            VideoLocal.Populate();
            VideoLocalUser.Populate();
            GroupFilter.Populate();
            AnimeEpisode.Populate();
            AnimeEpisode_User.Populate();
            AnimeSeries.Populate();
            AnimeSeries_User.Populate();
            AnimeGroup.Populate();
            AnimeGroup_User.Populate();

            // Update Contracts if necessary
            try
            {
                JMMUser.RegenerateDb();
                CloudAccount.RegenerateDb();
                ImportFolder.RegenerateDb();
                AniDB_Anime.RegenerateDb();
                AniDB_Episode.RegenerateDb();
                AniDB_File.RegenerateDb();
                AniDB_Anime_Title.RegenerateDb();
                AniDB_Anime_Tag.RegenerateDb();
                AniDB_Tag.RegenerateDb();
                CustomTag.RegenerateDb();
                CrossRef_CustomTag.RegenerateDb();
                CrossRef_File_Episode.RegenerateDb();
                VideoLocalPlace.RegenerateDb();
                VideoLocal.RegenerateDb();
                VideoLocalUser.RegenerateDb();
                AnimeEpisode.RegenerateDb();
                AnimeEpisode_User.RegenerateDb();
                AnimeSeries.RegenerateDb();
                AnimeSeries_User.RegenerateDb();
                AnimeGroup.RegenerateDb();
                AnimeGroup_User.RegenerateDb();

                GroupFilter.RegenerateDb();
                GroupFilter.PostProcess();
            }
            catch (Exception e)
            {
                LogManager.GetCurrentClassLogger().Error(e, "There was an error starting the Database Factory");
            }
            CleanUpMemory();
        }
        public AnimeSeries_User GetByUserAndSeriesID(ISession session, int userid, int seriesid)
        {
            AnimeSeries_User cr = session
                                  .CreateCriteria(typeof(AnimeSeries_User))
                                  .Add(Restrictions.Eq("JMMUserID", userid))
                                  .Add(Restrictions.Eq("AnimeSeriesID", seriesid))
                                  .UniqueResult <AnimeSeries_User>();

            return(cr);
        }
Beispiel #5
0
 public static void CleanUpMemory()
 {
     AniDB_Anime.GetAll().ForEach(a => a.CollectContractMemory());
     VideoLocal.GetAll().ForEach(a => a.CollectContractMemory());
     AnimeEpisode.GetAll().ForEach(a => a.CollectContractMemory());
     AnimeEpisode_User.GetAll().ForEach(a => a.CollectContractMemory());
     AnimeSeries.GetAll().ForEach(a => a.CollectContractMemory());
     AnimeSeries_User.GetAll().ForEach(a => a.CollectContractMemory());
     AnimeGroup.GetAll().ForEach(a => a.CollectContractMemory());
     AnimeGroup_User.GetAll().ForEach(a => a.CollectContractMemory());
     GC.Collect();
 }
Beispiel #6
0
        public static void Init()
        {
            JMMUser.Populate();
            CloudAccount.Populate();
            ImportFolder.Populate();
            AniDB_Anime.Populate();
            AniDB_Episode.Populate();
            AniDB_File.Populate();
            AniDB_Anime_Title.Populate();
            AniDB_Anime_Tag.Populate();
            AniDB_Tag.Populate();
            CustomTag.Populate();
            CrossRef_CustomTag.Populate();
            CrossRef_File_Episode.Populate();
            VideoLocalPlace.Populate();
            VideoLocal.Populate();
            VideoLocalUser.Populate();
            GroupFilter.Populate();
            AnimeEpisode.Populate();
            AnimeEpisode_User.Populate();
            AnimeSeries.Populate();
            AnimeSeries_User.Populate();
            AnimeGroup.Populate();
            AnimeGroup_User.Populate();

            // Update Contracts if necessary
            JMMUser.RegenerateDb();
            CloudAccount.RegenerateDb();
            ImportFolder.RegenerateDb();
            AniDB_Anime.RegenerateDb();
            AniDB_Episode.RegenerateDb();
            AniDB_File.RegenerateDb();
            AniDB_Anime_Title.RegenerateDb();
            AniDB_Anime_Tag.RegenerateDb();
            AniDB_Tag.RegenerateDb();
            CustomTag.RegenerateDb();
            CrossRef_CustomTag.RegenerateDb();
            CrossRef_File_Episode.RegenerateDb();
            VideoLocalPlace.RegenerateDb();
            VideoLocal.RegenerateDb();
            VideoLocalUser.RegenerateDb();
            AnimeEpisode.RegenerateDb();
            AnimeEpisode_User.RegenerateDb();
            AnimeSeries.RegenerateDb();
            AnimeSeries_User.RegenerateDb();
            AnimeGroup.RegenerateDb();
            AnimeGroup_User.RegenerateDb();

            GroupFilter.RegenerateDb();
            GroupFilter.PostProcess();
            CleanUpMemory();
        }
Beispiel #7
0
        public static void CleanUpMemory()
        {
            AniDB_Anime.GetAll().ForEach(a => a.CollectContractMemory());
            VideoLocal.GetAll().ForEach(a => a.CollectContractMemory());
            AnimeEpisode_User.GetAll().ForEach(a => a.CollectContractMemory());
            AnimeSeries.GetAll().ForEach(a => a.CollectContractMemory());
            AnimeSeries_User.GetAll().ForEach(a => a.CollectContractMemory());
            AnimeGroup.GetAll().ForEach(a => a.CollectContractMemory());
            AnimeGroup_User.GetAll().ForEach(a => a.CollectContractMemory());

            GCSettings.LargeObjectHeapCompactionMode = GCLargeObjectHeapCompactionMode.CompactOnce;
            GC.Collect();
        }
 private void UpdatePlexKodiContracts(AnimeSeries_User ugrp)
 {
     using (var session = JMMService.SessionFactory.OpenSession())
     {
         AnimeSeriesRepository repo = new AnimeSeriesRepository();
         AnimeSeries           ser  = repo.GetByID(ugrp.AnimeSeriesID);
         Contract_AnimeSeries  con  = ser?.GetUserContract(ugrp.JMMUserID);
         if (con == null)
         {
             return;
         }
         ugrp.PlexContract = Helper.GenerateFromSeries(con, ser, ser.GetAnime(session), ugrp.JMMUserID);
     }
 }
Beispiel #9
0
 public static CL_AnimeSeries_User ToClient(this AnimeSeries_User s)
 {
     return(new CL_AnimeSeries_User
     {
         AnimeSeries_UserID = s.AnimeSeries_UserID,
         JMMUserID = s.JMMUserID,
         AnimeSeriesID = s.AnimeSeriesID,
         UnwatchedEpisodeCount = s.UnwatchedEpisodeCount,
         WatchedEpisodeCount = s.WatchedEpisodeCount,
         WatchedDate = s.WatchedDate,
         PlayedCount = s.PlayedCount,
         WatchedCount = s.WatchedCount,
         StoppedCount = s.StoppedCount
     });
 }
        public void Save(AnimeSeries_User obj)
        {
            using (var session = JMMService.SessionFactory.OpenSession())
            {
                // populate the database
                using (var transaction = session.BeginTransaction())
                {
                    session.SaveOrUpdate(obj);
                    transaction.Commit();
                }
            }

            //logger.Trace("Updating group stats by series from AnimeSeries_UserRepository.Save: {0}", obj.AnimeSeriesID);
            //StatsCache.Instance.UpdateUsingSeries(obj.AnimeSeriesID);
        }
 public void Delete(int id)
 {
     using (var session = JMMService.SessionFactory.OpenSession())
     {
         // populate the database
         using (var transaction = session.BeginTransaction())
         {
             AnimeSeries_User cr = GetByID(id);
             if (cr != null)
             {
                 Cache.Remove(cr);
                 if (!Changes.ContainsKey(cr.JMMUserID))
                 {
                     Changes[cr.JMMUserID] = new ChangeTracker <int>();
                 }
                 Changes[cr.JMMUserID].Remove(cr.AnimeSeriesID);
                 session.Delete(cr);
                 transaction.Commit();
                 cr.DeleteFromFilters();
             }
         }
     }
 }
        public void Delete(int id)
        {
            AnimeSeries_User cr = null;

            using (var session = JMMService.SessionFactory.OpenSession())
            {
                // populate the database
                using (var transaction = session.BeginTransaction())
                {
                    cr = GetByID(id);
                    if (cr != null)
                    {
                        session.Delete(cr);
                        transaction.Commit();
                    }
                }
            }

            //if (cr != null)
            //{
            //	logger.Trace("Updating group stats by series from AnimeSeries_UserRepository.Delete: {0}", cr.AnimeSeriesID);
            //	StatsCache.Instance.UpdateUsingSeries(cr.AnimeSeriesID);
            //}
        }