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 CalDataTable_CLASS
00035 #define CalDataTable_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 #include "CCalType.h"
00087 using namespace CalTypeMod;
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104
00105 #include "CScanIntent.h"
00106 using namespace ScanIntentMod;
00107
00108
00109
00110
00111
00112 #include "CAssociatedCalNature.h"
00113 using namespace AssociatedCalNatureMod;
00114
00115
00116
00117 #include "CCalDataOrigin.h"
00118 using namespace CalDataOriginMod;
00119
00120
00121
00122 #ifndef WITHOUT_ACS
00123 #include <asdmIDLC.h>
00124 using asdmIDL::CalDataTableIDL;
00125 #endif
00126
00127 using asdm::Angle;
00128 using asdm::AngularRate;
00129 using asdm::ArrayTime;
00130 using asdm::Complex;
00131 using asdm::Entity;
00132 using asdm::EntityId;
00133 using asdm::EntityRef;
00134 using asdm::Flux;
00135 using asdm::Frequency;
00136 using asdm::Humidity;
00137 using asdm::Interval;
00138 using asdm::Length;
00139 using asdm::PartId;
00140 using asdm::Pressure;
00141 using asdm::Speed;
00142 using asdm::Tag;
00143 using asdm::Temperature;
00144
00145 using asdm::DuplicateKey;
00146 using asdm::ConversionException;
00147 using asdm::NoSuchRow;
00148 using asdm::DuplicateKey;
00149
00150 #include <Representable.h>
00151
00152 namespace asdm {
00153
00154
00155
00156
00157 class ASDM;
00158 class CalDataRow;
00279 class CalDataTable : public Representable {
00280 friend class asdm::ASDM;
00281
00282 public:
00283
00284
00290 static vector<string> getKeyName();
00291
00292
00293 virtual ~CalDataTable();
00294
00300 ASDM &getContainer() const;
00301
00307 unsigned int size() ;
00308
00314 string getName() const;
00315
00319 Entity getEntity() const;
00320
00325 void setEntity(Entity e);
00326
00327
00328
00329
00330
00335 CalDataRow *newRow();
00336
00341 CalDataRow* newRowEmpty();
00342
00343
00361 CalDataRow *newRow(int numScan, vector<int > scanSet, CalType calType, ArrayTime startTimeObserved, ArrayTime endTimeObserved, CalDataOrigin calDataType);
00362
00367 CalDataRow *newRowFull(int numScan, vector<int > scanSet, CalType calType, ArrayTime startTimeObserved, ArrayTime endTimeObserved, CalDataOrigin calDataType);
00368
00369
00382 CalDataRow *newRow(CalDataRow *row);
00383
00388 CalDataRow *newRowCopy(CalDataRow *row);
00389
00390
00391
00392
00393
00394
00395
00396
00406 CalDataRow* add(CalDataRow* x) ;
00407
00408
00409
00410
00411
00412
00413
00419 vector<CalDataRow *> get() ;
00420
00421
00422
00423
00424
00434 CalDataRow* CalDataTable::getRowByKey(Tag calDataId);
00435
00436
00437
00438
00439
00459 CalDataRow* lookup(int numScan, vector<int > scanSet, CalType calType, ArrayTime startTimeObserved, ArrayTime endTimeObserved, CalDataOrigin calDataType);
00460
00461
00462 #ifndef WITHOUT_ACS
00463
00469 CalDataTableIDL *toIDL() ;
00470 #endif
00471
00472 #ifndef WITHOUT_ACS
00473
00479 void fromIDL(CalDataTableIDL x) throw(DuplicateKey,ConversionException);
00480 #endif
00481
00485 char *toFITS() const throw(ConversionException);
00486
00490 void fromFITS(char *fits) throw(ConversionException);
00491
00495 string toVOTable() const throw(ConversionException);
00496
00500 void fromVOTable(string vo) throw(ConversionException);
00501
00508 string toXML() throw(ConversionException);
00509
00515 void fromXML(string xmlDoc) throw(ConversionException);
00516
00522 string toMIME();
00523
00530 void setFromMIME(const string & mimeMsg);
00531
00541 void toFile(string directory);
00542
00551 void setFromFile(const string& directory);
00552
00553 private:
00554
00563 CalDataTable (ASDM & container);
00564
00565 ASDM & container;
00566
00567 bool archiveAsBin;
00568 bool fileAsBin ;
00569
00570 Entity entity;
00571
00572
00573
00574 map<string,int> noAutoIncIds;
00575 void autoIncrement(string key, CalDataRow* x);
00576
00577
00581 static string tableName;
00582
00583
00587 static vector<string> key;
00588
00589
00595 CalDataRow* checkAndAdd(CalDataRow* x) throw (DuplicateKey, UniquenessViolationException);
00596
00597
00598
00599
00600
00601
00602 vector<CalDataRow * > privateRows;
00603
00604
00605
00606 vector<CalDataRow *> row;
00607
00608
00609 void error() throw(ConversionException);
00610
00611 };
00612
00613 }
00614
00615 #endif