ExecBlockTable.h

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 ExecBlockTable.h
00032  */
00033  
00034 #ifndef ExecBlockTable_CLASS
00035 #define ExecBlockTable_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 #include <Enumerations.h>
00071 using namespace enumerations;
00072 */
00073 
00074 
00075 
00076 
00077         
00078 
00079         
00080 
00081         
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         
00108 
00109         
00110 
00111         
00112 
00113         
00114 
00115         
00116 
00117         
00118 
00119         
00120 
00121 
00122 #ifndef WITHOUT_ACS
00123 #include <asdmIDLC.h>
00124 using asdmIDL::ExecBlockTableIDL;
00125 #endif
00126 
00127 using asdm::Angle;
00128 using asdm::AngularRate;
00129 using asdm::ArrayTime;
00130 using asdm::Complex;
00131 using asdm::Entity;
00132 using asdm::EntityId;
00133 using asdm::EntityRef;
00134 using asdm::Flux;
00135 using asdm::Frequency;
00136 using asdm::Humidity;
00137 using asdm::Interval;
00138 using asdm::Length;
00139 using asdm::PartId;
00140 using asdm::Pressure;
00141 using asdm::Speed;
00142 using asdm::Tag;
00143 using asdm::Temperature;
00144 
00145 using asdm::DuplicateKey;
00146 using asdm::ConversionException;
00147 using asdm::NoSuchRow;
00148 using asdm::DuplicateKey;
00149 
00150 #include <Representable.h>
00151 
00152 namespace asdm {
00153 
00154 //class asdm::ASDM;
00155 //class asdm::ExecBlockRow;
00156 
00157 class ASDM;
00158 class ExecBlockRow;
00321 class ExecBlockTable : public Representable {
00322         friend class asdm::ASDM;
00323 
00324 public:
00325 
00326 
00332         static vector<string> getKeyName();
00333 
00334 
00335         virtual ~ExecBlockTable();
00336         
00342         ASDM &getContainer() const;
00343         
00349         unsigned int size() ;
00350         
00356         string getName() const;
00357 
00361         Entity getEntity() const;
00362 
00367         void setEntity(Entity e);
00368 
00369         //
00370         // ====> Row creation.
00371         //
00372         
00377         ExecBlockRow *newRow();
00378         
00383         ExecBlockRow* newRowEmpty();
00384 
00385         
00433         ExecBlockRow *newRow(vector<Tag>  antennaId, int execBlockNum, string telescopeName, string configName, int numAntenna, Length baseRangeMin, Length baseRangeMax, Length baseRmsMinor, Length baseRmsMajor, Angle basePa, ArrayTimeInterval timeInterval, string observerName, vector<string > observingLog, vector<string > schedulerMode, EntityRef projectId, Angle siteLongitude, Angle siteLatitude, Length siteAltitude, bool flagRow, EntityRef execBlockUID, bool aborted);
00434         
00439         ExecBlockRow *newRowFull(vector<Tag>  antennaId, int execBlockNum, string telescopeName, string configName, int numAntenna, Length baseRangeMin, Length baseRangeMax, Length baseRmsMinor, Length baseRmsMajor, Angle basePa, ArrayTimeInterval timeInterval, string observerName, vector<string > observingLog, vector<string > schedulerMode, EntityRef projectId, Angle siteLongitude, Angle siteLatitude, Length siteAltitude, bool flagRow, EntityRef execBlockUID, bool aborted);
00440 
00441 
00454          ExecBlockRow *newRow(ExecBlockRow *row); 
00455 
00460          ExecBlockRow *newRowCopy(ExecBlockRow *row); 
00461 
00462         //
00463         // ====> Append a row to its table.
00464         //
00465 
00466         
00467         
00468         
00478          ExecBlockRow* add(ExecBlockRow* x) ;
00479 
00480 
00481 
00482         //
00483         // ====> Methods returning rows.
00484         //
00485                 
00491         vector<ExecBlockRow *> get() ;
00492         
00493 
00494 
00495  
00496         
00506         ExecBlockRow* ExecBlockTable::getRowByKey(Tag execBlockId);
00507 
00508                 
00509 
00510 
00511 
00561         ExecBlockRow* lookup(vector<Tag>  antennaId, int execBlockNum, string telescopeName, string configName, int numAntenna, Length baseRangeMin, Length baseRangeMax, Length baseRmsMinor, Length baseRmsMajor, Angle basePa, ArrayTimeInterval timeInterval, string observerName, vector<string > observingLog, vector<string > schedulerMode, EntityRef projectId, Angle siteLongitude, Angle siteLatitude, Length siteAltitude, bool flagRow, EntityRef execBlockUID, bool aborted); 
00562 
00563 
00564 #ifndef WITHOUT_ACS
00565         // Conversion Methods
00571         ExecBlockTableIDL *toIDL() ;
00572 #endif
00573 
00574 #ifndef WITHOUT_ACS
00575 
00581         void fromIDL(ExecBlockTableIDL x) throw(DuplicateKey,ConversionException);
00582 #endif
00583 
00587         char *toFITS() const throw(ConversionException);
00588 
00592         void fromFITS(char *fits) throw(ConversionException);
00593 
00597         string toVOTable() const throw(ConversionException);
00598 
00602         void fromVOTable(string vo) throw(ConversionException);
00603 
00610         string toXML()  throw(ConversionException);
00611         
00617         void fromXML(string xmlDoc) throw(ConversionException);
00618         
00624         string toMIME();
00625         
00632          void setFromMIME(const string & mimeMsg);
00633         
00643           void toFile(string directory);
00644           
00653          void setFromFile(const string& directory);     
00654 
00655 private:
00656 
00665         ExecBlockTable (ASDM & container);
00666 
00667         ASDM & container;
00668         
00669         bool archiveAsBin; // If true archive binary else archive XML
00670         bool fileAsBin ; // If true file binary else file XML   
00671         
00672         Entity entity;
00673         
00674 
00675         // A map for the autoincrementation algorithm
00676         map<string,int>  noAutoIncIds;
00677         void autoIncrement(string key, ExecBlockRow* x);
00678 
00679 
00683         static string tableName;
00684 
00685 
00689         static vector<string> key;
00690 
00691 
00697         ExecBlockRow* checkAndAdd(ExecBlockRow* x) throw (DuplicateKey, UniquenessViolationException);
00698 
00699 
00700 
00701 // A data structure to store the pointers on the table's rows.
00702 
00703 // In all cases we maintain a private ArrayList of ExecBlockRow s.
00704    vector<ExecBlockRow * > privateRows;
00705    
00706 
00707                         
00708         vector<ExecBlockRow *> row;
00709 
00710 
00711         void error() throw(ConversionException);
00712 
00713 };
00714 
00715 } // End namespace asdm
00716 
00717 #endif /* ExecBlockTable_CLASS */

Generated on Thu Nov 29 16:46:46 2007 for ASDM C++ Implementation by  doxygen 1.5.1