package ru.khasang.cachoeira.commands.project; import ru.khasang.cachoeira.commands.Command; import ru.khasang.cachoeira.model.IProject; import ru.khasang.cachoeira.model.IResource; import ru.khasang.cachoeira.model.ITask; import java.util.ArrayList; import java.util.stream.Collectors; public class RemoveResourceFromProjectCommand implements Command { private final IProject project; private final IResource resource; private int index; private ArrayList<ITask> oldTaskList; public RemoveResourceFromProjectCommand(IProject project, IResource resource) { this.project = project; this.resource = resource; } @Override public void execute() { index = project.getResourceList().indexOf(resource); oldTaskList = new ArrayList<>(project.getTaskList().stream() .filter(task -> task.getResourceList().contains(resource)) .collect(Collectors.toList())); // Удаляем project.getTaskList().stream() .filter(task -> task.getResourceList().contains(resource)) .forEach(task -> task.getResourceList().remove(resource)); project.getResourceList().remove(index); } @Override public void undo() { project.getResourceList().add(index, resource); for (ITask task : oldTaskList) { task.getResourceList().add(resource); } } }