00001 // $Header: /bes/bes/BossCvs/Calibration/rdbModel/rdbModel/Tables/Supersede.h,v 1.1.1.1 2005/10/17 06:10:53 maqm Exp $ 00002 #ifndef RDBMODEL_SUPSERSEDE_H 00003 #define RDBMODEL_SUPERSEDE_H 00004 #include <vector> 00005 #include <string> 00006 #include "rdbModel/Management/Visitor.h" 00007 00008 namespace rdbModel{ 00009 00010 class Set; 00011 class Table; 00012 class Assertion; 00013 00020 class Supersede { 00021 public: 00022 Supersede(Table* table, Assertion* onlyIf=0); 00023 00024 ~Supersede(); 00025 00026 const std::vector<Set*>& getSetOld() const {return m_setOld;} 00027 const std::vector<Set*>& getSetNew() const {return m_setOld;} 00028 00029 void addSet(Set* s); 00030 00031 const Table* getTable() const {return m_myTable;} 00032 00033 Visitor::VisitorState accept(Visitor* v); 00034 00035 Assertion* getOnlyIf() {return m_onlyIf;} 00036 00037 const std::vector<std::string>& getAsk() const { 00038 return m_ask; } 00039 00040 const std::vector<std::string>& getOldDefaulted() const { 00041 return m_oldDefaults; } 00042 00043 const std::vector<std::string>& getFromOld() const { 00044 return m_fromOld;} 00045 00046 const std::vector<FieldVal>& getFixed() const { return m_fixed;} 00047 const std::vector<std::string>& getFixedInterp() const { 00048 return m_fixedInterp;} 00049 00050 const std::vector<std::string>& getForced() const { return m_oldForced;} 00051 00052 00053 00054 00055 // Might want to get rid of this; should know assertion by constructor 00056 // time. 00057 void setOnlyIf(Assertion* onlyIf) {m_onlyIf = onlyIf;} 00058 00063 void normalize(); 00064 00065 private: 00066 Table* m_myTable; 00067 // bool m_keepOp; 00068 Assertion* m_onlyIf; // conditions row must meet to make it supersedable. 00069 std::vector<Set*> m_setOld; 00070 std::vector<Set*> m_setNew; 00075 00076 std::vector<std::string> m_oldDefaults; 00078 std::vector<std::string> m_oldForced; 00079 00081 std::vector<std::string> m_ask; 00082 00084 std::vector<FieldVal> m_fixed; 00085 00088 std::vector<std::string> m_fixedInterp; 00089 00091 std::vector<std::string> m_fromOld; 00092 00093 bool m_normalized; 00094 00095 00096 }; 00097 } 00098 #endif 00099