示例#1
0
        private void itunes_OnDatabaseChangedEvent(object deletedObjectIDs, object changedObjectIDs)
        {
            // NOTE: this event is both expensive and blocking, so it is not advised to
            // wire up a handler to OnDatabaseChanged.

            Debug.WriteLine("OnDatabaseChangedEvent(deletedObjectIDs, changedObjectIDs)");
            if (deletedObjectIDs == null)
            {
                Debug.WriteLine("DeletedObjectIDs is null");
            }
            else
            {
                ObjectIDCollection deleteIDs = new ObjectIDCollection();
                Array deleted = deletedObjectIDs as Array;
                for (int i = deleted.GetLowerBound(0); i <= deleted.GetUpperBound(0); i++)
                {
                    deleteIDs.Add(new ObjectID(
                                      (int)deleted.GetValue(i, 0),
                                      (int)deleted.GetValue(i, 1),
                                      (int)deleted.GetValue(i, 2),
                                      (int)deleted.GetValue(i, 3)));
                }

                if (deleteIDs.Count > 0)
                {
                    DumpChanges("Deleted", deleteIDs);
                }
            }

            if (deletedObjectIDs == null)
            {
                Debug.WriteLine("ChangedObjectIDs is null");
            }
            else
            {
                ObjectIDCollection changeIDs = new ObjectIDCollection();
                Array changed = changedObjectIDs as Array;
                for (int i = changed.GetLowerBound(0); i <= changed.GetUpperBound(0); i++)
                {
                    changeIDs.Add(new ObjectID(
                                      (int)changed.GetValue(i, 0),
                                      (int)changed.GetValue(i, 1),
                                      (int)changed.GetValue(i, 2),
                                      (int)changed.GetValue(i, 3)));
                }

                if (changeIDs.Count > 0)
                {
                    DumpChanges("Changes", changeIDs);
                }
            }
        }
示例#2
0
        /// <summary>
        /// Instantiate a new maintenance action only if the safe array describes a recognizable
        /// activity pattern.
        /// </summary>
        /// <param name="safeArray"></param>
        /// <returns></returns>

        public static MaintenanceAction Create(object safeArray)
        {
            Array array                = safeArray as Array;
            ObjectIDCollection list    = new ObjectIDCollection();
            StringBuilder      builder = new StringBuilder();
            ObjectID           oid;

            // convert the safe array to a collection and construct the pattern map

            int lower = array.GetLowerBound(0);
            int upper = array.GetUpperBound(0);

            for (int i = lower; i <= upper; i++)
            {
                oid = new ObjectID(
                    (int)array.GetValue(i, 0),                                  // source
                    (int)array.GetValue(i, 1),                                  // playlist
                    (int)array.GetValue(i, 2),                                  // trackid
                    (int)array.GetValue(i, 3));                                 // databaseid

                list.Add(oid);

                if (oid.IsPlaylist)
                {
                    builder.Append("P");
                }
                else if (oid.IsSource)
                {
                    builder.Append("S");
                }
                else if (oid.IsTrack)
                {
                    builder.Append("T");
                }
                else
                {
                    builder.Append("X");
                }
            }

            // recognize pattern to instantiate new MaintenanceAction

            string map = builder.ToString();

            if (Regex.IsMatch(map, AddPlaylistPattern))
            {
                return(new MaintenanceAction(ActionType.AddPlaylist, list));
            }
            else if (Regex.IsMatch(map, AddTracksPattern))
            {
                return(new MaintenanceAction(ActionType.AddTracksToPlaylist, list));
            }
            else if (Regex.IsMatch(map, RemovePlaylistPattern))
            {
                return(new MaintenanceAction(ActionType.RemovePlaylist, list));
            }
            else if (Regex.IsMatch(map, RemoveTracksPattern))
            {
                return(new MaintenanceAction(ActionType.RemoveTracksFromPlaylist, list));
            }

            // Not a recognizable pattern, return null

            list.Clear();
            return(null);
        }
示例#3
0
        private void itunes_OnDatabaseChangedEvent(object deletedObjectIDs, object changedObjectIDs)
        {
            // NOTE: this event is both expensive and blocking, so it is not advised to
            // wire up a handler to OnDatabaseChanged.

            Debug.WriteLine("OnDatabaseChangedEvent(deletedObjectIDs, changedObjectIDs)");
            if (deletedObjectIDs == null)
            {
                Debug.WriteLine("DeletedObjectIDs is null");
            }
            else
            {
                ObjectIDCollection deleteIDs = new ObjectIDCollection();
                Array deleted = deletedObjectIDs as Array;
                for (int i = deleted.GetLowerBound(0); i <= deleted.GetUpperBound(0); i++)
                {
                    deleteIDs.Add(new ObjectID(
                        (int)deleted.GetValue(i, 0),
                        (int)deleted.GetValue(i, 1),
                        (int)deleted.GetValue(i, 2),
                        (int)deleted.GetValue(i, 3)));
                }

                if (deleteIDs.Count > 0)
                {
                    DumpChanges("Deleted", deleteIDs);
                }
            }

            if (deletedObjectIDs == null)
            {
                Debug.WriteLine("ChangedObjectIDs is null");
            }
            else
            {
                ObjectIDCollection changeIDs = new ObjectIDCollection();
                Array changed = changedObjectIDs as Array;
                for (int i = changed.GetLowerBound(0); i <= changed.GetUpperBound(0); i++)
                {
                    changeIDs.Add(new ObjectID(
                        (int)changed.GetValue(i, 0),
                        (int)changed.GetValue(i, 1),
                        (int)changed.GetValue(i, 2),
                        (int)changed.GetValue(i, 3)));
                }

                if (changeIDs.Count > 0)
                {
                    DumpChanges("Changes", changeIDs);
                }
            }
        }
示例#4
0
        /// <summary>
        /// Instantiate a new maintenance action only if the safe array describes a recognizable
        /// activity pattern.
        /// </summary>
        /// <param name="safeArray"></param>
        /// <returns></returns>
        public static MaintenanceAction Create(object safeArray)
        {
            Array array = safeArray as Array;
            ObjectIDCollection list = new ObjectIDCollection();
            StringBuilder builder = new StringBuilder();
            ObjectID oid;

            // convert the safe array to a collection and construct the pattern map

            int lower = array.GetLowerBound(0);
            int upper = array.GetUpperBound(0);

            for (int i = lower; i <= upper; i++)
            {
                oid = new ObjectID(
                    (int)array.GetValue(i, 0),		// source
                    (int)array.GetValue(i, 1),		// playlist
                    (int)array.GetValue(i, 2),		// trackid
                    (int)array.GetValue(i, 3));		// databaseid

                list.Add(oid);

                if (oid.IsPlaylist)
                {
                    builder.Append("P");
                }
                else if (oid.IsSource)
                {
                    builder.Append("S");
                }
                else if (oid.IsTrack)
                {
                    builder.Append("T");
                }
                else
                {
                    builder.Append("X");
                }
            }

            // recognize pattern to instantiate new MaintenanceAction

            string map = builder.ToString();

            if (Regex.IsMatch(map, AddPlaylistPattern))
            {
                return new MaintenanceAction(ActionType.AddPlaylist, list);
            }
            else if (Regex.IsMatch(map, AddTracksPattern))
            {
                return new MaintenanceAction(ActionType.AddTracksToPlaylist, list);
            }
            else if (Regex.IsMatch(map, RemovePlaylistPattern))
            {
                return new MaintenanceAction(ActionType.RemovePlaylist, list);
            }
            else if (Regex.IsMatch(map, RemoveTracksPattern))
            {
                return new MaintenanceAction(ActionType.RemoveTracksFromPlaylist, list);
            }

            // Not a recognizable pattern, return null

            list.Clear();
            return null;
        }