Banshee.LibraryWatcher.SourceWatcher.RemoveTrack C# (CSharp) Method

RemoveTrack() private method

private RemoveTrack ( string track ) : void
track string
return void
        private void RemoveTrack (string track)
        {
            string uri = new SafeUri(track).AbsoluteUri;
            const string hash_sql = @"SELECT TrackID, MetadataHash FROM CoreTracks WHERE Uri = ? LIMIT 1";
            int track_id = 0;
            string hash = null;
            using (var reader = new HyenaDataReader (ServiceManager.DbConnection.Query (hash_sql, uri))) {
                if (reader.Read ()) {
                    track_id = reader.Get<int> (0);
                    hash = reader.Get<string> (1);
                }
            }

            if (hash != null) {
                lock (queue) {
                    var item = queue.FirstOrDefault (
                        i => i.ChangeType == WatcherChangeTypes.Created && GetMetadataHash (i) == hash);
                    if (item != null) {
                        item.ChangeType = WatcherChangeTypes.Renamed;
                        item.OldFullPath = track;
                        return;
                    }
                }
            }

            const string delete_sql = @"
                INSERT INTO CoreRemovedTracks (DateRemovedStamp, TrackID, Uri)
                SELECT ?, TrackID, Uri FROM CoreTracks WHERE TrackID IN ({0})
                ;
                DELETE FROM CoreTracks WHERE TrackID IN ({0})";

            // If track_id is 0, it's a directory.
            HyenaSqliteCommand delete_command;
            if (track_id > 0) {
                delete_command = new HyenaSqliteCommand (String.Format (delete_sql,
                    "?"), DateTime.Now, track_id, track_id);
            } else {
                string pattern = StringUtil.EscapeLike (uri) + "/_%";
                delete_command = new HyenaSqliteCommand (String.Format (delete_sql,
                    @"SELECT TrackID FROM CoreTracks WHERE Uri LIKE ? ESCAPE '\'"), DateTime.Now, pattern, pattern);
            }

            ServiceManager.DbConnection.Execute (delete_command);
        }