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 Project extends MavenItem { private final List<Phase> phases; public Project(String name, List<Phase> phases) { super(name); this.phases = new ArrayList<Phase>(phases); } public List<Phase> getPhases() { return phases; } public Phase addPhase(Phase phase) { phases.add(phase); return phase; } public Optional<Phase> getPhase(final String phaseName) { return FluentIterable.from(phases).firstMatch(new Predicate<Phase>() { @Override public boolean apply(Phase input) { return input.getItemId().equals(phaseName); } }); } @Override public int hashCode() { return Objects.hashCode(super.hashCode(), phases); } @Override public boolean equals(Object object) { if (object instanceof Project) { Project that = (Project) object; return super.equals(object) && Objects.equal(this.phases, that.phases); } return false; } @Override public ToStringHelper toStringHelper() { return super.toStringHelper().add("phases", phases); } }