casa  $Rev:20696$
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
CalHolographyTable.h
Go to the documentation of this file.
00001 
00002 /*
00003  * ALMA - Atacama Large Millimeter Array
00004  * (c) European Southern Observatory, 2002
00005  * (c) Associated Universities Inc., 2002
00006  * Copyright by ESO (in the framework of the ALMA collaboration),
00007  * Copyright by AUI (in the framework of the ALMA collaboration),
00008  * All rights reserved.
00009  * 
00010  * This library is free software; you can redistribute it and/or
00011  * modify it under the terms of the GNU Lesser General Public
00012  * License as published by the Free software Foundation; either
00013  * version 2.1 of the License, or (at your option) any later version.
00014  * 
00015  * This library is distributed in the hope that it will be useful,
00016  * but WITHOUT ANY WARRANTY, without even the implied warranty of
00017  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00018  * Lesser General Public License for more details.
00019  * 
00020  * You should have received a copy of the GNU Lesser General Public
00021  * License along with this library; if not, write to the Free Software
00022  * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
00023  * MA 02111-1307  USA
00024  *
00025  * Warning!
00026  *  -------------------------------------------------------------------- 
00027  * | This is generated code!  Do not modify this file.                  |
00028  * | If you do, all changes will be lost when the file is re-generated. |
00029  *  --------------------------------------------------------------------
00030  *
00031  * File CalHolographyTable.h
00032  */
00033  
00034 #ifndef CalHolographyTable_CLASS
00035 #define CalHolographyTable_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 <Angle.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 <EntityRef.h>
00069         
00070 
00071 
00072 
00073 
00074         
00075 
00076         
00077 #include "CAntennaMake.h"
00078         
00079 
00080         
00081 
00082         
00083 
00084         
00085 
00086         
00087 
00088         
00089 
00090         
00091 
00092         
00093 
00094         
00095 #include "CPolarizationType.h"
00096         
00097 
00098         
00099 
00100         
00101 #include "CReceiverBand.h"
00102         
00103 
00104         
00105 
00106         
00107 
00108         
00109 
00110         
00111 
00112         
00113 
00114         
00115 
00116         
00117 
00118         
00119 
00120         
00121 
00122         
00123 
00124         
00125 
00126         
00127 
00128         
00129 
00130 
00131 
00132 #include <ConversionException.h>
00133 #include <DuplicateKey.h>
00134 #include <UniquenessViolationException.h>
00135 #include <NoSuchRow.h>
00136 #include <DuplicateKey.h>
00137 
00138 
00139 #ifndef WITHOUT_ACS
00140 #include <asdmIDLC.h>
00141 #endif
00142 
00143 #include <Representable.h>
00144 
00145 #include <pthread.h>
00146 
00147 namespace asdm {
00148 
00149 //class asdm::ASDM;
00150 //class asdm::CalHolographyRow;
00151 
00152 class ASDM;
00153 class CalHolographyRow;
00376 class CalHolographyTable : public Representable {
00377         friend class ASDM;
00378 
00379 public:
00380 
00381 
00387         static const std::vector<std::string>& getKeyName();
00388 
00389 
00390         virtual ~CalHolographyTable();
00391         
00397         ASDM &getContainer() const;
00398         
00404         unsigned int size() const;
00405         
00413         std::string getName() const;
00414         
00422         static std::string name() ;     
00423         
00428          std::string getVersion() const ;
00429         
00435          static const std::vector<std::string>& getAttributesNames();
00436 
00442          static const std::vector<std::string>& defaultAttributesNamesInBin();
00443          
00447         Entity getEntity() const;
00448 
00453         void setEntity(Entity e);
00454                 
00462         std::string toXML()  ;
00463 
00464 #ifndef WITHOUT_ACS
00465         // Conversion Methods
00471         asdmIDL::CalHolographyTableIDL *toIDL() ;
00472         
00480          void toIDL(asdmIDL::CalHolographyTableIDL& x) const;
00481          
00482 #endif
00483 
00484 #ifndef WITHOUT_ACS
00485 
00491         void fromIDL(asdmIDL::CalHolographyTableIDL x) ;
00492 #endif
00493         
00494         //
00495         // ====> Row creation.
00496         //
00497         
00502         CalHolographyRow *newRow();
00503         
00504         
00548         CalHolographyRow *newRow(string antennaName, Tag calDataId, Tag calReductionId, AntennaMakeMod::AntennaMake antennaMake, ArrayTime startValidTime, ArrayTime endValidTime, Temperature ambientTemperature, vector<Length > focusPosition, vector<Frequency > frequencyRange, double illuminationTaper, int numReceptor, vector<PolarizationTypeMod::PolarizationType > polarizationTypes, int numPanelModes, ReceiverBandMod::ReceiverBand receiverBand, EntityRef beamMapUID, Length rawRMS, Length weightedRMS, EntityRef surfaceMapUID, vector<Angle > direction);
00549         
00550 
00551 
00564          CalHolographyRow *newRow(CalHolographyRow *row); 
00565 
00566         //
00567         // ====> Append a row to its table.
00568         //
00569  
00570         
00583         CalHolographyRow* add(CalHolographyRow* x) ; 
00584 
00585  
00586 
00587 
00588 
00589         //
00590         // ====> Methods returning rows.
00591         //
00592                 
00598         std::vector<CalHolographyRow *> get() ;
00599         
00606          const std::vector<CalHolographyRow *>& get() const ;
00607         
00608 
00609 
00610  
00611         
00625         CalHolographyRow* getRowByKey(string antennaName, Tag calDataId, Tag calReductionId);
00626 
00627                 
00628 
00629 
00630 
00676         CalHolographyRow* lookup(string antennaName, Tag calDataId, Tag calReductionId, AntennaMakeMod::AntennaMake antennaMake, ArrayTime startValidTime, ArrayTime endValidTime, Temperature ambientTemperature, vector<Length > focusPosition, vector<Frequency > frequencyRange, double illuminationTaper, int numReceptor, vector<PolarizationTypeMod::PolarizationType > polarizationTypes, int numPanelModes, ReceiverBandMod::ReceiverBand receiverBand, EntityRef beamMapUID, Length rawRMS, Length weightedRMS, EntityRef surfaceMapUID, vector<Angle > direction); 
00677 
00678 
00679         void setUnknownAttributeBinaryReader(const std::string& attributeName, BinaryAttributeReaderFunctor* barFctr);
00680         BinaryAttributeReaderFunctor* getUnknownAttributeBinaryReader(const std::string& attributeName) const;
00681 
00682 private:
00683 
00692         CalHolographyTable (ASDM & container);
00693 
00694         ASDM & container;
00695         
00696         bool archiveAsBin; // If true archive binary else archive XML
00697         bool fileAsBin ; // If true file binary else file XML   
00698         
00699         std::string version ; 
00700         
00701         Entity entity;
00702         
00703 
00704 
00712         CalHolographyRow* checkAndAdd(CalHolographyRow* x, bool skipCheckUniqueness=false) ;
00713         
00719          void append(CalHolographyRow* x) ;
00720          
00726          void addWithoutCheckingUnique(CalHolographyRow* x) ;
00727          
00728          
00729 
00730 
00731 
00732 // A data structure to store the pointers on the table's rows.
00733 
00734 // In all cases we maintain a private vector of CalHolographyRow s.
00735    std::vector<CalHolographyRow * > privateRows;
00736    
00737 
00738                         
00739         std::vector<CalHolographyRow *> row;
00740 
00741         
00742         void error() ; //throw(ConversionException);
00743 
00744         
00751         void fromXML(std::string& xmlDoc) ;
00752                 
00753         std::map<std::string, BinaryAttributeReaderFunctor *> unknownAttributes2Functors;
00754 
00759         void setFromMIMEFile(const std::string& directory);
00760         /*
00761         void openMIMEFile(const std::string& directory);
00762         */
00763         void setFromXMLFile(const std::string& directory);
00764         
00772         std::string toMIME(const asdm::ByteOrder* byteOrder=asdm::ByteOrder::Machine_Endianity);
00773   
00774         
00781          void setFromMIME(const std::string & mimeMsg);
00782         
00786         std::string MIMEXMLPart(const asdm::ByteOrder* byteOrder=asdm::ByteOrder::Machine_Endianity);
00787         
00797           void toFile(std::string directory);
00798           
00802           bool loadInProgress;
00803           void checkPresenceInMemory() {
00804                 if (!presentInMemory && !loadInProgress) {
00805                         loadInProgress = true;
00806                         setFromFile(getContainer().getDirectory());
00807                         presentInMemory = true;
00808                         loadInProgress = false;
00809                 }
00810           }
00819          void setFromFile(const std::string& directory);        
00820  
00821 };
00822 
00823 } // End namespace asdm
00824 
00825 #endif /* CalHolographyTable_CLASS */