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(); } }
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); } }