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 CalWVRTable_CLASS
00035 #define CalWVRTable_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
00087
00088 #include "CWVRMethod.h"
00089 using namespace WVRMethodMod;
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104
00105
00106
00107 #ifndef WITHOUT_ACS
00108 #include <asdmIDLC.h>
00109 using asdmIDL::CalWVRTableIDL;
00110 #endif
00111
00112 using asdm::Angle;
00113 using asdm::AngularRate;
00114 using asdm::ArrayTime;
00115 using asdm::Complex;
00116 using asdm::Entity;
00117 using asdm::EntityId;
00118 using asdm::EntityRef;
00119 using asdm::Flux;
00120 using asdm::Frequency;
00121 using asdm::Humidity;
00122 using asdm::Interval;
00123 using asdm::Length;
00124 using asdm::PartId;
00125 using asdm::Pressure;
00126 using asdm::Speed;
00127 using asdm::Tag;
00128 using asdm::Temperature;
00129
00130 using asdm::DuplicateKey;
00131 using asdm::ConversionException;
00132 using asdm::NoSuchRow;
00133 using asdm::DuplicateKey;
00134
00135 #include <Representable.h>
00136
00137 namespace asdm {
00138
00139
00140
00141
00142 class ASDM;
00143 class CalWVRRow;
00259 class CalWVRTable : public Representable {
00260 friend class asdm::ASDM;
00261
00262 public:
00263
00264
00270 static vector<string> getKeyName();
00271
00272
00273 virtual ~CalWVRTable();
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 CalWVRRow *newRow();
00316
00321 CalWVRRow* newRowEmpty();
00322
00323
00359 CalWVRRow *newRow(Tag calDataId, Tag calReductionId, string antennaName, int numPoly, int numChan, ArrayTime startValidTime, ArrayTime endValidTime, WVRMethod wvrMethod, vector<Frequency > freqLimits, vector<vector<vector<float > > > pathCoeff, vector<Frequency > chanFreq, vector<Frequency > chanWidth, int numInputAntenna, vector<string > inputAntennaNames, vector<Frequency > polyFreqLimits);
00360
00365 CalWVRRow *newRowFull(Tag calDataId, Tag calReductionId, string antennaName, int numPoly, int numChan, ArrayTime startValidTime, ArrayTime endValidTime, WVRMethod wvrMethod, vector<Frequency > freqLimits, vector<vector<vector<float > > > pathCoeff, vector<Frequency > chanFreq, vector<Frequency > chanWidth, int numInputAntenna, vector<string > inputAntennaNames, vector<Frequency > polyFreqLimits);
00366
00367
00380 CalWVRRow *newRow(CalWVRRow *row);
00381
00386 CalWVRRow *newRowCopy(CalWVRRow *row);
00387
00388
00389
00390
00391
00392
00405 CalWVRRow* add(CalWVRRow* x) ;
00406
00407
00408
00409
00410
00411
00412
00413
00414
00420 vector<CalWVRRow *> get() ;
00421
00422
00423
00424
00425
00439 CalWVRRow* CalWVRTable::getRowByKey(Tag calDataId, Tag calReductionId, string antennaName);
00440
00441
00442
00443
00444
00482 CalWVRRow* lookup(Tag calDataId, Tag calReductionId, string antennaName, int numPoly, int numChan, ArrayTime startValidTime, ArrayTime endValidTime, WVRMethod wvrMethod, vector<Frequency > freqLimits, vector<vector<vector<float > > > pathCoeff, vector<Frequency > chanFreq, vector<Frequency > chanWidth, int numInputAntenna, vector<string > inputAntennaNames, vector<Frequency > polyFreqLimits);
00483
00484
00485 #ifndef WITHOUT_ACS
00486
00492 CalWVRTableIDL *toIDL() ;
00493 #endif
00494
00495 #ifndef WITHOUT_ACS
00496
00502 void fromIDL(CalWVRTableIDL 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 CalWVRTable (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 CalWVRRow* checkAndAdd(CalWVRRow* x) throw (DuplicateKey);
00615
00616
00617
00618
00619
00620
00621 vector<CalWVRRow * > privateRows;
00622
00623
00624
00625 vector<CalWVRRow *> row;
00626
00627
00628 void error() throw(ConversionException);
00629
00630 };
00631
00632 }
00633
00634 #endif