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
00026
00027
00028
00029
00030
00031
00032
00033
00034 #ifndef DopplerTable_CLASS
00035 #define DopplerTable_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
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084 #ifndef WITHOUT_ACS
00085 #include <asdmIDLC.h>
00086 using asdmIDL::DopplerTableIDL;
00087 #endif
00088
00089 using asdm::Angle;
00090 using asdm::AngularRate;
00091 using asdm::ArrayTime;
00092 using asdm::Complex;
00093 using asdm::Entity;
00094 using asdm::EntityId;
00095 using asdm::EntityRef;
00096 using asdm::Flux;
00097 using asdm::Frequency;
00098 using asdm::Humidity;
00099 using asdm::Interval;
00100 using asdm::Length;
00101 using asdm::PartId;
00102 using asdm::Pressure;
00103 using asdm::Speed;
00104 using asdm::Tag;
00105 using asdm::Temperature;
00106
00107 using asdm::DuplicateKey;
00108 using asdm::ConversionException;
00109 using asdm::NoSuchRow;
00110 using asdm::DuplicateKey;
00111
00112 #include <Representable.h>
00113
00114 namespace asdm {
00115
00116
00117
00118
00119 class ASDM;
00120 class DopplerRow;
00168 class DopplerTable : public Representable {
00169 friend class asdm::ASDM;
00170
00171 public:
00172
00173
00179 static vector<string> getKeyName();
00180
00181
00182 virtual ~DopplerTable();
00183
00189 ASDM &getContainer() const;
00190
00196 unsigned int size() ;
00197
00203 string getName() const;
00204
00208 Entity getEntity() const;
00209
00214 void setEntity(Entity e);
00215
00216
00217
00218
00219
00224 DopplerRow *newRow();
00225
00230 DopplerRow* newRowEmpty();
00231
00232
00244 DopplerRow *newRow(int sourceId, int transitionIndex, Speed velDef);
00245
00250 DopplerRow *newRowFull(int sourceId, int transitionIndex, Speed velDef);
00251
00252
00265 DopplerRow *newRow(DopplerRow *row);
00266
00271 DopplerRow *newRowCopy(DopplerRow *row);
00272
00273
00274
00275
00276
00277
00278
00279
00289 DopplerRow* add(DopplerRow* x) ;
00290
00291
00292
00293
00294
00295
00296
00302 vector<DopplerRow *> get() ;
00303
00304
00305
00306
00307
00319 DopplerRow* DopplerTable::getRowByKey(int dopplerId, int sourceId);
00320
00321
00322
00330 vector <DopplerRow *> DopplerTable::getRowByDopplerId(int);
00331
00332
00333
00347 DopplerRow* lookup(int sourceId, int transitionIndex, Speed velDef);
00348
00349
00350 #ifndef WITHOUT_ACS
00351
00357 DopplerTableIDL *toIDL() ;
00358 #endif
00359
00360 #ifndef WITHOUT_ACS
00361
00367 void fromIDL(DopplerTableIDL x) throw(DuplicateKey,ConversionException);
00368 #endif
00369
00373 char *toFITS() const throw(ConversionException);
00374
00378 void fromFITS(char *fits) throw(ConversionException);
00379
00383 string toVOTable() const throw(ConversionException);
00384
00388 void fromVOTable(string vo) throw(ConversionException);
00389
00396 string toXML() throw(ConversionException);
00397
00403 void fromXML(string xmlDoc) throw(ConversionException);
00404
00410 string toMIME();
00411
00418 void setFromMIME(const string & mimeMsg);
00419
00429 void toFile(string directory);
00430
00439 void setFromFile(const string& directory);
00440
00441 private:
00442
00451 DopplerTable (ASDM & container);
00452
00453 ASDM & container;
00454
00455 bool archiveAsBin;
00456 bool fileAsBin ;
00457
00458 Entity entity;
00459
00460
00461
00462 map<string,int> noAutoIncIds;
00463 void autoIncrement(string key, DopplerRow* x);
00464
00465
00469 static string tableName;
00470
00471
00475 static vector<string> key;
00476
00477
00483 DopplerRow* checkAndAdd(DopplerRow* x) throw (DuplicateKey, UniquenessViolationException);
00484
00485
00486
00487
00488
00489
00490 vector<DopplerRow * > privateRows;
00491
00492
00493
00494 vector<DopplerRow *> row;
00495
00496
00497 void error() throw(ConversionException);
00498
00499 };
00500
00501 }
00502
00503 #endif