001 package sale; 002 003 /** 004 * This class is an implementation of the {@link Time Time} interface. 005 * 006 * A Long value is used to represent the time. 007 * 008 * @author Sven Matznick 009 * @version 2.0 13/06/1999 010 * @since v2.0 011 */ 012 public class Step extends Object implements Time { 013 014 // variables 015 /** 016 * Current time. 017 * 018 * @serial 019 */ 020 private Long m_lTime = new Long(0); 021 022 /** 023 * Default interval. 024 * 025 * @serial 026 */ 027 private Long m_lDefaultInterval = new Long(1); 028 029 /** 030 * Creates a new step with default starting time 0. 031 */ 032 public Step() { 033 } // default time already set 034 035 /** 036 * Creates a new step with the given long value as the starting time. 037 * 038 * @param lInitTime a Long: the initial time. 039 */ 040 public Step(Long lInitTime) { 041 m_lTime = lInitTime; 042 } 043 044 /** 045 * Set the given Long as the new time value. 046 * 047 * @override Never 048 * 049 * @param oTime the new time value. 050 * 051 * @exception IllegalArgumentException if the given object is not convertible to a Long 052 */ 053 public void setTime(Object oTime) throws IllegalArgumentException { 054 if (!(oTime instanceof Number)) { 055 throw new IllegalArgumentException("Parameter oTime has to be of class Number or a subclass."); 056 } 057 m_lTime = new Long(((Number)oTime).longValue()); 058 } 059 060 /** 061 * Get the current time. 062 * 063 * @override Never 064 * 065 * @return a Long representing the current time. 066 */ 067 public Object getTime() { 068 return (m_lTime); 069 } 070 071 /** 072 * Increase the time by the given interval. 073 * 074 * @override Never 075 * 076 * @param oInterval the interval to increase time by 077 * 078 * @exception IllegalArgumentException if the given object is not convertible to a Long 079 */ 080 public void goAhead(Object oInterval) throws IllegalArgumentException { 081 if (!(oInterval instanceof Number)) { 082 throw new IllegalArgumentException("Parameter oInterval has to be of type Number."); 083 } 084 long lHelp = m_lTime.longValue(); 085 long lInterval = ((Number)oInterval).longValue(); 086 lHelp += lInterval; 087 m_lTime = new Long(lHelp); 088 } 089 090 /** 091 * Get the default time interval. 092 * 093 * @override Never 094 * 095 * @return a Long describing the default time interval of 1. 096 */ 097 public Object getDefaultInterval() { 098 return (m_lDefaultInterval); 099 } 100 101 /** 102 * Create and return a time stamp. 103 * 104 * @override Never 105 * 106 * @param lStampNumber the number of the stamp 107 * 108 * @return a fresh time stamp. 109 */ 110 public Comparable getTimeStamp(long lStampNumber) { 111 String sReturn = ("000000000" + m_lTime.toString()).substring(m_lTime.toString().length()); 112 sReturn = sReturn + ("000000000" + 113 Long.toString(lStampNumber)).substring(Long.toString(lStampNumber).length()); 114 115 return sReturn; 116 } 117 118 /** 119 * Return the current time. 120 * 121 * @override Never 122 * 123 * @return a String describing the current time 124 */ 125 public String toString() { 126 return m_lTime.toString(); 127 } 128 }