00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #include <eyedb/syscls.h>
00025 #include "ClockConverter.h"
00026 #include "datelib.h"
00027
00028 namespace eyedb {
00029
00030
00031
00032
00033 void
00034 TimeInterval::userCopy(const Object &)
00035 {
00036 setClientData();
00037 }
00038
00039 void
00040 TimeInterval::userInitialize()
00041 {
00042 setClientData();
00043 }
00044
00045 void
00046 TimeInterval::setClientData()
00047 {
00048 ClockConverter * clock = DateAlgorithmRepository::getDefaultClockConverter();
00049
00050 char * s_time = clock->usec2ascii(getUsecs());
00051
00052 strcpy(string_time_interval, s_time);
00053
00054 delete [] s_time;
00055 }
00056
00057
00058 eyedblib::int32
00059 TimeInterval::day() const
00060 {
00061 ClockConverter * clock = DateAlgorithmRepository::getDefaultClockConverter();
00062
00063 return clock->usec2day(getUsecs());
00064 }
00065
00066 eyedblib::int16
00067 TimeInterval::hour() const
00068 {
00069 ClockConverter * clock = DateAlgorithmRepository::getDefaultClockConverter();
00070
00071 eyedblib::int16 hour = 0;
00072 clock->usec2clock( getUsecs(), &hour);
00073
00074 return hour % 24;
00075 }
00076
00077 eyedblib::int16
00078 TimeInterval::minute() const
00079 {
00080 ClockConverter * clock = DateAlgorithmRepository::getDefaultClockConverter();
00081
00082 eyedblib::int16 min = 0;
00083 clock->usec2clock( getUsecs(), 0, &min);
00084
00085 return min;
00086 }
00087
00088 eyedblib::int16
00089 TimeInterval::second() const
00090 {
00091 ClockConverter * clock = DateAlgorithmRepository::getDefaultClockConverter();
00092
00093 eyedblib::int16 sec = 0;
00094 clock->usec2clock( getUsecs(), 0, 0, &sec);
00095
00096 return sec;
00097 }
00098
00099 eyedblib::int16
00100 TimeInterval::millisecond() const
00101 {
00102 ClockConverter * clock = DateAlgorithmRepository::getDefaultClockConverter();
00103
00104 eyedblib::int16 ms = 0;
00105 clock->usec2clock( getUsecs(), 0, 0, 0, &ms);
00106
00107 return ms;
00108 }
00109
00110
00111 eyedblib::int16
00112 TimeInterval::microsecond() const
00113 {
00114 ClockConverter * clock = DateAlgorithmRepository::getDefaultClockConverter();
00115
00116 eyedblib::int16 us = 0;
00117 clock->usec2clock( getUsecs(), 0, 0, 0, 0, &us);
00118
00119 return us;
00120 }
00121
00122
00123 Bool
00124 TimeInterval::is_zero() const
00125 {
00126 if( getUsecs() == 0 )
00127 {
00128 return True;
00129 }
00130 else
00131 {
00132 return False;
00133 }
00134 }
00135
00136 TimeInterval &
00137 TimeInterval::plus(const TimeInterval & i)
00138 {
00139 set_usecs( getUsecs() + i.getUsecs() );
00140
00141 return *this;
00142 }
00143
00144 TimeInterval &
00145 TimeInterval::minus(const TimeInterval & i)
00146 {
00147 set_usecs( getUsecs() - i.getUsecs() );
00148
00149 return *this;
00150 }
00151
00152 TimeInterval &
00153 TimeInterval::product(eyedblib::int64 val)
00154 {
00155 set_usecs( getUsecs() * val );
00156
00157 return *this;
00158 }
00159
00160 TimeInterval &
00161 TimeInterval::quotient(eyedblib::int64 val)
00162 {
00163 set_usecs( getUsecs() / val );
00164
00165 return *this;
00166 }
00167
00168 Bool
00169 TimeInterval::is_equal(const TimeInterval & i) const
00170 {
00171 if( getUsecs() == i.getUsecs() )
00172 {
00173 return True;
00174 }
00175 else
00176 {
00177 return False;
00178 }
00179 }
00180
00181 Bool
00182 TimeInterval::is_greater(const TimeInterval & i) const
00183 {
00184 if( getUsecs() > i.getUsecs() )
00185 {
00186 return True;
00187 }
00188 else
00189 {
00190 return False;
00191 }
00192 }
00193
00194 Bool
00195 TimeInterval::is_greater_or_equal(const TimeInterval & i) const
00196 {
00197 if( getUsecs() >= i.getUsecs() )
00198 {
00199 return True;
00200 }
00201 else
00202 {
00203 return False;
00204 }
00205 }
00206
00207 Bool
00208 TimeInterval::is_less(const TimeInterval & i) const
00209 {
00210 if( getUsecs() < i.getUsecs() )
00211 {
00212 return True;
00213 }
00214 else
00215 {
00216 return False;
00217 }
00218 }
00219
00220 Bool
00221 TimeInterval::is_less_or_equal(const TimeInterval & i) const
00222 {
00223 if( getUsecs() <= i.getUsecs() )
00224 {
00225 return True;
00226 }
00227 else
00228 {
00229 return False;
00230 }
00231 }
00232
00233 Status
00234 TimeInterval::set_usecs(eyedblib::int64 usecs)
00235 {
00236 Status s = setUsecs(usecs);
00237
00238 if(!s)
00239 {
00240 setClientData();
00241 }
00242
00243 return s;
00244 }
00245
00246 TimeInterval *
00247 TimeInterval::time_interval(Database * db, eyedblib::int64 usecs)
00248 {
00249 TimeInterval * i = new TimeInterval(db);
00250 i->set_usecs(usecs);
00251
00252 return i;
00253 }
00254
00255 TimeInterval *
00256 TimeInterval::time_interval(Database * db, eyedblib::int32 day, eyedblib::int16 hours, eyedblib::int16 min, eyedblib::int16 sec, eyedblib::int16 msec, eyedblib::int16 usec)
00257 {
00258 ClockConverter * clock = DateAlgorithmRepository::getDefaultClockConverter();
00259
00260 TimeInterval * i = new TimeInterval(db);
00261
00262 eyedblib::int64 usecs = 0;
00263 eyedblib::int64 total_hours = day * 24 + hours;
00264 clock->clock2usec(&usecs, total_hours, min, sec, msec, usec);
00265
00266 i->set_usecs(usecs);
00267
00268 return i;
00269 }
00270
00271 const char *
00272 TimeInterval::toString() const
00273 {
00274 return string_time_interval;
00275 }
00276
00277 }