package net.sourceforge.cruisecontrol; import net.sourceforge.cruisecontrol.listeners.ProgressChangedEvent; import net.sourceforge.cruisecontrol.util.DateUtil; import java.io.Serializable; import java.util.Date; /** * Allow progress updates as projects are processed during various ProjectStates. * @author Dan Rollo * Date: Jul 20, 2007 * Time: 1:46:54 PM */ public class ProgressImpl implements Progress { private static final long serialVersionUID = -660370539956160650L; /** The parent Project. */ private final Project project; /** current progress value. */ private Serializable val; private Date lastUpdated; ProgressImpl(final Project project) { this.project = project; setLastUpdated(); } private void setLastUpdated() { lastUpdated = new Date(); } /** @param value new progress value. */ public void setValue(String value) { val = value; setLastUpdated(); project.notifyListeners(new ProgressChangedEvent(project.getName(), this)); } /** @return current progress value represented as a String, prefixed with last update time. */ public String getValue() { return DateUtil.getFormattedTime(lastUpdated) + " " + val; } /** @return the date when current progress value was set. */ public Date getLastUpdated() { return lastUpdated; } /** * @return the current progress value (not prefixed by last updated date). */ public String getText() { return (val != null ? val.toString() : null); } }