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 CalAtmosphereTable_CLASS
00035 #define CalAtmosphereTable_CLASS
00036
00037 #include <string>
00038 #include <vector>
00039 #include <map>
00040
00041
00042
00043
00044 #include <ArrayTime.h>
00045
00046
00047
00048 #include <Temperature.h>
00049
00050
00051
00052 #include <Humidity.h>
00053
00054
00055
00056 #include <Tag.h>
00057
00058
00059
00060 #include <Length.h>
00061
00062
00063
00064 #include <Frequency.h>
00065
00066
00067
00068 #include <Pressure.h>
00069
00070
00071
00072
00073
00074
00075 #include "CReceiverBand.h"
00076
00077
00078
00079
00080
00081 #include "CBasebandName.h"
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104
00105
00106
00107 #include "CPolarizationType.h"
00108
00109
00110
00111
00112
00113
00114
00115 #include "CSyscalMethod.h"
00116
00117
00118
00119
00120
00121
00122
00123
00124
00125
00126
00127
00128
00129
00130
00131
00132
00133
00134
00135
00136
00137
00138
00139
00140
00141
00142
00143
00144
00145
00146
00147
00148
00149
00150
00151
00152 #include <ConversionException.h>
00153 #include <DuplicateKey.h>
00154 #include <UniquenessViolationException.h>
00155 #include <NoSuchRow.h>
00156 #include <DuplicateKey.h>
00157
00158
00159 #ifndef WITHOUT_ACS
00160 #include <asdmIDLC.h>
00161 #endif
00162
00163 #include <Representable.h>
00164
00165 #include <pthread.h>
00166
00167 namespace asdm {
00168
00169
00170
00171
00172 class ASDM;
00173 class CalAtmosphereRow;
00463 class CalAtmosphereTable : public Representable {
00464 friend class ASDM;
00465
00466 public:
00467
00468
00474 static const std::vector<std::string>& getKeyName();
00475
00476
00477 virtual ~CalAtmosphereTable();
00478
00484 ASDM &getContainer() const;
00485
00491 unsigned int size() const;
00492
00500 std::string getName() const;
00501
00509 static std::string name() ;
00510
00515 std::string getVersion() const ;
00516
00522 static const std::vector<std::string>& getAttributesNames();
00523
00529 static const std::vector<std::string>& defaultAttributesNamesInBin();
00530
00534 Entity getEntity() const;
00535
00540 void setEntity(Entity e);
00541
00549 std::string toXML() ;
00550
00551 #ifndef WITHOUT_ACS
00552
00558 asdmIDL::CalAtmosphereTableIDL *toIDL() ;
00559
00567 void toIDL(asdmIDL::CalAtmosphereTableIDL& x) const;
00568
00569 #endif
00570
00571 #ifndef WITHOUT_ACS
00572
00578 void fromIDL(asdmIDL::CalAtmosphereTableIDL x) ;
00579 #endif
00580
00581
00582
00583
00584
00589 CalAtmosphereRow *newRow();
00590
00591
00657 CalAtmosphereRow *newRow(string antennaName, ReceiverBandMod::ReceiverBand receiverBand, BasebandNameMod::BasebandName basebandName, Tag calDataId, Tag calReductionId, ArrayTime startValidTime, ArrayTime endValidTime, int numFreq, int numLoad, int numReceptor, vector<vector<float > > forwardEffSpectrum, vector<Frequency > frequencyRange, Pressure groundPressure, Humidity groundRelHumidity, vector<Frequency > frequencySpectrum, Temperature groundTemperature, vector<PolarizationTypeMod::PolarizationType > polarizationTypes, vector<vector<float > > powerSkySpectrum, vector<vector<vector<float > > > powerLoadSpectrum, SyscalMethodMod::SyscalMethod syscalType, vector<vector<Temperature > > tAtmSpectrum, vector<vector<Temperature > > tRecSpectrum, vector<vector<Temperature > > tSysSpectrum, vector<vector<float > > tauSpectrum, vector<Temperature > tAtm, vector<Temperature > tRec, vector<Temperature > tSys, vector<float > tau, vector<Length > water, vector<Length > waterError);
00658
00659
00660
00673 CalAtmosphereRow *newRow(CalAtmosphereRow *row);
00674
00675
00676
00677
00678
00679
00692 CalAtmosphereRow* add(CalAtmosphereRow* x) ;
00693
00694
00695
00696
00697
00698
00699
00700
00701
00707 std::vector<CalAtmosphereRow *> get() ;
00708
00715 const std::vector<CalAtmosphereRow *>& get() const ;
00716
00717
00718
00719
00720
00738 CalAtmosphereRow* getRowByKey(string antennaName, ReceiverBandMod::ReceiverBand receiverBand, BasebandNameMod::BasebandName basebandName, Tag calDataId, Tag calReductionId);
00739
00740
00741
00742
00743
00811 CalAtmosphereRow* lookup(string antennaName, ReceiverBandMod::ReceiverBand receiverBand, BasebandNameMod::BasebandName basebandName, Tag calDataId, Tag calReductionId, ArrayTime startValidTime, ArrayTime endValidTime, int numFreq, int numLoad, int numReceptor, vector<vector<float > > forwardEffSpectrum, vector<Frequency > frequencyRange, Pressure groundPressure, Humidity groundRelHumidity, vector<Frequency > frequencySpectrum, Temperature groundTemperature, vector<PolarizationTypeMod::PolarizationType > polarizationTypes, vector<vector<float > > powerSkySpectrum, vector<vector<vector<float > > > powerLoadSpectrum, SyscalMethodMod::SyscalMethod syscalType, vector<vector<Temperature > > tAtmSpectrum, vector<vector<Temperature > > tRecSpectrum, vector<vector<Temperature > > tSysSpectrum, vector<vector<float > > tauSpectrum, vector<Temperature > tAtm, vector<Temperature > tRec, vector<Temperature > tSys, vector<float > tau, vector<Length > water, vector<Length > waterError);
00812
00813
00814 void setUnknownAttributeBinaryReader(const std::string& attributeName, BinaryAttributeReaderFunctor* barFctr);
00815 BinaryAttributeReaderFunctor* getUnknownAttributeBinaryReader(const std::string& attributeName) const;
00816
00817 private:
00818
00827 CalAtmosphereTable (ASDM & container);
00828
00829 ASDM & container;
00830
00831 bool archiveAsBin;
00832 bool fileAsBin ;
00833
00834 std::string version ;
00835
00836 Entity entity;
00837
00838
00839
00847 CalAtmosphereRow* checkAndAdd(CalAtmosphereRow* x, bool skipCheckUniqueness=false) ;
00848
00854 void append(CalAtmosphereRow* x) ;
00855
00861 void addWithoutCheckingUnique(CalAtmosphereRow* x) ;
00862
00863
00864
00865
00866
00867
00868
00869
00870 std::vector<CalAtmosphereRow * > privateRows;
00871
00872
00873
00874 std::vector<CalAtmosphereRow *> row;
00875
00876
00877 void error() ;
00878
00879
00886 void fromXML(std::string& xmlDoc) ;
00887
00888 std::map<std::string, BinaryAttributeReaderFunctor *> unknownAttributes2Functors;
00889
00894 void setFromMIMEFile(const std::string& directory);
00895
00896
00897
00898 void setFromXMLFile(const std::string& directory);
00899
00907 std::string toMIME(const asdm::ByteOrder* byteOrder=asdm::ByteOrder::Machine_Endianity);
00908
00909
00916 void setFromMIME(const std::string & mimeMsg);
00917
00921 std::string MIMEXMLPart(const asdm::ByteOrder* byteOrder=asdm::ByteOrder::Machine_Endianity);
00922
00932 void toFile(std::string directory);
00933
00937 bool loadInProgress;
00938 void checkPresenceInMemory() {
00939 if (!presentInMemory && !loadInProgress) {
00940 loadInProgress = true;
00941 setFromFile(getContainer().getDirectory());
00942 presentInMemory = true;
00943 loadInProgress = false;
00944 }
00945 }
00954 void setFromFile(const std::string& directory);
00955
00956 };
00957
00958 }
00959
00960 #endif