TimeSeriesData.cpp

Go to the documentation of this file.
00001 #include "TimeSeriesData.h"
00002 #include "BirrpAsciiFormat.h"
00003 #include "MtuFormat.h"
00004 #include "CsvFormat.h"
00005 #include "LemiTsFormat.h"
00006 #include "CFatalException.h"
00007 #include "convert.h"
00008 #include "Util.h"
00009 #include <iostream>
00010 
00011 using namespace std;
00012 TimeSeriesData::TimeSeriesData()
00013 {
00014 }
00015 
00016 TimeSeriesData::~TimeSeriesData()
00017 {
00018 }
00019 
00020 
00021 void TimeSeriesData::GetData(std::string filename)
00022 {
00023         string ending;
00024         
00025         ending = GetFileExtension(filename); 
00026         if ( ending == ".ts3" || ending == ".TS3" || ending == ".ts4" || 
00027                 ending == ".TS4" || ending == ".ts5" || ending == ".TS5")
00028                 {
00029                         Data = boost::shared_ptr<TimeSeries>(new MtuFormat);
00030                         datatype = mtu;
00031                 }
00032         else
00033                 if (ending == ".asc")
00034                 {
00035                         Data = boost::shared_ptr<TimeSeries>(new BirrpAsciiFormat);
00036                         datatype = birrp;
00037                 }
00038                 else 
00039                         if (ending == ".csv")
00040                         {
00041                                 Data =  boost::shared_ptr<TimeSeries>(new CsvFormat);
00042                                 datatype = csv;
00043                         }       
00044                         else 
00045                                 if (ending == ".lem")
00046                                 {
00047                                         Data =  boost::shared_ptr<TimeSeries>(new LemiTsFormat);
00048                                         datatype = lemi;
00049                                 }
00050                                 else
00051                                         {
00052                                          datatype= tsunknown;
00053                                          throw CFatalException( "Unknown data format or file does not exist : " + filename);
00054                                         }
00055         name = filename;
00056         unsigned int dotpos = name.find('.',0);
00057     if (dotpos != string::npos)
00058                 name.erase(dotpos);
00059         Data->GetData(filename);
00060 }
00061 
00062 TimeSeriesData& TimeSeriesData::operator=(const TimeSeriesData& source)
00063 {
00064         if (this != &source)
00065         {
00066                 this->Data = source.Data;
00067         }
00068         return *this;
00069 }
00070 
00071 void TimeSeriesData::WriteAsMtu(std::string filename_base)
00072 {
00073         if (datatype == mtu)
00074         {
00075                 switch (int(Data->GetSamplerate()))
00076                 {       
00077                         case 2400:
00078                                 Data->WriteData(filename_base+".ts3");
00079                                 break;
00080                         case 150:
00081                                 Data->WriteData(filename_base+".ts4");
00082                                 break;                  
00083                         case 15:
00084                                 Data->WriteData(filename_base+".ts5");
00085                                 break;
00086                         default:
00087                                 throw CFatalException("Unknown samplerate ! Cannot write file. Value is: "+stringify(Data->GetSamplerate()));
00088                                 break;
00089                 }       
00090         }
00091         else
00092         {
00093                 throw CFatalException("Data conversion not implemented yet ! ");
00094         }
00095 }
00096         
00097 void TimeSeriesData::WriteAsBirrp(std:: string filename_base)
00098 {
00099         //return static_cast<CBirrpAsciiFormat*>(Data)->WriteData(filename_base+".asc");
00100         if (datatype == birrp)
00101                 Data->WriteData(filename_base+".asc");
00102         else
00103         {
00104                 BirrpAsciiFormat BirrpData;
00105                 BirrpData = *Data;
00106                 BirrpData.WriteData(filename_base+".asc");
00107         }       
00108 }
00109 
00110 void TimeSeriesData::WriteAsLemi(std::string filename_base)
00111 {
00112         if (datatype == lemi)
00113                 Data->WriteData(filename_base+".lem");
00114         else
00115         {
00116                 LemiTsFormat LemiData;
00117                 LemiData = *Data;
00118                 LemiData.WriteData(filename_base+".lem");
00119         }
00120 }
00121 
00122 void TimeSeriesData::WriteAsCsv(std:: string filename_base)
00123 {
00124         throw CFatalException("Csv write not implemented yet ! ");
00125 }
00126 
00127 void TimeSeriesData::WriteBack(std:: string filename_base)
00128 {
00129         switch (datatype)
00130           {
00131             case lemi:
00132                 WriteAsLemi(filename_base);
00133               break;
00134             case birrp:
00135               WriteAsBirrp(filename_base);
00136               break;
00137             case mtu:
00138               WriteAsMtu(filename_base);
00139               break;
00140             case csv:
00141               WriteAsCsv(filename_base);
00142               break;
00143             default:
00144                 throw CFatalException("Cannot write back data ! Unknown datatype !");
00145               break;
00146           }
00147 }

Generated on Fri Jul 4 15:30:21 2008 for GPLIB++ by  doxygen 1.5.5