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 SysCalTable_CLASS
00035 #define SysCalTable_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
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104
00105
00106
00107
00108
00109
00110
00111
00112
00113
00114
00115
00116
00117
00118
00119
00120
00121
00122
00123
00124
00125
00126
00127
00128
00129
00130
00131
00132
00133
00134
00135
00136
00137
00138
00139
00140
00141
00142
00143
00144
00145
00146
00147
00148
00149
00150
00151
00152
00153
00154
00155
00156
00157
00158
00159
00160
00161
00162
00163
00164
00165
00166
00167
00168 #ifndef WITHOUT_ACS
00169 #include <asdmIDLC.h>
00170 using asdmIDL::SysCalTableIDL;
00171 #endif
00172
00173 using asdm::Angle;
00174 using asdm::AngularRate;
00175 using asdm::ArrayTime;
00176 using asdm::Complex;
00177 using asdm::Entity;
00178 using asdm::EntityId;
00179 using asdm::EntityRef;
00180 using asdm::Flux;
00181 using asdm::Frequency;
00182 using asdm::Humidity;
00183 using asdm::Interval;
00184 using asdm::Length;
00185 using asdm::PartId;
00186 using asdm::Pressure;
00187 using asdm::Speed;
00188 using asdm::Tag;
00189 using asdm::Temperature;
00190
00191 using asdm::DuplicateKey;
00192 using asdm::ConversionException;
00193 using asdm::NoSuchRow;
00194 using asdm::DuplicateKey;
00195
00196 #include <Representable.h>
00197
00198 namespace asdm {
00199
00200
00201
00202
00203 class ASDM;
00204 class SysCalRow;
00520 class SysCalTable : public Representable {
00521 friend class asdm::ASDM;
00522
00523 public:
00524
00525
00531 static vector<string> getKeyName();
00532
00533
00534 virtual ~SysCalTable();
00535
00541 ASDM &getContainer() const;
00542
00548 unsigned int size() ;
00549
00555 string getName() const;
00556
00560 Entity getEntity() const;
00561
00566 void setEntity(Entity e);
00567
00568
00569
00570
00571
00576 SysCalRow *newRow();
00577
00582 SysCalRow* newRowEmpty();
00583
00584
00598 SysCalRow *newRow(Tag antennaId, int feedId, Tag spectralWindowId, ArrayTimeInterval timeInterval);
00599
00604 SysCalRow *newRowFull(Tag antennaId, int feedId, Tag spectralWindowId, ArrayTimeInterval timeInterval);
00605
00606
00619 SysCalRow *newRow(SysCalRow *row);
00620
00625 SysCalRow *newRowCopy(SysCalRow *row);
00626
00627
00628
00629
00630
00631
00648 SysCalRow* add(SysCalRow* x) ;
00649
00650
00651
00652
00653
00654
00655
00656
00657
00663 vector<SysCalRow *> get() ;
00664
00665
00673 vector <SysCalRow*> *getByContext(Tag antennaId, int feedId, Tag spectralWindowId);
00674
00675
00676
00677
00678
00694 SysCalRow* SysCalTable::getRowByKey(Tag antennaId, int feedId, Tag spectralWindowId, ArrayTimeInterval timeInterval);
00695
00696
00697
00698
00699
00715 SysCalRow* lookup(Tag antennaId, int feedId, Tag spectralWindowId, ArrayTimeInterval timeInterval);
00716
00717
00718 #ifndef WITHOUT_ACS
00719
00725 SysCalTableIDL *toIDL() ;
00726 #endif
00727
00728 #ifndef WITHOUT_ACS
00729
00735 void fromIDL(SysCalTableIDL x) throw(DuplicateKey,ConversionException);
00736 #endif
00737
00741 char *toFITS() const throw(ConversionException);
00742
00746 void fromFITS(char *fits) throw(ConversionException);
00747
00751 string toVOTable() const throw(ConversionException);
00752
00756 void fromVOTable(string vo) throw(ConversionException);
00757
00764 string toXML() throw(ConversionException);
00765
00771 void fromXML(string xmlDoc) throw(ConversionException);
00772
00778 string toMIME();
00779
00786 void setFromMIME(const string & mimeMsg);
00787
00797 void toFile(string directory);
00798
00807 void setFromFile(const string& directory);
00808
00809 private:
00810
00819 SysCalTable (ASDM & container);
00820
00821 ASDM & container;
00822
00823 bool archiveAsBin;
00824 bool fileAsBin ;
00825
00826 Entity entity;
00827
00828
00829
00833 static string tableName;
00834
00835
00839 static vector<string> key;
00840
00841
00847 SysCalRow* checkAndAdd(SysCalRow* x) throw (DuplicateKey);
00848
00849
00850
00851
00859 SysCalRow * insertByStartTime(SysCalRow* x, vector<SysCalRow* >& row);
00860
00861
00862
00863
00864
00865
00866 vector<SysCalRow * > privateRows;
00867
00868
00869
00870
00871
00872
00873
00874
00875 typedef vector <SysCalRow* > TIME_ROWS;
00876 map<string, TIME_ROWS > context;
00877
00882 string Key(Tag antennaId, int feedId, Tag spectralWindowId) ;
00883
00884
00885
00886
00892 void getByKeyNoAutoIncNoTime(vector <SysCalRow*>& vin, vector <SysCalRow*>& vout, Tag antennaId, int feedId, Tag spectralWindowId);
00893
00894
00895
00896 void error() throw(ConversionException);
00897
00898 };
00899
00900 }
00901
00902 #endif