00001
00002
00003
00004
00005
00006
00007 #ifndef JULIANDAYNUM_H
00008 #define JULIANDAYNUM_H
00009
00010 #include <cstdlib>
00011
00012 #include "DataMethod.hxx"
00013 #include "DataOps.h"
00014
00016 template<typename DataType>
00017 class JulianDayNum : public DataMethod<DataType>
00018 {
00019 public:
00021 JulianDayNum() { DataMethod<DataType>::methodName = "JulianDayNum"; }
00022
00024 virtual ~JulianDayNum() { }
00025
00027 void setSource(IntMap& tbls, IntMap& cols, StringMap units)
00028 {
00029 utColno = cols[0];
00030 if (utColno < 0)
00031 {
00032 throw DataMethodException("JulianDayNum method. Couldn't source");
00033 }
00034 }
00035
00037 void setTarget(IntMap& cols, StringMap units) { jdColno = cols[0]; }
00038
00040 void doit(TableData<DataType>& data, int row1, int row2)
00041 {
00042 for (int rowNo = row1; rowNo < row2; ++rowNo)
00043 {
00044 std::string date;
00045 data.value(utColno, rowNo, date);
00046 int utDate = atoi(date.c_str());
00047 int jdnum = DataOps::calcJulianDay(utDate);
00048 data.assign(jdColno, rowNo, jdnum);
00049 }
00050 }
00051
00052
00053 void doit2(TableData<DataType>& rawData, TableData<DataType>& data, int row1, int row2) { }
00054
00055 private:
00056 int utColno;
00057 int jdColno;
00058 };
00059
00060 #endif
00061
00062
00063
00064
00065