WeatherTable.h

00001 
00002 /*
00003  * ALMA - Atacama Large Millimeter Array
00004  * (c) European Southern Observatory, 2002
00005  * (c) Associated Universities Inc., 2002
00006  * Copyright by ESO (in the framework of the ALMA collaboration),
00007  * Copyright by AUI (in the framework of the ALMA collaboration),
00008  * All rights reserved.
00009  * 
00010  * This library is free software; you can redistribute it and/or
00011  * modify it under the terms of the GNU Lesser General Public
00012  * License as published by the Free software Foundation; either
00013  * version 2.1 of the License, or (at your option) any later version.
00014  * 
00015  * This library is distributed in the hope that it will be useful,
00016  * but WITHOUT ANY WARRANTY, without even the implied warranty of
00017  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00018  * Lesser General Public License for more details.
00019  * 
00020  * You should have received a copy of the GNU Lesser General Public
00021  * License along with this library; if not, write to the Free Software
00022  * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
00023  * MA 02111-1307  USA
00024  *
00025  * Warning!
00026  *  -------------------------------------------------------------------- 
00027  * | This is generated code!  Do not modify this file.                  |
00028  * | If you do, all changes will be lost when the file is re-generated. |
00029  *  --------------------------------------------------------------------
00030  *
00031  * File WeatherTable.h
00032  */
00033  
00034 #ifndef WeatherTable_CLASS
00035 #define WeatherTable_CLASS
00036 
00037 #include <string>
00038 #include <vector>
00039 #include <map>
00040 #include <set>
00041 using std::string;
00042 using std::vector;
00043 using std::map;
00044 
00045 #include <Angle.h>
00046 #include <AngularRate.h>
00047 #include <ArrayTime.h>
00048 #include <ArrayTimeInterval.h>
00049 #include <Complex.h>
00050 #include <Entity.h>
00051 #include <EntityId.h>
00052 #include <EntityRef.h>
00053 #include <Flux.h>
00054 #include <Frequency.h>
00055 #include <Humidity.h>
00056 #include <Interval.h>
00057 #include <Length.h>
00058 #include <PartId.h>
00059 #include <Pressure.h>
00060 #include <Speed.h>
00061 #include <Tag.h>
00062 #include <Temperature.h>
00063 #include <ConversionException.h>
00064 #include <DuplicateKey.h>
00065 #include <UniquenessViolationException.h>
00066 #include <NoSuchRow.h>
00067 #include <DuplicateKey.h>
00068 
00069 /*
00070 #include <Enumerations.h>
00071 using namespace enumerations;
00072 */
00073 
00074 
00075 
00076 
00077         
00078 
00079         
00080 
00081         
00082 
00083         
00084 
00085         
00086 
00087         
00088 
00089         
00090 
00091         
00092 
00093         
00094 
00095         
00096 
00097         
00098 
00099         
00100 
00101         
00102 
00103         
00104 
00105         
00106 
00107 
00108 #ifndef WITHOUT_ACS
00109 #include <asdmIDLC.h>
00110 using asdmIDL::WeatherTableIDL;
00111 #endif
00112 
00113 using asdm::Angle;
00114 using asdm::AngularRate;
00115 using asdm::ArrayTime;
00116 using asdm::Complex;
00117 using asdm::Entity;
00118 using asdm::EntityId;
00119 using asdm::EntityRef;
00120 using asdm::Flux;
00121 using asdm::Frequency;
00122 using asdm::Humidity;
00123 using asdm::Interval;
00124 using asdm::Length;
00125 using asdm::PartId;
00126 using asdm::Pressure;
00127 using asdm::Speed;
00128 using asdm::Tag;
00129 using asdm::Temperature;
00130 
00131 using asdm::DuplicateKey;
00132 using asdm::ConversionException;
00133 using asdm::NoSuchRow;
00134 using asdm::DuplicateKey;
00135 
00136 #include <Representable.h>
00137 
00138 namespace asdm {
00139 
00140 //class asdm::ASDM;
00141 //class asdm::WeatherRow;
00142 
00143 class ASDM;
00144 class WeatherRow;
00267 class WeatherTable : public Representable {
00268         friend class asdm::ASDM;
00269 
00270 public:
00271 
00272 
00278         static vector<string> getKeyName();
00279 
00280 
00281         virtual ~WeatherTable();
00282         
00288         ASDM &getContainer() const;
00289         
00295         unsigned int size() ;
00296         
00302         string getName() const;
00303 
00307         Entity getEntity() const;
00308 
00313         void setEntity(Entity e);
00314 
00315         //
00316         // ====> Row creation.
00317         //
00318         
00323         WeatherRow *newRow();
00324         
00329         WeatherRow* newRowEmpty();
00330 
00331         
00365         WeatherRow *newRow(Tag stationId, ArrayTimeInterval timeInterval, Pressure pressure, Humidity relHumidity, Temperature temperature, Angle windDirection, Speed windSpeed, Speed windMax, bool pressureFlag, bool relHumidityFlag, bool temperatureFlag, bool windDirectionFlag, bool windSpeedFlag, bool windMaxFlag);
00366         
00371         WeatherRow *newRowFull(Tag stationId, ArrayTimeInterval timeInterval, Pressure pressure, Humidity relHumidity, Temperature temperature, Angle windDirection, Speed windSpeed, Speed windMax, bool pressureFlag, bool relHumidityFlag, bool temperatureFlag, bool windDirectionFlag, bool windSpeedFlag, bool windMaxFlag);
00372 
00373 
00386          WeatherRow *newRow(WeatherRow *row); 
00387 
00392          WeatherRow *newRowCopy(WeatherRow *row); 
00393 
00394         //
00395         // ====> Append a row to its table.
00396         //
00397  
00398         
00415         WeatherRow* add(WeatherRow* x) ; 
00416 
00417  
00418 
00419 
00420 
00421         //
00422         // ====> Methods returning rows.
00423         //
00424                 
00430         vector<WeatherRow *> get() ;
00431         
00432 
00440          vector <WeatherRow*> *getByContext(Tag stationId);
00441          
00442 
00443 
00444  
00445         
00457         WeatherRow* WeatherTable::getRowByKey(Tag stationId, ArrayTimeInterval timeInterval);
00458 
00459                 
00460 
00461 
00462 
00498         WeatherRow* lookup(Tag stationId, ArrayTimeInterval timeInterval, Pressure pressure, Humidity relHumidity, Temperature temperature, Angle windDirection, Speed windSpeed, Speed windMax, bool pressureFlag, bool relHumidityFlag, bool temperatureFlag, bool windDirectionFlag, bool windSpeedFlag, bool windMaxFlag); 
00499 
00500 
00501 #ifndef WITHOUT_ACS
00502         // Conversion Methods
00508         WeatherTableIDL *toIDL() ;
00509 #endif
00510 
00511 #ifndef WITHOUT_ACS
00512 
00518         void fromIDL(WeatherTableIDL x) throw(DuplicateKey,ConversionException);
00519 #endif
00520 
00524         char *toFITS() const throw(ConversionException);
00525 
00529         void fromFITS(char *fits) throw(ConversionException);
00530 
00534         string toVOTable() const throw(ConversionException);
00535 
00539         void fromVOTable(string vo) throw(ConversionException);
00540 
00547         string toXML()  throw(ConversionException);
00548         
00554         void fromXML(string xmlDoc) throw(ConversionException);
00555         
00561         string toMIME();
00562         
00569          void setFromMIME(const string & mimeMsg);
00570         
00580           void toFile(string directory);
00581           
00590          void setFromFile(const string& directory);     
00591 
00592 private:
00593 
00602         WeatherTable (ASDM & container);
00603 
00604         ASDM & container;
00605         
00606         bool archiveAsBin; // If true archive binary else archive XML
00607         bool fileAsBin ; // If true file binary else file XML   
00608         
00609         Entity entity;
00610         
00611 
00612 
00616         static string tableName;
00617 
00618 
00622         static vector<string> key;
00623 
00624 
00630         WeatherRow* checkAndAdd(WeatherRow* x) throw (DuplicateKey);
00631 
00632 
00633         
00634         
00642          WeatherRow * insertByStartTime(WeatherRow* x, vector<WeatherRow* >& row);
00643           
00644 
00645 
00646 // A data structure to store the pointers on the table's rows.
00647 
00648 // In all cases we maintain a private ArrayList of WeatherRow s.
00649    vector<WeatherRow * > privateRows;
00650    
00651 
00652         
00653 
00654         
00655         
00656                 
00657                                 
00658         typedef vector <WeatherRow* > TIME_ROWS;
00659         map<string, TIME_ROWS > context;
00660                 
00665          string Key(Tag stationId) ;
00666                  
00667                 
00668         
00669         
00675         void getByKeyNoAutoIncNoTime(vector <WeatherRow*>& vin, vector <WeatherRow*>& vout,  Tag stationId);
00676         
00677 
00678 
00679         void error() throw(ConversionException);
00680 
00681 };
00682 
00683 } // End namespace asdm
00684 
00685 #endif /* WeatherTable_CLASS */

Generated on Thu Nov 29 16:46:47 2007 for ASDM C++ Implementation by  doxygen 1.5.1