package com.lassekoskela.maven.buildevents; import com.lassekoskela.time.Clock; import com.lassekoskela.time.Duration; public class BuildStep { public final String project, phase, groupId, artifactId, goal; private long startedAt, endedAt; public BuildStep(String project, String phase, String groupId, String artifactId, String goal) { this.project = project; this.phase = phase; this.groupId = groupId; this.artifactId = artifactId; this.goal = goal; } public Duration duration() { return new Duration(endedAt - startedAt); } public void end() { this.endedAt = Clock.now(); } public void start() { startedAt = Clock.now(); } @Override public boolean equals(Object obj) { if (obj == null || !obj.getClass().equals(getClass())) { return false; } return toString().equals(obj.toString()); } @Override public String toString() { StringBuilder s = new StringBuilder(); s.append(getClass().getSimpleName()).append("("); s.append(project).append("/").append(phase).append("/"); s.append(groupId).append(":").append(artifactId); s.append("/").append(goal).append(")"); return s.toString(); } }