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 SBSummaryTable_CLASS
00035 #define SBSummaryTable_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 #include "CSBType.h"
00087 using namespace SBTypeMod;
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 #ifndef WITHOUT_ACS
00114 #include <asdmIDLC.h>
00115 using asdmIDL::SBSummaryTableIDL;
00116 #endif
00117
00118 using asdm::Angle;
00119 using asdm::AngularRate;
00120 using asdm::ArrayTime;
00121 using asdm::Complex;
00122 using asdm::Entity;
00123 using asdm::EntityId;
00124 using asdm::EntityRef;
00125 using asdm::Flux;
00126 using asdm::Frequency;
00127 using asdm::Humidity;
00128 using asdm::Interval;
00129 using asdm::Length;
00130 using asdm::PartId;
00131 using asdm::Pressure;
00132 using asdm::Speed;
00133 using asdm::Tag;
00134 using asdm::Temperature;
00135
00136 using asdm::DuplicateKey;
00137 using asdm::ConversionException;
00138 using asdm::NoSuchRow;
00139 using asdm::DuplicateKey;
00140
00141 #include <Representable.h>
00142
00143 namespace asdm {
00144
00145
00146
00147
00148 class ASDM;
00149 class SBSummaryRow;
00267 class SBSummaryTable : public Representable {
00268 friend class asdm::ASDM;
00269
00270 public:
00271
00272
00278 static vector<string> getKeyName();
00279
00280
00281 virtual ~SBSummaryTable();
00282
00288 ASDM &getContainer() const;
00289
00295 unsigned int size() ;
00296
00302 string getName() const;
00303
00307 Entity getEntity() const;
00308
00313 void setEntity(Entity e);
00314
00315
00316
00317
00318
00323 SBSummaryRow *newRow();
00324
00329 SBSummaryRow* newRowEmpty();
00330
00331
00369 SBSummaryRow *newRow(EntityRef sbId, EntityRef projectId, EntityRef obsUnitSetId, string sbIntent, SBType sbType, Interval sbDuration, int numScan, vector<string > scanIntent, int numberRepeats, vector<string > weatherConstraint, vector<string > scienceGoal, double raCenter, double decCenter, double frequency, string frequencyBand, vector<string > observingMode);
00370
00375 SBSummaryRow *newRowFull(EntityRef sbId, EntityRef projectId, EntityRef obsUnitSetId, string sbIntent, SBType sbType, Interval sbDuration, int numScan, vector<string > scanIntent, int numberRepeats, vector<string > weatherConstraint, vector<string > scienceGoal, double raCenter, double decCenter, double frequency, string frequencyBand, vector<string > observingMode);
00376
00377
00390 SBSummaryRow *newRow(SBSummaryRow *row);
00391
00396 SBSummaryRow *newRowCopy(SBSummaryRow *row);
00397
00398
00399
00400
00401
00402
00415 SBSummaryRow* add(SBSummaryRow* x) ;
00416
00417
00418
00419
00420
00421
00422
00423
00424
00430 vector<SBSummaryRow *> get() ;
00431
00432
00433
00434
00435
00445 SBSummaryRow* SBSummaryTable::getRowByKey(EntityRef sbId);
00446
00447
00448
00449
00450
00490 SBSummaryRow* lookup(EntityRef sbId, EntityRef projectId, EntityRef obsUnitSetId, string sbIntent, SBType sbType, Interval sbDuration, int numScan, vector<string > scanIntent, int numberRepeats, vector<string > weatherConstraint, vector<string > scienceGoal, double raCenter, double decCenter, double frequency, string frequencyBand, vector<string > observingMode);
00491
00492
00493 #ifndef WITHOUT_ACS
00494
00500 SBSummaryTableIDL *toIDL() ;
00501 #endif
00502
00503 #ifndef WITHOUT_ACS
00504
00510 void fromIDL(SBSummaryTableIDL x) throw(DuplicateKey,ConversionException);
00511 #endif
00512
00516 char *toFITS() const throw(ConversionException);
00517
00521 void fromFITS(char *fits) throw(ConversionException);
00522
00526 string toVOTable() const throw(ConversionException);
00527
00531 void fromVOTable(string vo) throw(ConversionException);
00532
00539 string toXML() throw(ConversionException);
00540
00546 void fromXML(string xmlDoc) throw(ConversionException);
00547
00553 string toMIME();
00554
00561 void setFromMIME(const string & mimeMsg);
00562
00572 void toFile(string directory);
00573
00582 void setFromFile(const string& directory);
00583
00584 private:
00585
00594 SBSummaryTable (ASDM & container);
00595
00596 ASDM & container;
00597
00598 bool archiveAsBin;
00599 bool fileAsBin ;
00600
00601 Entity entity;
00602
00603
00604
00608 static string tableName;
00609
00610
00614 static vector<string> key;
00615
00616
00622 SBSummaryRow* checkAndAdd(SBSummaryRow* x) throw (DuplicateKey);
00623
00624
00625
00626
00627
00628
00629 vector<SBSummaryRow * > privateRows;
00630
00631
00632
00633 vector<SBSummaryRow *> row;
00634
00635
00636 void error() throw(ConversionException);
00637
00638 };
00639
00640 }
00641
00642 #endif