JulianDayNum.hxx
Go to the documentation of this file.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       size_t found;
00046       data.value(utColno, rowNo, date);
00047       date.resize(10);
00048       found = date.find_first_of("-");
00049       while (found != string::npos)
00050       {
00051         date.erase(found,1);  
00052         found = date.find_first_of("-", found+1);
00053       }
00054       int utDate = atoi(date.c_str());
00055       int jdnum = DataOps::calcJulianDay(utDate);
00056       data.assign(jdColno, rowNo, jdnum);
00057     }
00058   }
00059 
00060   
00061   void doit2(TableData<DataType>& rawData, TableData<DataType>& data, int row1, int row2) { }
00062 
00063 private:
00064   int utColno;
00065   int jdColno;
00066 };
00067 
00068 #endif
00069 
00070 
00071 
00072 
00073