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 ReceiverTable_CLASS
00035
#define ReceiverTable_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
#include "CReceiverBand.h"
00085
using namespace ReceiverBandMod;
00086
00087
00088
00089
00090
00091
#include "CReceiverSideband.h"
00092
using namespace ReceiverSidebandMod;
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104
00105
00106
00107
00108
00109
00110
#ifndef WITHOUT_ACS
00111
#include <asdmIDLC.h>
00112
using asdmIDL::ReceiverTableIDL;
00113
#endif
00114
00115
using asdm::Angle;
00116
using asdm::AngularRate;
00117
using asdm::ArrayTime;
00118
using asdm::Complex;
00119
using asdm::Entity;
00120
using asdm::EntityId;
00121
using asdm::EntityRef;
00122
using asdm::Flux;
00123
using asdm::Frequency;
00124
using asdm::Humidity;
00125
using asdm::Interval;
00126
using asdm::Length;
00127
using asdm::PartId;
00128
using asdm::Pressure;
00129
using asdm::Speed;
00130
using asdm::Tag;
00131
using asdm::Temperature;
00132
00133
using asdm::DuplicateKey;
00134
using asdm::ConversionException;
00135
using asdm::NoSuchRow;
00136
using asdm::DuplicateKey;
00137
00138
#include <Representable.h>
00139
00140
namespace asdm {
00141
00142
00143
00144
00145
class ASDM;
00146
class ReceiverRow;
00259 class ReceiverTable :
public Representable {
00260
friend class asdm::ASDM;
00261
00262
public:
00263
00264
00270
static vector<string>
getKeyName();
00271
00272
00273
virtual ~
ReceiverTable();
00274
00280
ASDM &
getContainer()
const;
00281
00287
unsigned int size() ;
00288
00294 string
getName()
const;
00295
00299
Entity getEntity()
const;
00300
00305
void setEntity(
Entity e);
00306
00307
00308
00309
00310
00315
ReceiverRow *
newRow();
00316
00321
ReceiverRow*
newRowEmpty();
00322
00323
00351
ReceiverRow *
newRow(
Tag spectralWindowId,
ArrayTimeInterval timeInterval,
int numLo, string name, ReceiverBandMod::ReceiverBand frequencyBand, vector<Frequency > freqLo, ReceiverSidebandMod::ReceiverSideband receiverSideband, vector<int > sidebandLo,
Temperature tDewar,
Interval stabilityDuration,
double stability);
00352
00357
ReceiverRow *
newRowFull(
Tag spectralWindowId,
ArrayTimeInterval timeInterval,
int numLo, string name, ReceiverBandMod::ReceiverBand frequencyBand, vector<Frequency > freqLo, ReceiverSidebandMod::ReceiverSideband receiverSideband, vector<int > sidebandLo,
Temperature tDewar,
Interval stabilityDuration,
double stability);
00358
00359
00372
ReceiverRow *
newRow(
ReceiverRow *row);
00373
00378
ReceiverRow *
newRowCopy(
ReceiverRow *row);
00379
00380
00381
00382
00383
00384
00385
00386
00387
00397
ReceiverRow*
add(
ReceiverRow* x) ;
00398
00399
00400
00401
00402
00403
00404
00410 vector<ReceiverRow *>
get() ;
00411
00412
00413
00414
00415
00429
ReceiverRow*
getRowByKey(
int receiverId,
Tag spectralWindowId,
ArrayTimeInterval timeInterval);
00430
00431
00432
00440 vector <ReceiverRow *>
getRowByReceiverId(
int);
00441
00442
00443
00473
ReceiverRow*
lookup(
Tag spectralWindowId,
ArrayTimeInterval timeInterval,
int numLo, string name, ReceiverBandMod::ReceiverBand frequencyBand, vector<Frequency > freqLo, ReceiverSidebandMod::ReceiverSideband receiverSideband, vector<int > sidebandLo,
Temperature tDewar,
Interval stabilityDuration,
double stability);
00474
00475
00476
#ifndef WITHOUT_ACS
00477
00483 ReceiverTableIDL *
toIDL() ;
00484
#endif
00485
00486
#ifndef WITHOUT_ACS
00487
00493
void fromIDL(ReceiverTableIDL x)
throw(
DuplicateKey,
ConversionException);
00494
#endif
00495
00499
char *
toFITS()
const throw(
ConversionException);
00500
00504
void fromFITS(
char *fits)
throw(
ConversionException);
00505
00509 string
toVOTable()
const throw(
ConversionException);
00510
00514
void fromVOTable(string vo)
throw(
ConversionException);
00515
00522 string
toXML()
throw(
ConversionException);
00523
00529
void fromXML(string xmlDoc)
throw(
ConversionException);
00530
00536 string
toMIME();
00537
00544
void setFromMIME(
const string & mimeMsg);
00545
00555
void toFile(string directory);
00556
00565
void setFromFile(
const string& directory);
00566
00567
private:
00568
00577
ReceiverTable (
ASDM & container);
00578
00579
ASDM & container;
00580
00581
bool archiveAsBin;
00582
bool fileAsBin ;
00583
00584
Entity entity;
00585
00586
00587
00591
static string tableName;
00592
00593
00597
static vector<string> key;
00598
00599
00605
ReceiverRow* checkAndAdd(
ReceiverRow* x)
throw (
DuplicateKey,
UniquenessViolationException);
00606
00607
00608
00609
00617
ReceiverRow * insertByStartTime(
ReceiverRow* x, vector<ReceiverRow* >& row);
00618
00619
00620
00621
00622
00623
00624 vector<ReceiverRow * > privateRows;
00625
00626
00627
00628
00629
00630
00631
00632
00633
typedef vector <vector <ReceiverRow* > > ID_TIME_ROWS;
00634 map<string, ID_TIME_ROWS > context;
00635
00640 string Key(
Tag spectralWindowId) ;
00641
00642
00643
00644
00650
void getByKeyNoAutoIncNoTime(vector <ReceiverRow*>& vin, vector <ReceiverRow*>& vout,
Tag spectralWindowId);
00651
00652
00653
00654
void error()
throw(
ConversionException);
00655
00656 };
00657
00658 }
00659
00660
#endif