package org.marketcetera.photon; import java.beans.PropertyChangeListener; import java.beans.PropertyChangeSupport; import java.util.Date; import org.marketcetera.util.misc.ClassVersion; /* $License$ */ /** * Simple bean to manage session start time. * * @author <a href="mailto:will@marketcetera.com">Will Horn</a> * @version $Id: SessionStartTimeProvider.java 16154 2012-07-14 16:34:05Z colin $ * @since 1.5.0 */ @ClassVersion("$Id: SessionStartTimeProvider.java 16154 2012-07-14 16:34:05Z colin $") public class SessionStartTimeProvider implements ISessionStartTimeProvider { private Date mSessionStartTime; @Override public Date getSessionStartTime() { return copyDate(mSessionStartTime); } /** * Set the session start time. This fires change notification to all registered listeners. * * @param sessionStartTime * the new session start time. */ public void setSessionStartTime(Date sessionStartTime) { if (mSessionStartTime == null && sessionStartTime == null) return; getPropertyChangeSupport().firePropertyChange("sessionStartTime", //$NON-NLS-1$ mSessionStartTime, copyDate(mSessionStartTime = copyDate(sessionStartTime))); } private Date copyDate(Date date) { // defensive copying since Date is mutable return date == null ? null : new Date(date.getTime()); } // Boiler plate property change code private final PropertyChangeSupport propertyChangeSupport = new PropertyChangeSupport(this); /** * @return {@link PropertyChangeSupport} for this class */ protected PropertyChangeSupport getPropertyChangeSupport() { return propertyChangeSupport; } @Override public void addPropertyChangeListener(PropertyChangeListener listener) { getPropertyChangeSupport().addPropertyChangeListener(listener); } @Override public void removePropertyChangeListener(PropertyChangeListener listener) { getPropertyChangeSupport().removePropertyChangeListener(listener); } @Override public void addPropertyChangeListener(String propertyName, PropertyChangeListener listener) { getPropertyChangeSupport().addPropertyChangeListener(propertyName, listener); } @Override public void removePropertyChangeListener(String propertyName, PropertyChangeListener listener) { getPropertyChangeSupport().removePropertyChangeListener(propertyName, listener); } }