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 DopplerTable_CLASS
00035
#define DopplerTable_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
#ifndef WITHOUT_ACS
00085
#include <asdmIDLC.h>
00086
using asdmIDL::DopplerTableIDL;
00087
#endif
00088
00089
using asdm::Angle;
00090
using asdm::AngularRate;
00091
using asdm::ArrayTime;
00092
using asdm::Complex;
00093
using asdm::Entity;
00094
using asdm::EntityId;
00095
using asdm::EntityRef;
00096
using asdm::Flux;
00097
using asdm::Frequency;
00098
using asdm::Humidity;
00099
using asdm::Interval;
00100
using asdm::Length;
00101
using asdm::PartId;
00102
using asdm::Pressure;
00103
using asdm::Speed;
00104
using asdm::Tag;
00105
using asdm::Temperature;
00106
00107
using asdm::DuplicateKey;
00108
using asdm::ConversionException;
00109
using asdm::NoSuchRow;
00110
using asdm::DuplicateKey;
00111
00112
#include <Representable.h>
00113
00114
namespace asdm {
00115
00116
00117
00118
00119
class ASDM;
00120
class DopplerRow;
00168 class DopplerTable :
public Representable {
00169
friend class asdm::ASDM;
00170
00171
public:
00172
00173
00179
static vector<string>
getKeyName();
00180
00181
00182
virtual ~
DopplerTable();
00183
00189
ASDM &
getContainer()
const;
00190
00196
unsigned int size() ;
00197
00203 string
getName()
const;
00204
00208
Entity getEntity()
const;
00209
00214
void setEntity(
Entity e);
00215
00216
00217
00218
00219
00224
DopplerRow *
newRow();
00225
00230
DopplerRow*
newRowEmpty();
00231
00232
00244
DopplerRow *
newRow(
int sourceId,
int transitionIndex,
Speed velDef);
00245
00250
DopplerRow *
newRowFull(
int sourceId,
int transitionIndex,
Speed velDef);
00251
00252
00265
DopplerRow *
newRow(
DopplerRow *row);
00266
00271
DopplerRow *
newRowCopy(
DopplerRow *row);
00272
00273
00274
00275
00276
00277
00278
00279
00289
DopplerRow*
add(
DopplerRow* x) ;
00290
00291
00292
00293
00294
00295
00296
00302 vector<DopplerRow *>
get() ;
00303
00304
00305
00306
00307
00319
DopplerRow*
getRowByKey(
int dopplerId,
int sourceId);
00320
00321
00322
00330 vector <DopplerRow *>
getRowByDopplerId(
int);
00331
00332
00333
00347
DopplerRow*
lookup(
int sourceId,
int transitionIndex,
Speed velDef);
00348
00349
00350
#ifndef WITHOUT_ACS
00351
00357 DopplerTableIDL *
toIDL() ;
00358
#endif
00359
00360
#ifndef WITHOUT_ACS
00361
00367
void fromIDL(DopplerTableIDL x)
throw(
DuplicateKey,
ConversionException);
00368
#endif
00369
00373
char *
toFITS()
const throw(
ConversionException);
00374
00378
void fromFITS(
char *fits)
throw(
ConversionException);
00379
00383 string
toVOTable()
const throw(
ConversionException);
00384
00388
void fromVOTable(string vo)
throw(
ConversionException);
00389
00396 string
toXML()
throw(
ConversionException);
00397
00403
void fromXML(string xmlDoc)
throw(
ConversionException);
00404
00410 string
toMIME();
00411
00418
void setFromMIME(
const string & mimeMsg);
00419
00429
void toFile(string directory);
00430
00439
void setFromFile(
const string& directory);
00440
00441
private:
00442
00451
DopplerTable (
ASDM & container);
00452
00453
ASDM & container;
00454
00455
bool archiveAsBin;
00456
bool fileAsBin ;
00457
00458
Entity entity;
00459
00460
00461
00462 map<string,int> noAutoIncIds;
00463
void autoIncrement(string key,
DopplerRow* x);
00464
00465
00469
static string tableName;
00470
00471
00475
static vector<string> key;
00476
00477
00483
DopplerRow* checkAndAdd(
DopplerRow* x)
throw (
DuplicateKey,
UniquenessViolationException);
00484
00485
00486
00487
00488
00489
00490 vector<DopplerRow * > privateRows;
00491
00492
00493
00494 vector<DopplerRow *> row;
00495
00496
00497
void error()
throw(
ConversionException);
00498
00499 };
00500
00501 }
00502
00503
#endif