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 ReceiverTable_CLASS
00035 #define ReceiverTable_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 #include "CReceiverBand.h"
00085 using namespace ReceiverBandMod;
00086
00087
00088
00089
00090
00091 #include "CReceiverSideband.h"
00092 using namespace ReceiverSidebandMod;
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104
00105
00106
00107
00108
00109
00110 #ifndef WITHOUT_ACS
00111 #include <asdmIDLC.h>
00112 using asdmIDL::ReceiverTableIDL;
00113 #endif
00114
00115 using asdm::Angle;
00116 using asdm::AngularRate;
00117 using asdm::ArrayTime;
00118 using asdm::Complex;
00119 using asdm::Entity;
00120 using asdm::EntityId;
00121 using asdm::EntityRef;
00122 using asdm::Flux;
00123 using asdm::Frequency;
00124 using asdm::Humidity;
00125 using asdm::Interval;
00126 using asdm::Length;
00127 using asdm::PartId;
00128 using asdm::Pressure;
00129 using asdm::Speed;
00130 using asdm::Tag;
00131 using asdm::Temperature;
00132
00133 using asdm::DuplicateKey;
00134 using asdm::ConversionException;
00135 using asdm::NoSuchRow;
00136 using asdm::DuplicateKey;
00137
00138 #include <Representable.h>
00139
00140 namespace asdm {
00141
00142
00143
00144
00145 class ASDM;
00146 class ReceiverRow;
00259 class ReceiverTable : public Representable {
00260 friend class asdm::ASDM;
00261
00262 public:
00263
00264
00270 static vector<string> getKeyName();
00271
00272
00273 virtual ~ReceiverTable();
00274
00280 ASDM &getContainer() const;
00281
00287 unsigned int size() ;
00288
00294 string getName() const;
00295
00299 Entity getEntity() const;
00300
00305 void setEntity(Entity e);
00306
00307
00308
00309
00310
00315 ReceiverRow *newRow();
00316
00321 ReceiverRow* newRowEmpty();
00322
00323
00351 ReceiverRow *newRow(Tag spectralWindowId, ArrayTimeInterval timeInterval, int numLo, string name, ReceiverBand frequencyBand, vector<Frequency > freqLo, ReceiverSideband receiverSideband, vector<int > sidebandLo, Temperature tDewar, Interval stabilityDuration, double stability);
00352
00357 ReceiverRow *newRowFull(Tag spectralWindowId, ArrayTimeInterval timeInterval, int numLo, string name, ReceiverBand frequencyBand, vector<Frequency > freqLo, ReceiverSideband receiverSideband, vector<int > sidebandLo, Temperature tDewar, Interval stabilityDuration, double stability);
00358
00359
00372 ReceiverRow *newRow(ReceiverRow *row);
00373
00378 ReceiverRow *newRowCopy(ReceiverRow *row);
00379
00380
00381
00382
00383
00384
00385
00386
00387
00397 ReceiverRow* add(ReceiverRow* x) ;
00398
00399
00400
00401
00402
00403
00404
00410 vector<ReceiverRow *> get() ;
00411
00412
00420 vector <ReceiverRow*> *getByContext(Tag spectralWindowId);
00421
00422
00423
00424
00425
00439 ReceiverRow* ReceiverTable::getRowByKey(int receiverId, Tag spectralWindowId, ArrayTimeInterval timeInterval);
00440
00441
00442
00450 vector <ReceiverRow *> ReceiverTable::getRowByReceiverId(int);
00451
00452
00453
00483 ReceiverRow* lookup(Tag spectralWindowId, ArrayTimeInterval timeInterval, int numLo, string name, ReceiverBand frequencyBand, vector<Frequency > freqLo, ReceiverSideband receiverSideband, vector<int > sidebandLo, Temperature tDewar, Interval stabilityDuration, double stability);
00484
00485
00486 #ifndef WITHOUT_ACS
00487
00493 ReceiverTableIDL *toIDL() ;
00494 #endif
00495
00496 #ifndef WITHOUT_ACS
00497
00503 void fromIDL(ReceiverTableIDL x) throw(DuplicateKey,ConversionException);
00504 #endif
00505
00509 char *toFITS() const throw(ConversionException);
00510
00514 void fromFITS(char *fits) throw(ConversionException);
00515
00519 string toVOTable() const throw(ConversionException);
00520
00524 void fromVOTable(string vo) throw(ConversionException);
00525
00532 string toXML() throw(ConversionException);
00533
00539 void fromXML(string xmlDoc) throw(ConversionException);
00540
00546 string toMIME();
00547
00554 void setFromMIME(const string & mimeMsg);
00555
00565 void toFile(string directory);
00566
00575 void setFromFile(const string& directory);
00576
00577 private:
00578
00587 ReceiverTable (ASDM & container);
00588
00589 ASDM & container;
00590
00591 bool archiveAsBin;
00592 bool fileAsBin ;
00593
00594 Entity entity;
00595
00596
00597
00601 static string tableName;
00602
00603
00607 static vector<string> key;
00608
00609
00615 ReceiverRow* checkAndAdd(ReceiverRow* x) throw (DuplicateKey, UniquenessViolationException);
00616
00617
00618
00619
00627 ReceiverRow * insertByStartTime(ReceiverRow* x, vector<ReceiverRow* >& row);
00628
00629
00630
00631
00632
00633
00634 vector<ReceiverRow * > privateRows;
00635
00636
00637
00638
00639
00640
00641
00642
00643 typedef vector <vector <ReceiverRow* > > ID_TIME_ROWS;
00644 map<string, ID_TIME_ROWS > context;
00645
00650 string Key(Tag spectralWindowId) ;
00651
00652
00653
00654
00660 void getByKeyNoAutoIncNoTime(vector <ReceiverRow*>& vin, vector <ReceiverRow*>& vout, Tag spectralWindowId);
00661
00662
00663
00664 void error() throw(ConversionException);
00665
00666 };
00667
00668 }
00669
00670 #endif