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<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<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
00431 vector <SourceParameterRow*> *getByContext(int sourceId);
00432
00433
00434
00435
00436
00450 SourceParameterRow* SourceParameterTable::getRowByKey(int sourceParameterId, int sourceId, ArrayTimeInterval timeInterval);
00451
00452
00453
00461 vector <SourceParameterRow *> SourceParameterTable::getRowBySourceParameterId(int);
00462
00463
00464
00492 SourceParameterRow* lookup(int sourceId, ArrayTimeInterval timeInterval, int numFreq, int numStokes, int numDep, vector<StokesParameter > stokesParameter, vector<vector<Flux > > flux, vector<Frequency > frequency, vector<Frequency > frequencyInterval, vector<vector<Flux > > fluxErr);
00493
00494
00495 #ifndef WITHOUT_ACS
00496
00502 SourceParameterTableIDL *toIDL() ;
00503 #endif
00504
00505 #ifndef WITHOUT_ACS
00506
00512 void fromIDL(SourceParameterTableIDL x) throw(DuplicateKey,ConversionException);
00513 #endif
00514
00518 char *toFITS() const throw(ConversionException);
00519
00523 void fromFITS(char *fits) throw(ConversionException);
00524
00528 string toVOTable() const throw(ConversionException);
00529
00533 void fromVOTable(string vo) throw(ConversionException);
00534
00541 string toXML() throw(ConversionException);
00542
00548 void fromXML(string xmlDoc) throw(ConversionException);
00549
00555 string toMIME();
00556
00563 void setFromMIME(const string & mimeMsg);
00564
00574 void toFile(string directory);
00575
00584 void setFromFile(const string& directory);
00585
00586 private:
00587
00596 SourceParameterTable (ASDM & container);
00597
00598 ASDM & container;
00599
00600 bool archiveAsBin;
00601 bool fileAsBin ;
00602
00603 Entity entity;
00604
00605
00606
00610 static string tableName;
00611
00612
00616 static vector<string> key;
00617
00618
00624 SourceParameterRow* checkAndAdd(SourceParameterRow* x) throw (DuplicateKey, UniquenessViolationException);
00625
00626
00627
00628
00636 SourceParameterRow * insertByStartTime(SourceParameterRow* x, vector<SourceParameterRow* >& row);
00637
00638
00639
00640
00641
00642
00643 vector<SourceParameterRow * > privateRows;
00644
00645
00646
00647
00648
00649
00650
00651
00652 typedef vector <vector <SourceParameterRow* > > ID_TIME_ROWS;
00653 map<string, ID_TIME_ROWS > context;
00654
00659 string Key(int sourceId) ;
00660
00661
00662
00663
00669 void getByKeyNoAutoIncNoTime(vector <SourceParameterRow*>& vin, vector <SourceParameterRow*>& vout, int sourceId);
00670
00671
00672
00673 void error() throw(ConversionException);
00674
00675 };
00676
00677 }
00678
00679 #endif