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();
            }
        }
Exemplo n.º 2
0
        public void Delete(Genre genreToDelete)
        {
            queue.ChckAndAddToGenreList(genreToDelete.Name);
            try
            {
                semaphore.WaitAsync();
                var indexToDelete = genres.FindIndex(gen => gen.Name.Equals(genreToDelete.Name));
                if (indexToDelete == -1)
                {
                    queue.RemoveGenreFromQueue(genreToDelete.Name);
                    throw new DataBaseException("No se encontro el genero solicitado");
                }

                genres.RemoveAt(indexToDelete);
            }
            finally
            {
                semaphore.Release();
                queue.RemoveGenreFromQueue(genreToDelete.Name);
            }
        }