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 PointingTable_CLASS
00035 #define PointingTable_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 #ifndef WITHOUT_ACS
00070 #include <asdmIDLC.h>
00071 using asdmIDL::PointingTableIDL;
00072 #endif
00073
00074 using asdm::Angle;
00075 using asdm::AngularRate;
00076 using asdm::ArrayTime;
00077 using asdm::Complex;
00078 using asdm::Entity;
00079 using asdm::EntityId;
00080 using asdm::EntityRef;
00081 using asdm::Flux;
00082 using asdm::Frequency;
00083 using asdm::Humidity;
00084 using asdm::Interval;
00085 using asdm::Length;
00086 using asdm::PartId;
00087 using asdm::Pressure;
00088 using asdm::Speed;
00089 using asdm::Tag;
00090 using asdm::Temperature;
00091
00092 using asdm::DuplicateKey;
00093 using asdm::ConversionException;
00094 using asdm::NoSuchRow;
00095 using asdm::DuplicateKey;
00096
00097 #include <Representable.h>
00098
00099 namespace asdm {
00100
00101
00102
00103
00104 class ASDM;
00105 class PointingRow;
00213 class PointingTable : public Representable {
00214 friend class asdm::ASDM;
00215
00216 public:
00217
00218
00224 static vector<string> getKeyName();
00225
00226
00227 virtual ~PointingTable();
00228
00234 ASDM &getContainer() const;
00235
00241 unsigned int size() ;
00242
00248 string getName() const;
00249
00253 Entity getEntity() const;
00254
00259 void setEntity(Entity e);
00260
00261
00262
00263
00264
00269 PointingRow *newRow();
00270
00275 PointingRow* newRowEmpty();
00276
00302 PointingRow *newRow(Tag antennaId, ArrayTimeInterval timeInterval, int pointingModelId, int numPoly, ArrayTime timeOrigin, vector<vector<Angle > > pointingDirection, vector<vector<Angle > > target, vector<vector<Angle > > offset, vector<Angle > encoder, bool pointingTracking);
00303
00308 PointingRow *newRowFull(Tag antennaId, ArrayTimeInterval timeInterval, int pointingModelId, int numPoly, ArrayTime timeOrigin, vector<vector<Angle > > pointingDirection, vector<vector<Angle > > target, vector<vector<Angle > > offset, vector<Angle > encoder, bool pointingTracking);
00309
00322 PointingRow *newRow(PointingRow *row);
00323
00328 PointingRow *newRowCopy(PointingRow *row);
00329
00330
00331
00332
00333
00334
00351 PointingRow* add(PointingRow* x) ;
00352
00353
00354
00355
00356
00362 vector<PointingRow *> get() ;
00363
00364
00372 vector <PointingRow*> *getByContext(Tag antennaId);
00373
00374
00375
00376
00377
00389 PointingRow* PointingTable::getRowByKey(Tag antennaId, ArrayTimeInterval timeInterval);
00390
00391
00392 #ifndef WITHOUT_ACS
00393
00399 PointingTableIDL *toIDL() ;
00400 #endif
00401
00402 #ifndef WITHOUT_ACS
00403
00409 void fromIDL(PointingTableIDL x) throw(DuplicateKey,ConversionException);
00410 #endif
00411
00415 char *toFITS() const throw(ConversionException);
00416
00420 void fromFITS(char *fits) throw(ConversionException);
00421
00425 string toVOTable() const throw(ConversionException);
00426
00430 void fromVOTable(string vo) throw(ConversionException);
00431
00438 string toXML() throw(ConversionException);
00439
00447 void fromXML(string xmlDoc) throw(ConversionException);
00448
00454 string toMIME();
00455
00462 void setFromMIME(const string & mimeMsg);
00463
00472 void toFile(string directory);
00473
00482 void setFromFile(const string& directory);
00483
00484 private:
00485
00494 PointingTable (ASDM & container);
00495
00496 ASDM & container;
00497
00498 bool archiveAsBin;
00499 bool fileAsBin ;
00500
00501 Entity entity;
00502
00503
00504
00508 static string tableName;
00509
00510
00514 static vector<string> key;
00515
00516
00522 PointingRow* checkAndAdd(PointingRow* x) throw (DuplicateKey);
00523
00524
00532 PointingRow * insertByStartTime(PointingRow* x, vector<PointingRow* >& row);
00533
00534
00535
00536
00537
00538 vector<PointingRow * > privateRows;
00539
00540
00541
00542
00543
00544
00545
00546
00547 typedef vector <PointingRow* > TIME_ROWS;
00548 map<string, TIME_ROWS > context;
00549
00554 string Key(Tag antennaId) ;
00555
00556 void error() throw(ConversionException);
00557
00558 };
00559
00560 }
00561
00562 #endif