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*
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