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 SourceParameterTable_CLASS
00035
#define SourceParameterTable_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
#include "CStokesParameter.h"
00087
using namespace StokesParameterMod;
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104
00105
00106
00107
00108
00109
00110
00111
#ifndef WITHOUT_ACS
00112
#include <asdmIDLC.h>
00113
using asdmIDL::SourceParameterTableIDL;
00114
#endif
00115
00116
using asdm::Angle;
00117
using asdm::AngularRate;
00118
using asdm::ArrayTime;
00119
using asdm::Complex;
00120
using asdm::Entity;
00121
using asdm::EntityId;
00122
using asdm::EntityRef;
00123
using asdm::Flux;
00124
using asdm::Frequency;
00125
using asdm::Humidity;
00126
using asdm::Interval;
00127
using asdm::Length;
00128
using asdm::PartId;
00129
using asdm::Pressure;
00130
using asdm::Speed;
00131
using asdm::Tag;
00132
using asdm::Temperature;
00133
00134
using asdm::DuplicateKey;
00135
using asdm::ConversionException;
00136
using asdm::NoSuchRow;
00137
using asdm::DuplicateKey;
00138
00139
#include <Representable.h>
00140
00141
namespace asdm {
00142
00143
00144
00145
00146
class ASDM;
00147
class SourceParameterRow;
00272 class SourceParameterTable :
public Representable {
00273
friend class asdm::ASDM;
00274
00275
public:
00276
00277
00283
static vector<string>
getKeyName();
00284
00285
00286
virtual ~
SourceParameterTable();
00287
00293
ASDM &
getContainer()
const;
00294
00300
unsigned int size() ;
00301
00307 string
getName()
const;
00308
00312
Entity getEntity()
const;
00313
00318
void setEntity(
Entity e);
00319
00320
00321
00322
00323
00328
SourceParameterRow *
newRow();
00329
00334
SourceParameterRow*
newRowEmpty();
00335
00336
00362
SourceParameterRow *
newRow(
int sourceId,
ArrayTimeInterval timeInterval,
int numFreq,
int numStokes,
int numDep, vector<StokesParameterMod::StokesParameter > stokesParameter, vector<vector<Flux > > flux, vector<Frequency > frequency, vector<Frequency > frequencyInterval, vector<vector<Flux > > fluxErr);
00363
00368
SourceParameterRow *
newRowFull(
int sourceId,
ArrayTimeInterval timeInterval,
int numFreq,
int numStokes,
int numDep, vector<StokesParameterMod::StokesParameter > stokesParameter, vector<vector<Flux > > flux, vector<Frequency > frequency, vector<Frequency > frequencyInterval, vector<vector<Flux > > fluxErr);
00369
00370
00383
SourceParameterRow *
newRow(
SourceParameterRow *row);
00384
00389
SourceParameterRow *
newRowCopy(
SourceParameterRow *row);
00390
00391
00392
00393
00394
00395
00396
00397
00398
00408
SourceParameterRow*
add(
SourceParameterRow* x) ;
00409
00410
00411
00412
00413
00414
00415
00421 vector<SourceParameterRow *>
get() ;
00422
00423
00424
00425
00426
00440
SourceParameterRow*
getRowByKey(
int sourceParameterId,
int sourceId,
ArrayTimeInterval timeInterval);
00441
00442
00443
00451 vector <SourceParameterRow *>
getRowBySourceParameterId(
int);
00452
00453
00454
00482
SourceParameterRow*
lookup(
int sourceId,
ArrayTimeInterval timeInterval,
int numFreq,
int numStokes,
int numDep, vector<StokesParameterMod::StokesParameter > stokesParameter, vector<vector<Flux > > flux, vector<Frequency > frequency, vector<Frequency > frequencyInterval, vector<vector<Flux > > fluxErr);
00483
00484
00485
#ifndef WITHOUT_ACS
00486
00492 SourceParameterTableIDL *
toIDL() ;
00493
#endif
00494
00495
#ifndef WITHOUT_ACS
00496
00502
void fromIDL(SourceParameterTableIDL x)
throw(
DuplicateKey,
ConversionException);
00503
#endif
00504
00508
char *
toFITS()
const throw(
ConversionException);
00509
00513
void fromFITS(
char *fits)
throw(
ConversionException);
00514
00518 string
toVOTable()
const throw(
ConversionException);
00519
00523
void fromVOTable(string vo)
throw(
ConversionException);
00524
00531 string
toXML()
throw(
ConversionException);
00532
00538
void fromXML(string xmlDoc)
throw(
ConversionException);
00539
00545 string
toMIME();
00546
00553
void setFromMIME(
const string & mimeMsg);
00554
00564
void toFile(string directory);
00565
00574
void setFromFile(
const string& directory);
00575
00576
private:
00577
00586
SourceParameterTable (
ASDM & container);
00587
00588
ASDM & container;
00589
00590
bool archiveAsBin;
00591
bool fileAsBin ;
00592
00593
Entity entity;
00594
00595
00596
00600
static string tableName;
00601
00602
00606
static vector<string> key;
00607
00608
00614
SourceParameterRow* checkAndAdd(
SourceParameterRow* x)
throw (
DuplicateKey,
UniquenessViolationException);
00615
00616
00617
00618
00626
SourceParameterRow * insertByStartTime(
SourceParameterRow* x, vector<SourceParameterRow* >& row);
00627
00628
00629
00630
00631
00632
00633 vector<SourceParameterRow * > privateRows;
00634
00635
00636
00637
00638
00639
00640
00641
00642
typedef vector <vector <SourceParameterRow* > > ID_TIME_ROWS;
00643 map<string, ID_TIME_ROWS > context;
00644
00649 string Key(
int sourceId) ;
00650
00651
00652
00653
00659
void getByKeyNoAutoIncNoTime(vector <SourceParameterRow*>& vin, vector <SourceParameterRow*>& vout,
int sourceId);
00660
00661
00662
00663
void error()
throw(
ConversionException);
00664
00665 };
00666
00667 }
00668
00669
#endif