CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
IDatabaseSchema.h
Go to the documentation of this file.
1 #ifndef INCLUDE_ORA_IDATABASESCHEMA_H
2 #define INCLUDE_ORA_IDATABASESCHEMA_H
3 
4 //
5 #include <string>
6 #include <map>
7 #include <set>
8 #include <vector>
9 
10 namespace coral {
11  class ISchema;
12 }
13 
14 namespace ora {
15 
16  std::string poolSchemaVersion();
17 
19  public:
20  virtual ~IDatabaseTable(){}
21 
22  virtual bool exists() = 0;
23  virtual void create() = 0;
24  virtual void drop() = 0;
25  };
26 
27  class IMainTable: public IDatabaseTable {
28  public:
29  static std::string versionParameterName();
30  public:
31  virtual ~IMainTable(){}
32  virtual bool getParameters( std::map<std::string,std::string>& destination ) = 0;
33  virtual std::string schemaVersion() = 0;
34  };
35 
37  public:
38  virtual ~ISequenceTable(){
39  }
40 
41  virtual bool add( const std::string& sequenceName ) = 0;
42  virtual bool getLastId( const std::string& sequenceName, int& lastId ) = 0;
43  virtual void sinchronize( const std::string& sequenceName, int lastValue ) = 0;
44  virtual void erase( const std::string& sequenceName ) = 0;
45  };
46 
48  static std::string emptyScope();
52  std::string scopeName;
53  std::string variableName;
54  std::string variableType;
55  std::string elementType;
56  std::string tableName;
57  std::vector<std::string> columns;
58  };
59 
60  struct MappingRawData {
62  explicit MappingRawData( const std::string& version );
63  MappingRawElement& addElement( int elementId );
64  std::string version;
65  std::map< int, MappingRawElement> elements;
66  };
67 
68 
70  ContainerHeaderData( int contId,
71  const std::string& classN,
72  unsigned int numberObj );
75  int id;
76  std::string className;
77  unsigned int numberOfObjects;
78  };
79 
81  public:
83  }
84  virtual bool getContainerData( std::map<std::string, ContainerHeaderData>& destination ) = 0;
85  virtual void addContainer( int id, const std::string& containerName, const std::string& className ) = 0;
86  virtual void removeContainer( int id ) = 0;
87  virtual void incrementNumberOfObjects( int id ) = 0;
88  virtual void decrementNumberOfObjects( int id ) = 0;
89  virtual void updateNumberOfObjects( const std::map<int,unsigned int>& numberOfObjectsForContainerIds ) = 0;
90  };
91 
93  public:
94  virtual ~IMappingSchema(){
95  }
96  virtual bool getVersionList( std::set<std::string>& destination ) = 0;
97  virtual bool getMapping( const std::string& version, MappingRawData& destination ) = 0;
98  virtual void storeMapping( const MappingRawData& data ) = 0;
99  virtual void removeMapping( const std::string& version ) = 0;
100  virtual bool getContainerTableMap( std::map<std::string, int>& destination ) = 0;
101  virtual bool getMappingVersionListForContainer( int containerId, std::set<std::string>& destination, bool onlyDependency=false ) = 0;
102  virtual bool getDependentClassesInContainerMapping( int containerId, std::set<std::string>& destination ) = 0;
103  virtual bool getClassVersionListForMappingVersion( const std::string& mappingVersion, std::set<std::string>& destination ) = 0;
104  virtual bool getClassVersionListForContainer( int containerId, std::map<std::string,std::string>& versionMap ) = 0;
105  virtual bool getMappingVersionListForTable( const std::string& tableName, std::set<std::string>& destination ) = 0;
106  virtual bool selectMappingVersion( const std::string& classId, int containerId, std::string& destination ) = 0;
107  virtual bool containerForMappingVersion( const std::string& mappingVersion, int& destination ) = 0;
108  virtual void insertClassVersion( const std::string& className, const std::string& classVersion, const std::string& classId,
109  int dependencyIndex, int containerId, const std::string& mappingVersion )= 0;
110  virtual void setMappingVersion( const std::string& classId, int containerId, const std::string& mappingVersion ) = 0;
111  };
112 
114  public:
116  }
117  virtual void setObjectName( const std::string& name, int contId, int itemId ) = 0;
118  virtual bool eraseObjectName( const std::string& name ) = 0;
119  virtual bool eraseAllNames() = 0;
120  virtual bool getObjectByName( const std::string& name, std::pair<int,int>& destination ) = 0;
121  virtual bool getNamesForObject( int contId, int itemId, std::vector<std::string>& destination ) = 0;
122  virtual bool getNamesForContainer( int contId, std::vector<std::string>& destination ) = 0;
123  virtual bool getAllNames( std::vector<std::string>& destination ) = 0;
124  };
125 
127  public:
128 
129  static IDatabaseSchema* createSchemaHandle( coral::ISchema& schema );
130 
131  public:
132  IDatabaseSchema( coral::ISchema& schema );
133  virtual ~IDatabaseSchema(){
134  }
135 
136  virtual bool exists() = 0;
137  virtual void create() = 0;
138  virtual void drop() = 0;
139 
140  virtual IMainTable& mainTable() = 0;
141  virtual ISequenceTable& sequenceTable() = 0;
142  virtual IDatabaseTable& mappingVersionTable() = 0;
143  virtual IDatabaseTable& mappingElementTable() = 0;
145  virtual IDatabaseTable& classVersionTable() = 0;
146  virtual IMappingSchema& mappingSchema() = 0;
148  coral::ISchema& storageSchema();
149 
150  private:
151  coral::ISchema& m_schema;
152  };
153 
154 }
155 
156 #endif
157 
158 
159 
static std::string versionParameterName()
virtual bool getAllNames(std::vector< std::string > &destination)=0
virtual void removeContainer(int id)=0
virtual bool getNamesForContainer(int contId, std::vector< std::string > &destination)=0
MappingRawElement & addElement(int elementId)
virtual void incrementNumberOfObjects(int id)=0
std::vector< std::string > columns
virtual ~IMainTable()
virtual std::string schemaVersion()=0
virtual bool getMapping(const std::string &version, MappingRawData &destination)=0
virtual bool getVersionList(std::set< std::string > &destination)=0
virtual bool eraseAllNames()=0
virtual void sinchronize(const std::string &sequenceName, int lastValue)=0
virtual bool selectMappingVersion(const std::string &classId, int containerId, std::string &destination)=0
virtual bool getLastId(const std::string &sequenceName, int &lastId)=0
std::map< int, MappingRawElement > elements
virtual void erase(const std::string &sequenceName)=0
virtual bool getObjectByName(const std::string &name, std::pair< int, int > &destination)=0
ContainerHeaderData(int contId, const std::string &classN, unsigned int numberObj)
virtual void setMappingVersion(const std::string &classId, int containerId, const std::string &mappingVersion)=0
virtual IDatabaseTable & classVersionTable()=0
std::string poolSchemaVersion()
virtual void updateNumberOfObjects(const std::map< int, unsigned int > &numberOfObjectsForContainerIds)=0
virtual bool getMappingVersionListForTable(const std::string &tableName, std::set< std::string > &destination)=0
virtual void addContainer(int id, const std::string &containerName, const std::string &className)=0
virtual INamingServiceTable & namingServiceTable()=0
static IDatabaseSchema * createSchemaHandle(coral::ISchema &schema)
static std::string emptyScope()
virtual bool getContainerTableMap(std::map< std::string, int > &destination)=0
virtual IDatabaseTable & mappingVersionTable()=0
coral::ISchema & m_schema
virtual void create()=0
virtual void storeMapping(const MappingRawData &data)=0
coral::ISchema & storageSchema()
virtual bool eraseObjectName(const std::string &name)=0
virtual bool add(const std::string &sequenceName)=0
IDatabaseSchema(coral::ISchema &schema)
virtual bool getClassVersionListForContainer(int containerId, std::map< std::string, std::string > &versionMap)=0
ContainerHeaderData & operator=(const ContainerHeaderData &rhs)
virtual IMappingSchema & mappingSchema()=0
virtual void insertClassVersion(const std::string &className, const std::string &classVersion, const std::string &classId, int dependencyIndex, int containerId, const std::string &mappingVersion)=0
virtual void drop()=0
virtual bool exists()=0
virtual bool getClassVersionListForMappingVersion(const std::string &mappingVersion, std::set< std::string > &destination)=0
virtual ISequenceTable & sequenceTable()=0
MappingRawElement & operator==(const MappingRawElement &rhs)
virtual bool containerForMappingVersion(const std::string &mappingVersion, int &destination)=0
virtual void create()=0
virtual bool exists()=0
virtual bool getParameters(std::map< std::string, std::string > &destination)=0
virtual IContainerHeaderTable & containerHeaderTable()=0
virtual bool getNamesForObject(int contId, int itemId, std::vector< std::string > &destination)=0
virtual void setObjectName(const std::string &name, int contId, int itemId)=0
virtual bool getContainerData(std::map< std::string, ContainerHeaderData > &destination)=0
virtual void decrementNumberOfObjects(int id)=0
virtual bool getDependentClassesInContainerMapping(int containerId, std::set< std::string > &destination)=0
virtual IDatabaseTable & mappingElementTable()=0
virtual void removeMapping(const std::string &version)=0
std::string className(const T &t)
Definition: ClassName.h:30
virtual bool getMappingVersionListForContainer(int containerId, std::set< std::string > &destination, bool onlyDependency=false)=0
virtual void drop()=0
virtual IMainTable & mainTable()=0