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* 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 Tue Nov 18 17:43:41 2008 for ASDM C++ Implementation by doxygen 1.3.8