00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef _TimeHandlerClass_
00026 #define _TimeHandlerClass_
00027
00028 #include "BasicData.h"
00029
00030
00031 string integerToString(int val);
00032 string int2String(int val);
00033
00034 class TimeHandler
00035 {
00036 public:
00038 int STARTYEAR() { return absoluteStartYear;}
00039 int STARTMONTH() { return absoluteStartMonth;}
00040 int STARTDAY() { return absoluteStartDay;}
00041
00042 int STOPYEAR() { return absoluteStopYear;}
00043 int STOPMONTH() { return absoluteStopMonth;}
00044 int STOPDAY() { return absoluteStopDay;}
00045
00046 int IRRIGATIONSTARTMONTH() {return irrigationStartMonth;}
00047 int IRRIGATIONSTOPMONTH() {return irrigationStopMonth;}
00048
00049 bool isIrrigationMonth();
00050 bool isIrrigationMonth(int m);
00051
00053
00054 virtual int MONATE();
00055 virtual int TOTAL_IRRIGATION_MONTHS();
00056 virtual int TOTALPERIODS();
00057 virtual bool ISNORTHERN();
00058
00059 void setMONATE(int m_);
00060
00062 int GETMONTH() { return currentAbsoluteMonth;}
00063 int GETYEAR() { return currentAbsoluteYear;}
00064
00065 string GETMONTH_string() { return integerToString(currentAbsoluteMonth); }
00066 string GETYEAR_string() { return integerToString(currentAbsoluteYear); }
00067
00068
00069
00071 int PERIODE() { return currentRelativePeriod;}
00072 int CURRENTMODELPERIOD() { return currentRelativePeriod;}
00073 int CURRENTMODELMONTH() { return currentRelativeMonth;}
00074
00076 void initializeDummy();
00077 void readTimeHandler(string filename);
00078 void readFromFile(string filename) { readTimeHandler(filename);}
00079
00080 void writeToFile(string fn);
00081 void writeAsRead(ofstream& outstream);
00082
00084
00085
00086 virtual void setSTOPYEAR(int absoluteStopYear_);
00087
00088
00089 void resetAllDatesToStart();
00090 void reset() {resetAllDatesToStart();}
00091
00092
00093
00094 virtual void resetToStartOfYear(int _year);
00095 virtual void resetToStartOfYear(int _year, string comment);
00096
00098 void nextMonth();
00099 void nextPeriod();
00100
00102 void printCurrentTimeStatus(std::ostream *outstream);
00103 void printToScreen();
00104 void printDaysPerMonth();
00105
00107 bool isLeapYear(int y_year);
00108 int getDaysPerMonth(int m_month, int y_year);
00109 int DAYSperTHISMONTH();
00110
00112 TimeHandler();
00113 TimeHandler( TimeHandler& sourceHandle, string nm);
00114 virtual ~TimeHandler();
00115 virtual void deallocate();
00116
00117
00118 virtual void copy( TimeHandler& sourceHandle);
00119
00120
00121 virtual void setNameOfHandler(string nm_);
00122 virtual string getNameOfHandler();
00123
00124
00125 virtual void SETMONTH(int m_);
00126 virtual void SETYEAR(int y_);
00127
00128 private:
00129
00131 virtual void setSTARTYEAR(int absoluteStartYear_);
00132 virtual void setSTARTMONTH(int absoluteStartMonth_);
00133 virtual void setSTOPMONTH(int absoluteStopMonth_);
00134 virtual void setISNORTHERN(bool isNorthern_);
00135
00136
00137
00138
00139 void updateIrrigationMonths();
00140 void updateIrrigationMonths(bool doOutput);
00141
00142
00143
00144
00145
00146 int currentAbsoluteMonth;
00147 int currentAbsoluteYear;
00148
00149
00150 int currentRelativePeriod;
00151 int currentRelativeMonth;
00152
00153
00154 int absoluteStartYear;
00155 int absoluteStartMonth;
00156 int absoluteStartDay;
00157
00158 int absoluteStopYear;
00159 int absoluteStopMonth;
00160 int absoluteStopDay;
00161
00162 int irrigationStartMonth;
00163 int irrigationStopMonth;
00164
00165 int maximumNumberOfIrrigationMonths;
00166 int maximumNumberOfPeriodsModeled;
00167
00168 bool isNorthernHemisphere;
00169
00171 int* daysPerMonth;
00172 string* monthString;
00173 void initDaysPerMonths();
00174
00175
00176
00177
00178 string nameOfThisHandler;
00179
00180
00181 bool checkIfCountUpYear();
00182 void addYearInTimeHandler() { currentAbsoluteYear++;}
00183 };
00184 #endif
00185