CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Private Member Functions | Private Attributes
ora::ContainerSchema Class Reference

#include <ContainerSchema.h>

Public Member Functions

IBlobStreamingServiceblobStreamingService ()
 
const std::string & className ()
 
int containerId ()
 
const std::string & containerName ()
 
 ContainerSchema (int containerId, const std::string &containerName, const Reflex::Type &containerType, DatabaseSession &session)
 
 ContainerSchema (int containerId, const std::string &containerName, const std::string &className, DatabaseSession &session)
 
SequencescontainerSequences ()
 
void create ()
 
void create (const Reflex::Type &dependentClass)
 
DatabaseSessiondbSession ()
 
void drop ()
 
void evolve ()
 
void evolve (const Reflex::Type &dependentClass, MappingTree &baseMapping)
 
bool extendIfRequired (const Reflex::Type &dependentClass)
 
MappingTreemapping (bool writeEnabled=false)
 
MappingElementmappingForDependentClass (const Reflex::Type &dependentClass, bool writeEnabled=false)
 
bool mappingForDependentClasses (std::vector< MappingElement > &destination)
 
const std::string & mappingVersion ()
 
IReferenceHandlerreferenceHandler ()
 
void setAccessPermission (const std::string &principal, bool forWrite)
 
coral::ISchema & storageSchema ()
 
const Reflex::Type & type ()
 
 ~ContainerSchema ()
 

Private Member Functions

void extend (const Reflex::Type &dependentClass)
 
void getTableHierarchy (const std::set< std::string > &containerMappingVersions, std::vector< std::string > &destination)
 
void initClassDict ()
 
bool loadMappingForDependentClass (const Reflex::Type &dependentClass)
 

Private Attributes

Reflex::Type m_classDict
 
std::string m_className
 
int m_containerId
 
std::string m_containerName
 
Sequences m_containerSchemaSequences
 
std::map< std::string,
MappingTree * > 
m_dependentMappings
 
bool m_loaded
 
MappingTree m_mapping
 
DatabaseSessionm_session
 

Detailed Description

Definition at line 19 of file ContainerSchema.h.

Constructor & Destructor Documentation

ora::ContainerSchema::ContainerSchema ( int  containerId,
const std::string &  containerName,
const Reflex::Type &  containerType,
DatabaseSession session 
)

Definition at line 50 of file ContainerSchema.cc.

53  :
56  m_className( containerType.Name( Reflex::SCOPED ) ),
57  m_classDict( containerType ),
58  m_session( session ),
59  m_loaded( false ),
61  m_mapping(),
63 }
std::map< std::string, MappingTree * > m_dependentMappings
Reflex::Type m_classDict
Sequences m_containerSchemaSequences
DatabaseSession & m_session
std::string m_containerName
const std::string & containerName()
ora::ContainerSchema::ContainerSchema ( int  containerId,
const std::string &  containerName,
const std::string &  className,
DatabaseSession session 
)

Definition at line 65 of file ContainerSchema.cc.

68  :
72  m_classDict(),
73  m_session( session ),
74  m_loaded( false ),
76  m_mapping(),
78 }
std::map< std::string, MappingTree * > m_dependentMappings
Reflex::Type m_classDict
Sequences m_containerSchemaSequences
const std::string & className()
DatabaseSession & m_session
std::string m_containerName
const std::string & containerName()
ora::ContainerSchema::~ContainerSchema ( )

Definition at line 80 of file ContainerSchema.cc.

80  {
81  for( std::map<std::string,MappingTree*>::iterator iDep = m_dependentMappings.begin();
82  iDep != m_dependentMappings.end(); ++iDep ){
83  delete iDep->second;
84  }
85 }
std::map< std::string, MappingTree * > m_dependentMappings

Member Function Documentation

ora::IBlobStreamingService * ora::ContainerSchema::blobStreamingService ( )

Definition at line 339 of file ContainerSchema.cc.

339  {
341 }
DatabaseSession & m_session
IBlobStreamingService * blobStreamingService()
Configuration & configuration()
const std::string & ora::ContainerSchema::className ( )

Definition at line 359 of file ContainerSchema.cc.

359  {
360  return m_className;
361 }
int ora::ContainerSchema::containerId ( )

Definition at line 351 of file ContainerSchema.cc.

351  {
352  return m_containerId;
353 }
const std::string & ora::ContainerSchema::containerName ( )

Definition at line 355 of file ContainerSchema.cc.

355  {
356  return m_containerName;
357 }
std::string m_containerName
ora::Sequences & ora::ContainerSchema::containerSequences ( )

Definition at line 335 of file ContainerSchema.cc.

335  {
337 }
Sequences m_containerSchemaSequences
void ora::ContainerSchema::create ( )

Definition at line 93 of file ContainerSchema.cc.

References ora::MappingToSchema::create(), ora::MappingGenerator::createNewMapping(), ora::MappingRules::sequenceNameForContainer(), ora::MappingRules::sequenceNameForDependentClass(), and AlCaHLTBitMon_QueryRunRegistry::string.

93  {
94 
95  initClassDict();
96  // adding the new entry in the container table
98 
99  // creating and storing the mapping
101  MappingGenerator mapGen( m_session.schema().storageSchema() );
102  mapGen.createNewMapping( m_containerName, m_classDict, m_mapping );
103  m_mapping.setVersion( newMappingVersion );
105  m_session.mappingDatabase().insertClassVersion( m_classDict, 0, m_containerId, newMappingVersion, true );
106  //m_mapping.tables();
107  // creating the sequences...
109  for( std::map<std::string,MappingTree*>::iterator iDep = m_dependentMappings.begin();
110  iDep != m_dependentMappings.end(); ++iDep ){
112  }
113  // finally create the tables...
114  MappingToSchema mapping2Schema( m_session.schema().storageSchema() );
115  mapping2Schema.create( m_mapping );
116  m_loaded = true;
117 }
std::map< std::string, MappingTree * > m_dependentMappings
void insertClassVersion(const Reflex::Type &dictionaryEntry, int dependencyIndex, int containerId, const std::string &mappingVersion, bool asBase=false)
IDatabaseSchema & schema()
void storeMapping(const MappingTree &mappingStructure)
Reflex::Type m_classDict
Sequences m_containerSchemaSequences
virtual void addContainer(int id, const std::string &containerName, const std::string &className)=0
DatabaseSession & m_session
coral::ISchema & storageSchema()
MappingDatabase & mappingDatabase()
std::string newMappingVersionForContainer(const std::string &className)
std::string m_containerName
void setVersion(const std::string &version)
Definition: MappingTree.h:133
static std::string sequenceNameForContainer(const std::string &containerName)
Definition: MappingRules.cc:14
virtual IContainerHeaderTable & containerHeaderTable()=0
static std::string sequenceNameForDependentClass(const std::string &containerName, const std::string &className)
Definition: MappingRules.cc:20
void create(const std::string &sequenceName)
Definition: Sequences.cc:18
void ora::ContainerSchema::create ( const Reflex::Type &  dependentClass)

Definition at line 266 of file ContainerSchema.cc.

References className(), ora::MappingToSchema::create(), ora::MappingRules::sequenceNameForDependentClass(), and AlCaHLTBitMon_QueryRunRegistry::string.

266  {
267  std::string className = dependentClassDict.Name(Reflex::SCOPED);
268  std::map<std::string,MappingTree*>::iterator iDep =
269  m_dependentMappings.insert( std::make_pair( className, new MappingTree ) ).first;
270  MappingGenerator mapGen( m_session.schema().storageSchema() );
271  MappingToSchema mapping2Schema( m_session.schema().storageSchema() );
272  mapGen.createNewDependentMapping( dependentClassDict, m_mapping, *iDep->second );
273  mapping2Schema.create( *iDep->second );
275  iDep->second->setVersion( newMappingVersion );
276  m_session.mappingDatabase().storeMapping( *iDep->second );
277  m_session.mappingDatabase().insertClassVersion( dependentClassDict, 1, m_containerId, newMappingVersion, true );
279 }
std::map< std::string, MappingTree * > m_dependentMappings
void insertClassVersion(const Reflex::Type &dictionaryEntry, int dependencyIndex, int containerId, const std::string &mappingVersion, bool asBase=false)
IDatabaseSchema & schema()
void storeMapping(const MappingTree &mappingStructure)
Sequences m_containerSchemaSequences
const std::string & className()
DatabaseSession & m_session
coral::ISchema & storageSchema()
MappingDatabase & mappingDatabase()
std::string newMappingVersionForContainer(const std::string &className)
std::string m_containerName
static std::string sequenceNameForDependentClass(const std::string &containerName, const std::string &className)
Definition: MappingRules.cc:20
void create(const std::string &sequenceName)
Definition: Sequences.cc:18
ora::DatabaseSession & ora::ContainerSchema::dbSession ( )

Definition at line 367 of file ContainerSchema.cc.

367  {
368  return m_session;
369 }
DatabaseSession & m_session
void ora::ContainerSchema::drop ( )

Definition at line 137 of file ContainerSchema.cc.

References ora::MappingRules::sequenceNameForContainer(), and ora::MappingRules::sequenceNameForDependentClass().

137  {
138 
139  std::set<std::string> containerMappingVersions;
141  std::vector<std::string> orderedTableList;
142  getTableHierarchy( containerMappingVersions, orderedTableList );
143 
144  // getting the dependent class list...
145  std::set<std::string> depClasses;
147 
148  // now the mappings can be removed
149  for( std::set<std::string>::const_iterator iM = containerMappingVersions.begin();
150  iM != containerMappingVersions.end(); ++iM ){
152  }
153  // removing the sequences
155  for(std::set<std::string>::const_iterator iDepCl = depClasses.begin();
156  iDepCl != depClasses.end(); iDepCl++){
158  }
159 
160  // removing the entry in the containers table
162 
163  // finally drop the container tables following the hierarchy
164  for(std::vector<std::string>::reverse_iterator iTable = orderedTableList.rbegin();
165  iTable != orderedTableList.rend(); iTable++ ){
166  m_session.schema().storageSchema().dropIfExistsTable( *iTable );
167  }
168 
169 }
virtual void removeContainer(int id)=0
void erase(const std::string &sequenceName)
Definition: Sequences.cc:63
IDatabaseSchema & schema()
bool getMappingVersionsForContainer(int containerId, std::set< std::string > &versionList)
void getTableHierarchy(const std::set< std::string > &containerMappingVersions, std::vector< std::string > &destination)
Sequences m_containerSchemaSequences
DatabaseSession & m_session
coral::ISchema & storageSchema()
MappingDatabase & mappingDatabase()
bool getDependentClassesForContainer(int containerId, std::set< std::string > &list)
std::string m_containerName
static std::string sequenceNameForContainer(const std::string &containerName)
Definition: MappingRules.cc:14
virtual IContainerHeaderTable & containerHeaderTable()=0
static std::string sequenceNameForDependentClass(const std::string &containerName, const std::string &className)
Definition: MappingRules.cc:20
void removeMapping(const std::string &version)
void ora::ContainerSchema::evolve ( )

Definition at line 171 of file ContainerSchema.cc.

References ora::MappingToSchema::alter(), AlCaHLTBitMon_QueryRunRegistry::string, and ora::throwException().

171  {
172  MappingGenerator mapGen( m_session.schema().storageSchema() );
173  // retrieve the base mapping
174  MappingTree baseMapping;
175  if( !m_session.mappingDatabase().getBaseMappingForContainer( m_classDict.Name(Reflex::SCOPED), m_containerId, baseMapping )){
176  throwException("Base mapping has not been found in the database.",
177  "ContainerSchema::evolve");
178  }
179  mapGen.createNewMapping( m_containerName, m_classDict, baseMapping, m_mapping );
181  m_mapping.setVersion( newMappingVersion );
184  MappingToSchema mapping2Schema( m_session.schema().storageSchema() );
185  mapping2Schema.alter( m_mapping );
186  m_loaded = true;
187 }
bool getBaseMappingForContainer(const std::string &className, int containerId, MappingTree &destination)
void insertClassVersion(const Reflex::Type &dictionaryEntry, int dependencyIndex, int containerId, const std::string &mappingVersion, bool asBase=false)
IDatabaseSchema & schema()
void storeMapping(const MappingTree &mappingStructure)
Reflex::Type m_classDict
DatabaseSession & m_session
coral::ISchema & storageSchema()
MappingDatabase & mappingDatabase()
std::string newMappingVersionForContainer(const std::string &className)
std::string m_containerName
void throwException(const std::string &message, const std::string &methodName) __attribute__((noreturn))
Definition: Exception.cc:10
void setVersion(const std::string &version)
Definition: MappingTree.h:133
void ora::ContainerSchema::evolve ( const Reflex::Type &  dependentClass,
MappingTree baseMapping 
)

Definition at line 189 of file ContainerSchema.cc.

References className(), ora::MappingTree::className(), AlCaHLTBitMon_QueryRunRegistry::string, and ora::throwException().

189  {
190  std::string className = dependentClass.Name(Reflex::SCOPED);
191  MappingGenerator mapGen( m_session.schema().storageSchema() );
192  std::map<std::string,MappingTree*>::iterator iDep =
193  m_dependentMappings.insert( std::make_pair( className, new MappingTree ) ).first;
194  if( baseMapping.className() != dependentClass.Name(Reflex::SCOPED) ){
195  throwException("Provided base mapping does not map class \""+dependentClass.Name(Reflex::SCOPED)+"\".",
196  "ContainerSchema::evolve");
197  }
198  mapGen.createNewDependentMapping( dependentClass, m_mapping, baseMapping, *iDep->second );
200  iDep->second->setVersion( newMappingVersion );
201  m_session.mappingDatabase().storeMapping( *iDep->second );
202  m_session.mappingDatabase().insertClassVersion( dependentClass, 1, m_containerId, newMappingVersion, false );
203 }
std::map< std::string, MappingTree * > m_dependentMappings
void insertClassVersion(const Reflex::Type &dictionaryEntry, int dependencyIndex, int containerId, const std::string &mappingVersion, bool asBase=false)
IDatabaseSchema & schema()
void storeMapping(const MappingTree &mappingStructure)
const std::string & className()
DatabaseSession & m_session
coral::ISchema & storageSchema()
MappingDatabase & mappingDatabase()
std::string newMappingVersionForContainer(const std::string &className)
std::string m_containerName
void throwException(const std::string &message, const std::string &methodName) __attribute__((noreturn))
Definition: Exception.cc:10
void ora::ContainerSchema::extend ( const Reflex::Type &  dependentClass)
private

Definition at line 281 of file ContainerSchema.cc.

References className(), SurfaceDeformationFactory::create(), and AlCaHLTBitMon_QueryRunRegistry::string.

Referenced by relval_steps.WF::__init__(), Config.Process::load(), and Mixins._ValidatingParameterListBase::setValue().

281  {
282  std::string className = dependentClassDict.Name(Reflex::SCOPED);
283  MappingTree baseMapping;
285  m_containerId, baseMapping ) ){
286  create( dependentClassDict );
287  } else {
288  evolve( dependentClassDict, baseMapping );
289  }
290 }
bool getBaseMappingForContainer(const std::string &className, int containerId, MappingTree &destination)
const std::string & className()
DatabaseSession & m_session
MappingDatabase & mappingDatabase()
bool ora::ContainerSchema::extendIfRequired ( const Reflex::Type &  dependentClass)

Definition at line 292 of file ContainerSchema.cc.

References run_regression::ret.

292  {
293  bool ret = false;
294  if( ! loadMappingForDependentClass( dependentClassDict ) ){
295  extend( dependentClassDict );
296  ret = true;
297  }
298  return ret;
299 }
bool loadMappingForDependentClass(const Reflex::Type &dependentClass)
void extend(const Reflex::Type &dependentClass)
void ora::ContainerSchema::getTableHierarchy ( const std::set< std::string > &  containerMappingVersions,
std::vector< std::string > &  destination 
)
private

Definition at line 119 of file ContainerSchema.cc.

References ora::addFromTableHierarchy(), ora::getTableHierarchyFromMappingElement(), ora::MappingElement::tableName(), and ora::MappingTree::topElement().

119  {
120  // building the table hierarchy
121  std::map< std::string, std::set<std::string> > tableHierarchy;
122  std::set<std::string> topLevelTables; // should be strictly only one!
123  for( std::set<std::string>::const_iterator iV = containerMappingVersions.begin();
124  iV!= containerMappingVersions.end(); ++iV ){
125  MappingTree mapping;
126  if( m_session.mappingDatabase().getMappingByVersion( *iV, mapping ) ){
127  topLevelTables.insert( mapping.topElement().tableName() );
128  getTableHierarchyFromMappingElement( mapping.topElement(), tableHierarchy );
129  }
130  }
131  for(std::set<std::string>::const_iterator iMainT = topLevelTables.begin();
132  iMainT != topLevelTables.end(); ++iMainT ){
133  addFromTableHierarchy( *iMainT, tableHierarchy, destination );
134  }
135 }
void addFromTableHierarchy(const std::string &tableName, std::map< std::string, std::set< std::string > > &tableList, std::vector< std::string > &orderedList)
void getTableHierarchyFromMappingElement(const MappingElement &source, std::map< std::string, std::set< std::string > > &tableList)
DatabaseSession & m_session
MappingDatabase & mappingDatabase()
bool getMappingByVersion(const std::string &version, MappingTree &destination)
MappingTree & mapping(bool writeEnabled=false)
void ora::ContainerSchema::initClassDict ( )
private

Definition at line 87 of file ContainerSchema.cc.

References ora::ClassUtils::lookupDictionary(), and ora::throwException().

87  {
89  if( !m_classDict ) throwException("Container class \""+m_className+"\" has not been found in the dictionary.",
90  "ContainerSchema::initClassDict");
91 }
Reflex::Type m_classDict
void throwException(const std::string &message, const std::string &methodName) __attribute__((noreturn))
Definition: Exception.cc:10
Reflex::Type lookupDictionary(const std::type_info &typeInfo, bool throwFlag=true)
Definition: ClassUtils.cc:93
bool ora::ContainerSchema::loadMappingForDependentClass ( const Reflex::Type &  dependentClass)
private

Definition at line 247 of file ContainerSchema.cc.

References className(), AlCaHLTBitMon_QueryRunRegistry::string, ora::throwException(), and ora::MappingDatabase::versionOfClass().

247  {
248  if( !dependentClassDict ) throwException("The dependent class has not been found in the dictionary.",
249  "ContainerSchema::loadMappingForDependentClass");
250  std::string className = dependentClassDict.Name(Reflex::SCOPED);
251  std::map<std::string,MappingTree*>::iterator iDep = m_dependentMappings.find( className );
252  if( iDep == m_dependentMappings.end() ){
253  // not in cache, search the database...
254  iDep = m_dependentMappings.insert( std::make_pair( className, new MappingTree ) ).first;
256  MappingDatabase::versionOfClass( dependentClassDict ),
257  m_containerId,
258  *iDep->second ) ){
259  m_dependentMappings.erase( className );
260  return false;
261  }
262  }
263  return true;
264 }
bool getMappingForContainer(const std::string &className, const std::string &classVersion, int containerId, MappingTree &destination)
std::map< std::string, MappingTree * > m_dependentMappings
const std::string & className()
DatabaseSession & m_session
MappingDatabase & mappingDatabase()
static std::string versionOfClass(const Reflex::Type &dictionary)
void throwException(const std::string &message, const std::string &methodName) __attribute__((noreturn))
Definition: Exception.cc:10
ora::MappingTree & ora::ContainerSchema::mapping ( bool  writeEnabled = false)

Definition at line 222 of file ContainerSchema.cc.

References ora::Configuration::automaticSchemaEvolution(), lumiQueryAPI::msg, AlCaHLTBitMon_QueryRunRegistry::string, ora::throwException(), and ora::MappingDatabase::versionOfClass().

Referenced by ora::WriteBuffer::flush(), ora::UpdateBuffer::flush(), ora::DeleteBuffer::flush(), ora::IteratorBuffer::IteratorBuffer(), and ora::ReadBuffer::ReadBuffer().

222  {
223  initClassDict();
224  if(!m_loaded ){
227  // if enabled, invoke the evolution
229  evolve();
230  } else {
231  std::string msg( "No mapping available for the class=\""+m_className+"\" version=\""+classVersion+"\"." );
233  "ContainerSchema::mapping");
234  }
235  } else {
236  m_loaded = true;
237  }
238 
239  }
241  throwException( "Mapping for container class \""+m_className+"\" could not be loaded.",
242  "ContainerSchema::mapping");
243  }
244  return m_mapping;
245 }
bool getMappingForContainer(const std::string &className, const std::string &classVersion, int containerId, MappingTree &destination)
bool getFlag(const std::string &flagName) const
Definition: Properties.cc:36
Properties & properties()
Reflex::Type m_classDict
const MappingElement & topElement() const
Definition: MappingTree.h:143
DatabaseSession & m_session
iterator find(const std::string &key)
Retrieves a sub-element.
MappingDatabase & mappingDatabase()
static std::string versionOfClass(const Reflex::Type &dictionary)
void throwException(const std::string &message, const std::string &methodName) __attribute__((noreturn))
Definition: Exception.cc:10
iterator end()
Returns an iterator in the end of the sequence.
Configuration & configuration()
static std::string automaticSchemaEvolution()
ora::MappingElement & ora::ContainerSchema::mappingForDependentClass ( const Reflex::Type &  dependentClass,
bool  writeEnabled = false 
)

Definition at line 301 of file ContainerSchema.cc.

References ora::Configuration::automaticContainerCreation(), ora::Configuration::automaticDatabaseCreation(), ora::Configuration::automaticSchemaEvolution(), className(), SurfaceDeformationFactory::create(), AlCaHLTBitMon_QueryRunRegistry::string, and ora::throwException().

302  {
303  std::string className = dependentClassDict.Name(Reflex::SCOPED);
304  if( ! loadMappingForDependentClass( dependentClassDict ) ){
305  if( writeEnabled ){
306  // check if a base is available:
307  MappingTree baseMapping;
309  m_containerId, baseMapping ) ){
310  // mapping has to be generated from scratch
313  create( dependentClassDict );
314  }
315  } else {
316  // evolve if allowed
318  evolve( dependentClassDict, baseMapping );
319  }
320  }
321  }
322  }
323  std::map<std::string,MappingTree*>::iterator iDep = m_dependentMappings.find( className );
324  if( iDep == m_dependentMappings.end() ){
325  throwException( "Mapping for class \""+ className + "\" is not available in the database.",
326  "ContainerSchema::mappingForDependentClass");
327  }
328  return iDep->second->topElement();
329 }
bool getFlag(const std::string &flagName) const
Definition: Properties.cc:36
bool getBaseMappingForContainer(const std::string &className, int containerId, MappingTree &destination)
Properties & properties()
std::map< std::string, MappingTree * > m_dependentMappings
static std::string automaticContainerCreation()
static std::string automaticDatabaseCreation()
const std::string & className()
DatabaseSession & m_session
MappingDatabase & mappingDatabase()
bool loadMappingForDependentClass(const Reflex::Type &dependentClass)
void throwException(const std::string &message, const std::string &methodName) __attribute__((noreturn))
Definition: Exception.cc:10
Configuration & configuration()
static std::string automaticSchemaEvolution()
bool ora::ContainerSchema::mappingForDependentClasses ( std::vector< MappingElement > &  destination)

Definition at line 331 of file ContainerSchema.cc.

Referenced by ora::UpdateBuffer::flush(), and ora::DeleteBuffer::flush().

331  {
333 }
bool getDependentMappingsForContainer(int containerId, std::vector< MappingElement > &destination)
DatabaseSession & m_session
MappingDatabase & mappingDatabase()
const std::string & ora::ContainerSchema::mappingVersion ( )

Definition at line 347 of file ContainerSchema.cc.

347  {
348  return m_mapping.version();
349 }
const std::string & version() const
Definition: MappingTree.h:128
ora::IReferenceHandler * ora::ContainerSchema::referenceHandler ( )

Definition at line 343 of file ContainerSchema.cc.

343  {
345 }
DatabaseSession & m_session
IReferenceHandler * referenceHandler()
Configuration & configuration()
void ora::ContainerSchema::setAccessPermission ( const std::string &  principal,
bool  forWrite 
)

Definition at line 205 of file ContainerSchema.cc.

References cmsRelvalreport::principal(), and ora::setTableAccessPermission().

206  {
207  std::set<std::string> containerMappingVersions;
209  std::vector<std::string> orderedTableList;
210  getTableHierarchy( containerMappingVersions, orderedTableList );
211  for( std::vector<std::string>::const_iterator iT = orderedTableList.begin();
212  iT != orderedTableList.end(); iT++ ){
213  setTableAccessPermission( m_session.schema().storageSchema().tableHandle( *iT ), principal, forWrite );
214  }
215 }
void setTableAccessPermission(coral::ITable &table, const std::string &principal, bool forWrite)
IDatabaseSchema & schema()
bool getMappingVersionsForContainer(int containerId, std::set< std::string > &versionList)
void getTableHierarchy(const std::set< std::string > &containerMappingVersions, std::vector< std::string > &destination)
DatabaseSession & m_session
coral::ISchema & storageSchema()
MappingDatabase & mappingDatabase()
coral::ISchema & ora::ContainerSchema::storageSchema ( )
const Reflex::Type & ora::ContainerSchema::type ( )

Member Data Documentation

Reflex::Type ora::ContainerSchema::m_classDict
private

Definition at line 84 of file ContainerSchema.h.

std::string ora::ContainerSchema::m_className
private

Definition at line 83 of file ContainerSchema.h.

int ora::ContainerSchema::m_containerId
private

Definition at line 81 of file ContainerSchema.h.

std::string ora::ContainerSchema::m_containerName
private

Definition at line 82 of file ContainerSchema.h.

Sequences ora::ContainerSchema::m_containerSchemaSequences
private

Definition at line 87 of file ContainerSchema.h.

std::map<std::string,MappingTree*> ora::ContainerSchema::m_dependentMappings
private

Definition at line 89 of file ContainerSchema.h.

bool ora::ContainerSchema::m_loaded
private

Definition at line 86 of file ContainerSchema.h.

MappingTree ora::ContainerSchema::m_mapping
private

Definition at line 88 of file ContainerSchema.h.

DatabaseSession& ora::ContainerSchema::m_session
private

Definition at line 85 of file ContainerSchema.h.