コード例 #1
0
        public void UpdateMovieDirector(Movie movie, Director director)
        {
            var movieName = movie.Name;
            var dirName   = director.Name;

            try
            {
                semaphore.WaitAsync();
                queue.ChckAndAddToMovieList(movieName);
                queue.ChckAndAddToDirectorList(dirName);

                UpdateMovieAfterASociation(movie);
                UpdateDirectorAfterAsociation(director);
            }
            catch (EntityBeingModifiedException entitiyBeingMod)
            {
                throw entitiyBeingMod;
            }
            catch (DataBaseException entityNotFound)
            {
                throw entityNotFound;
            }
            finally
            {
                RemoveDirectorAndMovieFromQueue(movieName, dirName);
                semaphore.Release();
            }
        }
コード例 #2
0
        public void DeleteDirector(string directorName)
        {
            queue.ChckAndAddToDirectorList(directorName);

            try
            {
                semaphore.WaitAsync();
                var indexToDelete = directors.FindIndex(dir => dir.Name.Equals(directorName));
                if (indexToDelete == -1)
                {
                    queue.RemoveDirectorFromQueue(directorName);
                    throw new DataBaseException("No se encontro el director solicitado");
                }
                directors.RemoveAt(indexToDelete);
            }
            finally
            {
                semaphore.Release();
                queue.RemoveDirectorFromQueue(directorName);
            }
        }