public void UpdateMovieAndGenre(Movie mov, Genre gen)
        {
            var movieName = mov.Name;
            var genreName = gen.Name;

            try
            {
                semaphore.WaitAsync();
                queue.ChckAndAddToMovieList(movieName);
                queue.ChckAndAddToGenreList(genreName);

                UpdateGenreAfterAsociation(gen);
                UpdateMovieAfterASociation(mov);
            }
            catch (EntityBeingModifiedException entitiyBeingMod)
            {
                throw entitiyBeingMod;
            }
            catch (DataBaseException entityNotFound)
            {
                throw entityNotFound;
            }
            finally
            {
                RemoveMovieAndGenreFromQueue(genreName, movieName);
                semaphore.Release();
            }
        }
예제 #2
0
 public void Delete(Movie movie)
 {
     queue.ChckAndAddToMovieList(movie.Name);
     try
     {
         semaphore.WaitAsync();
         var indexToDelete = movies.FindIndex(mov => mov.Name.Equals(movie.Name));
         if (indexToDelete == -1)
         {
             queue.RemoveMovieFromModifyQueue(movie.Name);
             throw new DataBaseException("No se encontro la pelicula solicitada");
         }
         movies.RemoveAt(indexToDelete);
     }
     finally
     {
         semaphore.Release();
         queue.RemoveMovieFromModifyQueue(movie.Name);
     }
 }