package com.lassekoskela.maven.bean; import java.util.ArrayList; import java.util.List; import com.google.common.base.Objects; import com.google.common.base.Objects.ToStringHelper; import com.google.common.base.Optional; import com.google.common.base.Predicate; import com.google.common.collect.FluentIterable; public class Phase extends MavenItem { private final List<Goal> goals; public Phase(String name, List<Goal> goals) { super(name); this.goals = new ArrayList<Goal>(goals); } public List<Goal> getGoals() { return goals; } public void addGoal(Goal goal) { goals.add(goal); } public Optional<Goal> getGoal(final String goalName) { return FluentIterable.from(goals).firstMatch(new Predicate<Goal>() { @Override public boolean apply(Goal input) { return input.getItemId().equals(goalName); } }); } @Override public int hashCode() { return Objects.hashCode(super.hashCode(), goals); } @Override public boolean equals(Object object) { if (object instanceof Phase) { Phase that = (Phase) object; return super.equals(object) && Objects.equal(this.goals, that.goals); } return false; } @Override public ToStringHelper toStringHelper() { return super.toStringHelper().add("goals", goals); } }