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 ExecBlockTable_CLASS
00035 #define ExecBlockTable_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 #ifndef WITHOUT_ACS
00123 #include <asdmIDLC.h>
00124 using asdmIDL::ExecBlockTableIDL;
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 ExecBlockRow;
00321 class ExecBlockTable : public Representable {
00322 friend class asdm::ASDM;
00323
00324 public:
00325
00326
00332 static vector<string> getKeyName();
00333
00334
00335 virtual ~ExecBlockTable();
00336
00342 ASDM &getContainer() const;
00343
00349 unsigned int size() ;
00350
00356 string getName() const;
00357
00361 Entity getEntity() const;
00362
00367 void setEntity(Entity e);
00368
00369
00370
00371
00372
00377 ExecBlockRow *newRow();
00378
00383 ExecBlockRow* newRowEmpty();
00384
00385
00433 ExecBlockRow *newRow(vector<Tag> antennaId, int execBlockNum, string telescopeName, string configName, int numAntenna, Length baseRangeMin, Length baseRangeMax, Length baseRmsMinor, Length baseRmsMajor, Angle basePa, ArrayTimeInterval timeInterval, string observerName, vector<string > observingLog, vector<string > schedulerMode, EntityRef projectId, Angle siteLongitude, Angle siteLatitude, Length siteAltitude, bool flagRow, EntityRef execBlockUID, bool aborted);
00434
00439 ExecBlockRow *newRowFull(vector<Tag> antennaId, int execBlockNum, string telescopeName, string configName, int numAntenna, Length baseRangeMin, Length baseRangeMax, Length baseRmsMinor, Length baseRmsMajor, Angle basePa, ArrayTimeInterval timeInterval, string observerName, vector<string > observingLog, vector<string > schedulerMode, EntityRef projectId, Angle siteLongitude, Angle siteLatitude, Length siteAltitude, bool flagRow, EntityRef execBlockUID, bool aborted);
00440
00441
00454 ExecBlockRow *newRow(ExecBlockRow *row);
00455
00460 ExecBlockRow *newRowCopy(ExecBlockRow *row);
00461
00462
00463
00464
00465
00466
00467
00468
00478 ExecBlockRow* add(ExecBlockRow* x) ;
00479
00480
00481
00482
00483
00484
00485
00491 vector<ExecBlockRow *> get() ;
00492
00493
00494
00495
00496
00506 ExecBlockRow* ExecBlockTable::getRowByKey(Tag execBlockId);
00507
00508
00509
00510
00511
00561 ExecBlockRow* lookup(vector<Tag> antennaId, int execBlockNum, string telescopeName, string configName, int numAntenna, Length baseRangeMin, Length baseRangeMax, Length baseRmsMinor, Length baseRmsMajor, Angle basePa, ArrayTimeInterval timeInterval, string observerName, vector<string > observingLog, vector<string > schedulerMode, EntityRef projectId, Angle siteLongitude, Angle siteLatitude, Length siteAltitude, bool flagRow, EntityRef execBlockUID, bool aborted);
00562
00563
00564 #ifndef WITHOUT_ACS
00565
00571 ExecBlockTableIDL *toIDL() ;
00572 #endif
00573
00574 #ifndef WITHOUT_ACS
00575
00581 void fromIDL(ExecBlockTableIDL x) throw(DuplicateKey,ConversionException);
00582 #endif
00583
00587 char *toFITS() const throw(ConversionException);
00588
00592 void fromFITS(char *fits) throw(ConversionException);
00593
00597 string toVOTable() const throw(ConversionException);
00598
00602 void fromVOTable(string vo) throw(ConversionException);
00603
00610 string toXML() throw(ConversionException);
00611
00617 void fromXML(string xmlDoc) throw(ConversionException);
00618
00624 string toMIME();
00625
00632 void setFromMIME(const string & mimeMsg);
00633
00643 void toFile(string directory);
00644
00653 void setFromFile(const string& directory);
00654
00655 private:
00656
00665 ExecBlockTable (ASDM & container);
00666
00667 ASDM & container;
00668
00669 bool archiveAsBin;
00670 bool fileAsBin ;
00671
00672 Entity entity;
00673
00674
00675
00676 map<string,int> noAutoIncIds;
00677 void autoIncrement(string key, ExecBlockRow* x);
00678
00679
00683 static string tableName;
00684
00685
00689 static vector<string> key;
00690
00691
00697 ExecBlockRow* checkAndAdd(ExecBlockRow* x) throw (DuplicateKey, UniquenessViolationException);
00698
00699
00700
00701
00702
00703
00704 vector<ExecBlockRow * > privateRows;
00705
00706
00707
00708 vector<ExecBlockRow *> row;
00709
00710
00711 void error() throw(ConversionException);
00712
00713 };
00714
00715 }
00716
00717 #endif