* @see net.sf.pmr.agilePlanning.service.StoryService#deleteTask(int, int, long)
*/
public Errors deleteTask(final int storyPersistanceId, final int persistanceId, final long persistanceVersion) {
// find the story
Story story = storyRepository.findByPersistanceId(storyPersistanceId);
// if the story is not found, return a global error
if (story == null) {
Errors errros = AgilePlanningObjectFactory.getErrors();
errros.reject("story.doesntExistsInDatabase");
return errros;
}
Task taskToDelete = null;
// find the task to delete
for (Task task : story.getTasks()) {
if (task.getPersistanceId() == persistanceId) {
taskToDelete = task;
}
}
// if the task is not found, return a global error
if (taskToDelete == null) {
Errors errros = AgilePlanningObjectFactory.getErrors();
errros.reject("task.doesntExistsInDatabase");
return errros;
}
// else check if the task can be deleted
Errors errors = taskValidator.validateForDelete(taskToDelete);
// else, remove the task from the set
if (!errors.hasErrors()) {
// update the persistanceVersion
taskToDelete.setPersistanceVersion(persistanceVersion);
// remove from the set
story.getTasks().remove(taskToDelete);
// persist
this.storyRepository.addOrUpdate(story);
}