import java.util.Date;
/** Dieses Uhrwerk wird mit einer Zeit eingestellt und verwendet die 
  * interne Systemuhr, um neue Zeiten zu berechnen.
  **/
public class EingestellteZeit implements Uhrwerk {
  /** Der Unterschied zwischen eingestellter Zeit
    * und Systemzeit in Millisekunden.
    **/
  private long drift;
  /** Gibt die aktuelle Uhrzeit in Form eines Date-Objektes zurueck.
    * @return die aktuelle Zeit
    **/
  public Date getZeit() {
    return new Date(System.currentTimeMillis() + drift);
  }
  /** Stellt das Werk dieser Uhr auf eine bestimmte Zeit. Diese 
    * Methode ist optional und muss nicht immer implementiert sein.
    * @param zeit die aktuelle Uhrzeit
    * @exception UnsupportedOperationException falls 
    *  diese Methode nicht unterstuetzt wird
    **/
  public void setZeit(Date zeit) 
    throws UnsupportedOperationException {
    drift = zeit.getTime() - System.currentTimeMillis();
  }
}
