コード例 #1
0
        private DBCriteria <DBMovieInfo> createCriteria(DBNode <DBMovieInfo> node, DBCriteria <DBMovieInfo> .OperatorEnum opEnum, object value)
        {
            DBCriteria <DBMovieInfo> criteria = new DBCriteria <DBMovieInfo>();

            criteria.Field    = node.BasicFilteringField;
            criteria.Relation = node.BasicFilteringRelation;
            criteria.Operator = opEnum;
            criteria.Value    = value;
            return(criteria);
        }
コード例 #2
0
        public void AddCriteria(IGenericFilter criteria)
        {
            DBCriteria <T> newCriteria = (DBCriteria <T>)criteria;

            CriteriaPanel <T> newPanel = new CriteriaPanel <T>();

            listPanel.Controls.Add(newPanel);
            newPanel.DBManager      = DBManager;
            newPanel.Selected      += ItemSelected;
            newPanel.Criteria       = newCriteria;
            itemLookup[newCriteria] = newPanel;
        }
コード例 #3
0
        public static void VerifyFilterMenu()
        {
            DBMenu <DBTrackInfo> menu = mvCentralCore.Settings.FilterMenu;

            if (menu.RootNodes.Count == 0)
            {
                int position = 1;

                DBNode <DBTrackInfo> unwatchedNode = new DBNode <DBTrackInfo>();
                unwatchedNode.Name        = "${UnwatchedmvCentral}";
                unwatchedNode.DynamicNode = false;
                unwatchedNode.Filter      = new DBFilter <DBTrackInfo>();
                DBCriteria <DBTrackInfo> criteria = new DBCriteria <DBTrackInfo>();
                criteria.Field    = DBField.GetFieldByDBName(typeof(DBUserMusicVideoSettings), "watched");
                criteria.Relation = DBRelation.GetRelation(typeof(DBTrackInfo), typeof(DBUserMusicVideoSettings), "");
                criteria.Operator = DBCriteria <DBTrackInfo> .OperatorEnum.EQUAL;
                criteria.Value    = "0";
                unwatchedNode.Filter.Criteria.Add(criteria);
                unwatchedNode.SortPosition = position++;
                unwatchedNode.DBManager    = mvCentralCore.DatabaseManager;
                menu.RootNodes.Add(unwatchedNode);

                DBNode <DBTrackInfo> genreNode = new DBNode <DBTrackInfo>();
                genreNode.DynamicNode         = true;
                genreNode.BasicFilteringField = DBField.GetFieldByDBName(typeof(DBTrackInfo), "genres");
                genreNode.Name         = "${Genre}";
                genreNode.DBManager    = mvCentralCore.DatabaseManager;
                genreNode.SortPosition = position++;
                menu.RootNodes.Add(genreNode);

                DBNode <DBTrackInfo> dateNode = new DBNode <DBTrackInfo>();
                dateNode.DynamicNode         = true;
                dateNode.BasicFilteringField = DBField.GetFieldByDBName(typeof(DBTrackInfo), "date_added");
                dateNode.Name         = "${DateAdded}";
                dateNode.DBManager    = mvCentralCore.DatabaseManager;
                dateNode.SortPosition = position++;
                menu.RootNodes.Add(dateNode);

                menu.Commit();
            }

            foreach (DBNode <DBTrackInfo> currNode in menu.RootNodes)
            {
                currNode.UpdateDynamicNode();
                currNode.Commit();
            }
        }
コード例 #4
0
        public static void VerifyFilterMenu()
        {
            DBMenu<DBTrackInfo> menu = mvCentralCore.Settings.FilterMenu;

            if (menu.RootNodes.Count == 0) {
                int position = 1;

                DBNode<DBTrackInfo> unwatchedNode = new DBNode<DBTrackInfo>();
                unwatchedNode.Name = "${UnwatchedmvCentral}";
                unwatchedNode.DynamicNode = false;
                unwatchedNode.Filter = new DBFilter<DBTrackInfo>();
                DBCriteria<DBTrackInfo> criteria = new DBCriteria<DBTrackInfo>();
                criteria.Field = DBField.GetFieldByDBName(typeof(DBUserMusicVideoSettings), "watched");
                criteria.Relation = DBRelation.GetRelation(typeof(DBTrackInfo), typeof(DBUserMusicVideoSettings), "");
                criteria.Operator = DBCriteria<DBTrackInfo>.OperatorEnum.EQUAL;
                criteria.Value = "0";
                unwatchedNode.Filter.Criteria.Add(criteria);
                unwatchedNode.SortPosition = position++;
                unwatchedNode.DBManager = mvCentralCore.DatabaseManager;
                menu.RootNodes.Add(unwatchedNode);

                DBNode<DBTrackInfo> genreNode = new DBNode<DBTrackInfo>();
                genreNode.DynamicNode = true;
                genreNode.BasicFilteringField = DBField.GetFieldByDBName(typeof(DBTrackInfo), "genres");
                genreNode.Name = "${Genre}";
                genreNode.DBManager = mvCentralCore.DatabaseManager;
                genreNode.SortPosition = position++;
                menu.RootNodes.Add(genreNode);

                DBNode<DBTrackInfo> dateNode = new DBNode<DBTrackInfo>();
                dateNode.DynamicNode = true;
                dateNode.BasicFilteringField = DBField.GetFieldByDBName(typeof(DBTrackInfo), "date_added");
                dateNode.Name = "${DateAdded}";
                dateNode.DBManager = mvCentralCore.DatabaseManager;
                dateNode.SortPosition = position++;
                menu.RootNodes.Add(dateNode);

                menu.Commit();
            }

            foreach (DBNode<DBTrackInfo> currNode in menu.RootNodes)
            {
                currNode.UpdateDynamicNode();
                currNode.Commit();
            }
        }
コード例 #5
0
        public static void VerifyCategoryMenu()
        {
            DBMenu<DBTrackInfo> menu = mvCentralCore.Settings.CategoriesMenu;

            if (menu.RootNodes.Count == 0) {
                int position = 1;

                DBNode<DBTrackInfo> allNode = new DBNode<DBTrackInfo>();
                allNode.Name = "${AllmvCentral}";
                allNode.DynamicNode = false;
                allNode.Filter = new DBFilter<DBTrackInfo>();
                allNode.SortPosition = position++;
                allNode.DBManager = mvCentralCore.DatabaseManager;
                menu.RootNodes.Add(allNode);

                DBNode<DBTrackInfo> unwatchedNode = new DBNode<DBTrackInfo>();
                unwatchedNode.Name = "${UnwatchedMusicVideo}";
                unwatchedNode.DynamicNode = false;
                unwatchedNode.Filter = new DBFilter<DBTrackInfo>();
                DBCriteria<DBTrackInfo> criteria = new DBCriteria<DBTrackInfo>();
                criteria.Field = DBField.GetFieldByDBName(typeof(DBUserMusicVideoSettings), "watched");
                criteria.Relation = DBRelation.GetRelation(typeof(DBTrackInfo), typeof(DBUserMusicVideoSettings), "");
                criteria.Operator = DBCriteria<DBTrackInfo>.OperatorEnum.EQUAL;
                criteria.Value = "0";
                unwatchedNode.Filter.Criteria.Add(criteria);
                unwatchedNode.SortPosition = position++;
                unwatchedNode.DBManager = mvCentralCore.DatabaseManager;
                menu.RootNodes.Add(unwatchedNode);

                DBNode<DBTrackInfo> recentNode = new DBNode<DBTrackInfo>();
                recentNode.Name = "${RecentlyAddedmvCentral}";
                recentNode.DynamicNode = false;
                recentNode.Filter = new DBFilter<DBTrackInfo>();
                recentNode.SortPosition = position++;
                recentNode.DBManager = mvCentralCore.DatabaseManager;

                DBCriteria<DBTrackInfo> recentCriteria = new DBCriteria<DBTrackInfo>();
                recentCriteria.Field = DBField.GetFieldByDBName(typeof(DBTrackInfo), "date_added");
                recentCriteria.Operator = DBCriteria<DBTrackInfo>.OperatorEnum.GREATER_THAN;
                recentCriteria.Value = "-30d";
                recentNode.Filter.Criteria.Add(recentCriteria);

                DBMusicVideoNodeSettings additionalSettings = new DBMusicVideoNodeSettings();
                additionalSettings.UseDefaultSorting = false;
            //                additionalSettings.SortField = SortingFields.DateAdded;
            //                additionalSettings.SortDirection = SortingDirections.Descending;
                recentNode.AdditionalSettings = additionalSettings;

                menu.RootNodes.Add(recentNode);

                DBNode<DBTrackInfo> genreNode = new DBNode<DBTrackInfo>();
                genreNode.DynamicNode = true;
                genreNode.BasicFilteringField = DBField.GetFieldByDBName(typeof(DBTrackInfo), "genres");
                genreNode.Name = "${Genres}";
                genreNode.SortPosition = position++;
                genreNode.DBManager = mvCentralCore.DatabaseManager;
                menu.RootNodes.Add(genreNode);

                menu.Commit();
            }

            foreach (DBNode<DBTrackInfo> currNode in menu.RootNodes) {
                currNode.UpdateDynamicNode();
                currNode.Commit();
            }
        }
コード例 #6
0
ファイル: Mentor.cs プロジェクト: brunql/NIRS
 public override ActiveRecord Find(DBCriteria crit)
 {
     throw new NotImplementedException();
 }
コード例 #7
0
        /// <summary>
        /// Add criteria (IMDb ID's) for a movie list to a nodes filter criteria
        /// We don't need to worry about movies that don't exist as they will simply not be visible
        /// </summary>
        /// <param name="name">Name of child node to add filters to</param>
        /// <param name="movieIMDbList">List of IMDb ID's to add </param>
        static void AddMoviesCriteriaToNode(DBNode<DBMovieInfo> node, IEnumerable<string> movieIMDbList)
        {
            if (node == null) return;

            // remove any movies that don't contain IMDb ID's.
            var imdbCriteraToAdd = movieIMDbList.Where(s => !string.IsNullOrEmpty(s)).ToList();

            // clear existing filter
            if (node.HasFilter)
            {
                // do a quick check to see if we need to do anything
                // if the criteria counts matches, determine if the critera values also matches
                if (node.Filter.Criteria.Count == imdbCriteraToAdd.Count)
                {
                    bool requiresUpdate = false;
                    foreach (var criteria in node.Filter.Criteria)
                    {
                        // no point doing any further checks
                        if (requiresUpdate)
                            continue;

                        // check if the current critera list already has the criteria in the filter
                        requiresUpdate = !imdbCriteraToAdd.Contains(criteria.Value.ToString());
                    }

                    // nothing to do with node, it's already up to date
                    if (!requiresUpdate)
                        return;
                }

                node.Filter.WhiteList.Clear();
                node.Filter.BlackList.Clear();
                node.Filter.Delete();
            }

            // create a new filter, such that any criteria will match
            node.Filter = new DBFilter<DBMovieInfo>();
            node.Filter.CriteriaGrouping = DBFilter<DBMovieInfo>.CriteriaGroupingEnum.ONE;
            node.Filter.Name = string.Format("{0} Filter", node.Name);

            // add criteria for each movie
            foreach (var movieId in imdbCriteraToAdd)
            {
                //TraktLogger.Debug("Adding criteria to the '{0}' node filter, Field = 'imdb_id', Value = '{1}'", node.Name, movieId);

                var criteria = new DBCriteria<DBMovieInfo>();
                criteria.Field = DBField.GetFieldByDBName(typeof(DBMovieInfo), "imdb_id");
                criteria.Operator = DBCriteria<DBMovieInfo>.OperatorEnum.EQUAL;
                criteria.Value = movieId;

                // add the criteria to the filter
                node.Filter.Criteria.Add(criteria);
            }

            if (node.Filter.Criteria.Count == 0)
            {
                TraktLogger.Info("Adding dummy blacklist criteria to the '{0}' node filter.", node.Name);
                AddDummyBlacklistToFilter(node.Filter);
            }

            node.Commit();
        }
コード例 #8
0
        /// <summary>
        /// Adds a movie criteria to a node
        /// </summary>
        /// <param name="node">Node to add movie criteria to</param>
        /// <param name="movieId">IMDb movie ID used for the criteria</param>
        static void AddMovieCriteriaToNode(DBNode<DBMovieInfo> node, string movieId)
        {
            if (node == null || !BasicHandler.IsValidImdb(movieId)) return;

            // check existing filter exists
            if (!node.HasFilter) return;

            // add movie id as a criteria
            var criteria = new DBCriteria<DBMovieInfo>();
            criteria.Field = DBField.GetFieldByDBName(typeof(DBMovieInfo), "imdb_id");
            criteria.Operator = DBCriteria<DBMovieInfo>.OperatorEnum.EQUAL;
            criteria.Value = movieId;

            // add the criteria to the filter
            node.Filter.Criteria.Add(criteria);
            node.Commit();
        }
コード例 #9
0
        /// <summary>
        /// Creates a dummy blacklist list constraint as opposed to a real Blacklist.
        /// A real blacklist can add a huge amount of records to the filters table.
        /// The purpose of the blacklist in this context is to simply ensure that there is 
        /// always at least one criteria added to a filter so that it doesn't show All Movies.
        /// </summary>
        /// <param name="filter">The Filter that requires a dummy blacklist criteria</param>
        static void AddDummyBlacklistToFilter(DBFilter<DBMovieInfo> filter)
        {
            if (filter == null) return;

            // clear any legitimate blacklist if set
            filter.BlackList.Clear();

            // when we're managing a blacklist for a nodes filter
            // we typically need to add a record for each movie in the users database
            // this can result in a large amount of records inserted into the Filters table
            // instead, let's create a dummy criteria and add it the filter e.g. a movie that will never match
            var criteria = new DBCriteria<DBMovieInfo>();
            criteria.Field = DBField.GetFieldByDBName(typeof(DBMovieInfo), "imdb_id");
            criteria.Operator = DBCriteria<DBMovieInfo>.OperatorEnum.EQUAL;
            criteria.Value = "ttDummyBlacklist";

            // add the criteria to the filter
            filter.Criteria.Add(criteria);
        }
コード例 #10
0
ファイル: ActiveRecord.cs プロジェクト: brunql/NIRS
 public abstract ActiveRecord Find(DBCriteria crit);
コード例 #11
0
        public static void VerifyCategoryMenu()
        {
            DBMenu <DBTrackInfo> menu = mvCentralCore.Settings.CategoriesMenu;

            if (menu.RootNodes.Count == 0)
            {
                int position = 1;

                DBNode <DBTrackInfo> allNode = new DBNode <DBTrackInfo>();
                allNode.Name         = "${AllmvCentral}";
                allNode.DynamicNode  = false;
                allNode.Filter       = new DBFilter <DBTrackInfo>();
                allNode.SortPosition = position++;
                allNode.DBManager    = mvCentralCore.DatabaseManager;
                menu.RootNodes.Add(allNode);

                DBNode <DBTrackInfo> unwatchedNode = new DBNode <DBTrackInfo>();
                unwatchedNode.Name        = "${UnwatchedMusicVideo}";
                unwatchedNode.DynamicNode = false;
                unwatchedNode.Filter      = new DBFilter <DBTrackInfo>();
                DBCriteria <DBTrackInfo> criteria = new DBCriteria <DBTrackInfo>();
                criteria.Field    = DBField.GetFieldByDBName(typeof(DBUserMusicVideoSettings), "watched");
                criteria.Relation = DBRelation.GetRelation(typeof(DBTrackInfo), typeof(DBUserMusicVideoSettings), "");
                criteria.Operator = DBCriteria <DBTrackInfo> .OperatorEnum.EQUAL;
                criteria.Value    = "0";
                unwatchedNode.Filter.Criteria.Add(criteria);
                unwatchedNode.SortPosition = position++;
                unwatchedNode.DBManager    = mvCentralCore.DatabaseManager;
                menu.RootNodes.Add(unwatchedNode);


                DBNode <DBTrackInfo> recentNode = new DBNode <DBTrackInfo>();
                recentNode.Name         = "${RecentlyAddedmvCentral}";
                recentNode.DynamicNode  = false;
                recentNode.Filter       = new DBFilter <DBTrackInfo>();
                recentNode.SortPosition = position++;
                recentNode.DBManager    = mvCentralCore.DatabaseManager;

                DBCriteria <DBTrackInfo> recentCriteria = new DBCriteria <DBTrackInfo>();
                recentCriteria.Field    = DBField.GetFieldByDBName(typeof(DBTrackInfo), "date_added");
                recentCriteria.Operator = DBCriteria <DBTrackInfo> .OperatorEnum.GREATER_THAN;
                recentCriteria.Value    = "-30d";
                recentNode.Filter.Criteria.Add(recentCriteria);

                DBMusicVideoNodeSettings additionalSettings = new DBMusicVideoNodeSettings();
                additionalSettings.UseDefaultSorting = false;
//                additionalSettings.SortField = SortingFields.DateAdded;
//                additionalSettings.SortDirection = SortingDirections.Descending;
                recentNode.AdditionalSettings = additionalSettings;

                menu.RootNodes.Add(recentNode);


                DBNode <DBTrackInfo> genreNode = new DBNode <DBTrackInfo>();
                genreNode.DynamicNode         = true;
                genreNode.BasicFilteringField = DBField.GetFieldByDBName(typeof(DBTrackInfo), "genres");
                genreNode.Name         = "${Genres}";
                genreNode.SortPosition = position++;
                genreNode.DBManager    = mvCentralCore.DatabaseManager;
                menu.RootNodes.Add(genreNode);

                menu.Commit();
            }

            foreach (DBNode <DBTrackInfo> currNode in menu.RootNodes)
            {
                currNode.UpdateDynamicNode();
                currNode.Commit();
            }
        }
コード例 #12
0
        private void addCriteriaButton_ButtonClick(object sender, EventArgs e)
        {
            DBCriteria <T> newCriteria = new DBCriteria <T>();

            AddCriteria(newCriteria);
        }
コード例 #13
0
        public static void VerifyMovieManagerFilterMenu()
        {
            DBMenu<DBMovieInfo> menu = MovingPicturesCore.Settings.MovieManagerFilterMenu;

            if (menu.RootNodes.Count == 0) {
                int position = 1;

                DBNode<DBMovieInfo> allNode = new DBNode<DBMovieInfo>();
                allNode.Name = "${AllMovies}";
                allNode.DynamicNode = false;
                allNode.Filter = new DBFilter<DBMovieInfo>();
                allNode.SortPosition = position++;
                allNode.DBManager = MovingPicturesCore.DatabaseManager;
                menu.RootNodes.Add(allNode);

                DBNode<DBMovieInfo> unwatchedNode = new DBNode<DBMovieInfo>();
                unwatchedNode.Name = "${UnwatchedMovies}";
                unwatchedNode.DynamicNode = false;
                unwatchedNode.Filter = new DBFilter<DBMovieInfo>();
                DBCriteria<DBMovieInfo> criteria = new DBCriteria<DBMovieInfo>();
                criteria.Field = DBField.GetFieldByDBName(typeof(DBUserMovieSettings), "watched");
                criteria.Relation = DBRelation.GetRelation(typeof(DBMovieInfo), typeof(DBUserMovieSettings), "");
                criteria.Operator = DBCriteria<DBMovieInfo>.OperatorEnum.EQUAL;
                criteria.Value = "0";
                unwatchedNode.Filter.Criteria.Add(criteria);
                unwatchedNode.SortPosition = position++;
                unwatchedNode.DBManager = MovingPicturesCore.DatabaseManager;
                menu.RootNodes.Add(unwatchedNode);

                DBNode<DBMovieInfo> recentNode = new DBNode<DBMovieInfo>();
                recentNode.Name = "${RecentlyAddedMovies}";
                recentNode.DynamicNode = false;
                recentNode.Filter = new DBFilter<DBMovieInfo>();
                recentNode.SortPosition = position++;
                recentNode.DBManager = MovingPicturesCore.DatabaseManager;

                DBCriteria<DBMovieInfo> recentCriteria = new DBCriteria<DBMovieInfo>();
                recentCriteria.Field = DBField.GetFieldByDBName(typeof(DBMovieInfo), "date_added");
                recentCriteria.Operator = DBCriteria<DBMovieInfo>.OperatorEnum.GREATER_THAN;
                recentCriteria.Value = "-30d";
                recentNode.Filter.Criteria.Add(recentCriteria);

                DBMovieNodeSettings additionalSettings = new DBMovieNodeSettings();
                additionalSettings.UseDefaultSorting = false;
                additionalSettings.SortField = SortingFields.DateAdded;
                additionalSettings.SortDirection = SortingDirections.Descending;
                recentNode.AdditionalSettings = additionalSettings;
                menu.RootNodes.Add(recentNode);

                DBNode<DBMovieInfo> genreNode = new DBNode<DBMovieInfo>();
                genreNode.DynamicNode = true;
                genreNode.BasicFilteringField = DBField.GetFieldByDBName(typeof(DBMovieInfo), "genres");
                genreNode.Name = "${Genres}";
                genreNode.SortPosition = position++;
                genreNode.DBManager = MovingPicturesCore.DatabaseManager;
                menu.RootNodes.Add(genreNode);

                DBNode<DBMovieInfo> certNode = new DBNode<DBMovieInfo>();
                certNode.DynamicNode = true;
                certNode.BasicFilteringField = DBField.GetFieldByDBName(typeof(DBMovieInfo), "certification");
                certNode.Name = "${" + certNode.BasicFilteringField.Name + "}";
                certNode.DBManager = MovingPicturesCore.DatabaseManager;
                certNode.SortPosition = position++;
                menu.RootNodes.Add(certNode);

                DBNode<DBMovieInfo> yearNode = new DBNode<DBMovieInfo>();
                yearNode.DynamicNode = true;
                yearNode.BasicFilteringField = DBField.GetFieldByDBName(typeof(DBMovieInfo), "year");
                yearNode.Name = "${" + yearNode.BasicFilteringField.Name + "}";
                yearNode.SortPosition = position++;
                yearNode.DBManager = MovingPicturesCore.DatabaseManager;
                menu.RootNodes.Add(yearNode);

                DBNode<DBMovieInfo> alphaNode = new DBNode<DBMovieInfo>();
                alphaNode.DynamicNode = true;
                alphaNode.BasicFilteringField = DBField.GetFieldByDBName(typeof(DBMovieInfo), "title");
                alphaNode.Name = "${BeginsWith}";
                alphaNode.DBManager = MovingPicturesCore.DatabaseManager;
                alphaNode.SortPosition = position++;
                menu.RootNodes.Add(alphaNode);

                // maintenance node
                DBNode<DBMovieInfo> maintenanceNode = new DBNode<DBMovieInfo>();
                maintenanceNode.Name = "${Missing}";
                maintenanceNode.DynamicNode = false;
                maintenanceNode.SortPosition = position++;
                maintenanceNode.DBManager = MovingPicturesCore.DatabaseManager;
                menu.RootNodes.Add(maintenanceNode);

                // missing covers node
                DBNode<DBMovieInfo> missingCoversNode = new DBNode<DBMovieInfo>();
                missingCoversNode.Name = "${Cover}";
                missingCoversNode.Parent = maintenanceNode;
                missingCoversNode.DynamicNode = false;
                missingCoversNode.Filter = new DBFilter<DBMovieInfo>();
                missingCoversNode.SortPosition = position++;
                missingCoversNode.DBManager = MovingPicturesCore.DatabaseManager;
                maintenanceNode.Children.Add(missingCoversNode);

                DBCriteria<DBMovieInfo> missingCoversCriteria = new DBCriteria<DBMovieInfo>();
                missingCoversCriteria.Field = DBField.GetFieldByDBName(typeof(DBMovieInfo), "coverfullpath");
                missingCoversCriteria.Operator = DBCriteria<DBMovieInfo>.OperatorEnum.EQUAL;
                missingCoversCriteria.Value = "";
                missingCoversNode.Filter.Criteria.Add(missingCoversCriteria);

                // missing backdrops node
                DBNode<DBMovieInfo> missingBackdropsNode = new DBNode<DBMovieInfo>();
                missingBackdropsNode.Name = "${Backdrop}";
                missingBackdropsNode.Parent = maintenanceNode;
                missingBackdropsNode.DynamicNode = false;
                missingBackdropsNode.Filter = new DBFilter<DBMovieInfo>();
                missingBackdropsNode.SortPosition = position++;
                missingBackdropsNode.DBManager = MovingPicturesCore.DatabaseManager;
                maintenanceNode.Children.Add(missingBackdropsNode);

                DBCriteria<DBMovieInfo> missingBackdropsCriteria = new DBCriteria<DBMovieInfo>();
                missingBackdropsCriteria.Field = DBField.GetFieldByDBName(typeof(DBMovieInfo), "backdropfullpath");
                missingBackdropsCriteria.Operator = DBCriteria<DBMovieInfo>.OperatorEnum.EQUAL;
                missingBackdropsCriteria.Value = "";
                missingBackdropsNode.Filter.Criteria.Add(missingBackdropsCriteria);

                // invalid years, only 1900 -> next year considered valid
                DBNode<DBMovieInfo> invalidYearsNode = new DBNode<DBMovieInfo>();
                invalidYearsNode.Name = "${Year}";
                invalidYearsNode.Parent = maintenanceNode;
                invalidYearsNode.DynamicNode = false;
                invalidYearsNode.Filter = new DBFilter<DBMovieInfo>();
                invalidYearsNode.Filter.CriteriaGrouping = DBFilter<DBMovieInfo>.CriteriaGroupingEnum.ONE;
                invalidYearsNode.SortPosition = position++;
                invalidYearsNode.DBManager = MovingPicturesCore.DatabaseManager;
                maintenanceNode.Children.Add(invalidYearsNode);

                DBCriteria<DBMovieInfo> invalidYearsCriteria = new DBCriteria<DBMovieInfo>();
                invalidYearsCriteria.Field = DBField.GetFieldByDBName(typeof(DBMovieInfo), "year");
                invalidYearsCriteria.Operator = DBCriteria<DBMovieInfo>.OperatorEnum.LESS_THAN;
                invalidYearsCriteria.Value = 1900;
                invalidYearsNode.Filter.Criteria.Add(invalidYearsCriteria);
                invalidYearsCriteria = new DBCriteria<DBMovieInfo>();
                invalidYearsCriteria.Field = DBField.GetFieldByDBName(typeof(DBMovieInfo), "year");
                invalidYearsCriteria.Operator = DBCriteria<DBMovieInfo>.OperatorEnum.GREATER_THAN;
                invalidYearsCriteria.Value = 2030;
                invalidYearsNode.Filter.Criteria.Add(invalidYearsCriteria);

                // missing mediainfo node
                DBNode<DBMovieInfo> missingMediaInfoNode = new DBNode<DBMovieInfo>();
                missingMediaInfoNode.Name = "${MediaInfo}";
                missingMediaInfoNode.Parent = maintenanceNode;
                missingMediaInfoNode.DynamicNode = false;
                missingMediaInfoNode.Filter = new DBFilter<DBMovieInfo>();
                missingMediaInfoNode.SortPosition = position++;
                missingMediaInfoNode.DBManager = MovingPicturesCore.DatabaseManager;
                maintenanceNode.Children.Add(missingMediaInfoNode);

                DBCriteria<DBMovieInfo> missingMediaInfoCriteria = new DBCriteria<DBMovieInfo>();
                missingMediaInfoCriteria.Field = DBField.GetFieldByDBName(typeof(DBLocalMedia), "videowidth");
                missingMediaInfoCriteria.Relation = DBRelation.GetRelation(typeof(DBMovieInfo), typeof(DBLocalMedia), "");
                missingMediaInfoCriteria.Operator = DBCriteria<DBMovieInfo>.OperatorEnum.EQUAL;
                missingMediaInfoCriteria.Value = 0;
                missingMediaInfoNode.Filter.Criteria.Add(missingMediaInfoCriteria);

                menu.Commit();
            }

            foreach (DBNode<DBMovieInfo> currNode in menu.RootNodes) {
                currNode.UpdateDynamicNode();
                currNode.Commit();
            }
        }
コード例 #14
0
        public static void VerifyCategoryMenu()
        {
            DBMenu<DBMovieInfo> menu = MovingPicturesCore.Settings.CategoriesMenu;

            if (menu.RootNodes.Count == 0) {
                int position = 1;

                DBNode<DBMovieInfo> allNode = new DBNode<DBMovieInfo>();
                allNode.Name = "${AllMovies}";
                allNode.DynamicNode = false;
                allNode.Filter = new DBFilter<DBMovieInfo>();
                allNode.SortPosition = position++;
                allNode.DBManager = MovingPicturesCore.DatabaseManager;
                menu.RootNodes.Add(allNode);

                DBNode<DBMovieInfo> unwatchedNode = new DBNode<DBMovieInfo>();
                unwatchedNode.Name = "${UnwatchedMovies}";
                unwatchedNode.DynamicNode = false;
                unwatchedNode.Filter = new DBFilter<DBMovieInfo>();
                DBCriteria<DBMovieInfo> criteria = new DBCriteria<DBMovieInfo>();
                criteria.Field = DBField.GetFieldByDBName(typeof(DBUserMovieSettings), "watched");
                criteria.Relation = DBRelation.GetRelation(typeof(DBMovieInfo), typeof(DBUserMovieSettings), "");
                criteria.Operator = DBCriteria<DBMovieInfo>.OperatorEnum.EQUAL;
                criteria.Value = "0";
                unwatchedNode.Filter.Criteria.Add(criteria);
                unwatchedNode.SortPosition = position++;
                unwatchedNode.DBManager = MovingPicturesCore.DatabaseManager;
                menu.RootNodes.Add(unwatchedNode);

                DBNode<DBMovieInfo> recentNode = new DBNode<DBMovieInfo>();
                recentNode.Name = "${RecentlyAddedMovies}";
                recentNode.DynamicNode = false;
                recentNode.Filter = new DBFilter<DBMovieInfo>();
                recentNode.SortPosition = position++;
                recentNode.DBManager = MovingPicturesCore.DatabaseManager;

                DBCriteria<DBMovieInfo> recentCriteria = new DBCriteria<DBMovieInfo>();
                recentCriteria.Field = DBField.GetFieldByDBName(typeof(DBMovieInfo), "date_added");
                recentCriteria.Operator = DBCriteria<DBMovieInfo>.OperatorEnum.GREATER_THAN;
                recentCriteria.Value = "-30d";
                recentNode.Filter.Criteria.Add(recentCriteria);

                DBMovieNodeSettings additionalSettings = new DBMovieNodeSettings();
                additionalSettings.UseDefaultSorting = false;
                additionalSettings.SortField = SortingFields.DateAdded;
                additionalSettings.SortDirection = SortingDirections.Descending;
                recentNode.AdditionalSettings = additionalSettings;
                menu.RootNodes.Add(recentNode);

                DBNode<DBMovieInfo> genreNode = new DBNode<DBMovieInfo>();
                genreNode.DynamicNode = true;
                genreNode.BasicFilteringField = DBField.GetFieldByDBName(typeof(DBMovieInfo), "genres");
                genreNode.Name = "${Genres}";
                genreNode.SortPosition = position++;
                genreNode.DBManager = MovingPicturesCore.DatabaseManager;
                menu.RootNodes.Add(genreNode);

                DBNode<DBMovieInfo> certNode = new DBNode<DBMovieInfo>();
                certNode.DynamicNode = true;
                certNode.BasicFilteringField = DBField.GetFieldByDBName(typeof(DBMovieInfo), "certification");
                certNode.Name = "${" + certNode.BasicFilteringField.Name + "}";
                certNode.DBManager = MovingPicturesCore.DatabaseManager;
                certNode.SortPosition = position++;
                menu.RootNodes.Add(certNode);

                DBNode<DBMovieInfo> yearNode = new DBNode<DBMovieInfo>();
                yearNode.DynamicNode = true;
                yearNode.BasicFilteringField = DBField.GetFieldByDBName(typeof(DBMovieInfo), "year");
                yearNode.Name = "${" + yearNode.BasicFilteringField.Name + "}";
                yearNode.SortPosition = position++;
                yearNode.DBManager = MovingPicturesCore.DatabaseManager;
                menu.RootNodes.Add(yearNode);

                DBNode<DBMovieInfo> alphaNode = new DBNode<DBMovieInfo>();
                alphaNode.DynamicNode = true;
                alphaNode.BasicFilteringField = DBField.GetFieldByDBName(typeof(DBMovieInfo), "title");
                alphaNode.Name = "${BeginsWith}";
                alphaNode.DBManager = MovingPicturesCore.DatabaseManager;
                alphaNode.SortPosition = position++;
                menu.RootNodes.Add(alphaNode);

                menu.Commit();
            }

            foreach (DBNode<DBMovieInfo> currNode in menu.RootNodes) {
                currNode.UpdateDynamicNode();
                currNode.Commit();
            }
        }