package com.lassekoskela.maven.bean; import java.util.ArrayList; import java.util.List; import com.google.common.base.Joiner; import com.google.common.base.Objects; import com.google.common.base.Objects.ToStringHelper; import com.lassekoskela.time.Duration; public class Goal extends MavenItem { private final long startTimeInMs; private final List<String> dependencies; private Duration duration; public Goal(String name, Duration duration, long startTimeInMs, List<String> dependencies) { super(name); this.duration = duration; this.startTimeInMs = startTimeInMs; this.dependencies = new ArrayList<String>(dependencies); } public long getStartTimeInMs() { return startTimeInMs; } public Duration getDuration() { return duration; } public void setDuration(Duration duration) { this.duration = duration; } public List<String> getDependencies() { return dependencies; } public String serializeDependencies() { return Joiner.on(' ').join(dependencies); } public long getCompletedTimeInMs() { return startTimeInMs + getDuration().inMillis(); } @Override public final int hashCode() { return Objects.hashCode(super.hashCode(), duration, startTimeInMs, dependencies); } @Override public final boolean equals(Object object) { if (object instanceof Goal) { Goal that = (Goal) object; return super.equals(object) && Objects.equal(this.duration, that.duration) && Objects.equal(this.startTimeInMs, that.startTimeInMs) && Objects.equal(this.dependencies, that.dependencies); } return false; } @Override public ToStringHelper toStringHelper() { return super.toStringHelper().add("duration", duration).add("startTimeInMs", startTimeInMs) .add("dependencies", dependencies); } }