CMS 3D CMS Logo

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

#include <PoolDatabaseSchema.h>

Inheritance diagram for ora::CondMetadataTable:
ora::INamingServiceTable ora::IDatabaseTable

Public Member Functions

 CondMetadataTable (coral::ISchema &dbSchema, PoolDbCache &dbCache)
 
void create ()
 
void drop ()
 
bool eraseAllNames ()
 
bool eraseObjectName (const std::string &name)
 
bool exists ()
 
bool getAllNames (std::vector< std::string > &destination)
 
bool getNamesForContainer (int contId, std::vector< std::string > &destination)
 
bool getNamesForObject (int contId, int itemId, std::vector< std::string > &destination)
 
bool getObjectByName (const std::string &name, std::pair< int, int > &destination)
 
void setObjectName (const std::string &name, int contId, int itemId)
 
virtual ~CondMetadataTable ()
 
- Public Member Functions inherited from ora::INamingServiceTable
virtual ~INamingServiceTable ()
 
- Public Member Functions inherited from ora::IDatabaseTable
virtual ~IDatabaseTable ()
 

Static Public Member Functions

static std::string & objectNameColumn ()
 
static std::string & tableName ()
 
static std::string & timetypeColumn ()
 
static std::string & tokenColumn ()
 

Private Attributes

PoolDbCachem_dbCache
 
coral::ISchema & m_schema
 

Detailed Description

Definition at line 202 of file PoolDatabaseSchema.h.

Constructor & Destructor Documentation

ora::CondMetadataTable::CondMetadataTable ( coral::ISchema &  dbSchema,
PoolDbCache dbCache 
)

Definition at line 1105 of file PoolDatabaseSchema.cc.

1106  :
1107  m_schema( dbSchema ),
1108  m_dbCache( dbCache ){
1109 }
ora::CondMetadataTable::~CondMetadataTable ( )
virtual

Definition at line 1111 of file PoolDatabaseSchema.cc.

1111  {
1112 }

Member Function Documentation

void ora::CondMetadataTable::create ( )
virtual

Implements ora::IDatabaseTable.

Definition at line 1252 of file PoolDatabaseSchema.cc.

References ora::throwException().

1252  {
1253  if( m_schema.existsTable( tableName() )){
1254  throwException( "Metadata table already exists in this schema.",
1255  "CondMetadataTable::create");
1256  }
1257  throwException( "Cond Metadata table cannot be created.","CondMetadataTable::create");
1258 }
void throwException(const std::string &message, const std::string &methodName)
Definition: Exception.cc:10
static std::string & tableName()
void ora::CondMetadataTable::drop ( )
virtual

Implements ora::IDatabaseTable.

Definition at line 1260 of file PoolDatabaseSchema.cc.

References ora::throwException().

1260  {
1261  if( !m_schema.existsTable( tableName() )){
1262  throwException( "Metadata table does not exists in this schema.",
1263  "CondMetadataTable::drop");
1264  }
1265  throwException( "Cond Metadata table cannot be dropped.","CondMetadataTable::drop");
1266 }
void throwException(const std::string &message, const std::string &methodName)
Definition: Exception.cc:10
static std::string & tableName()
bool ora::CondMetadataTable::eraseAllNames ( )
virtual

Implements ora::INamingServiceTable.

Definition at line 1137 of file PoolDatabaseSchema.cc.

1137  {
1138  std::string condition("");
1139  coral::AttributeList whereData;
1140  return m_schema.tableHandle( tableName() ).dataEditor().deleteRows( condition, whereData )>0;
1141 }
static std::string & tableName()
bool ora::CondMetadataTable::eraseObjectName ( const std::string &  name)
virtual

Implements ora::INamingServiceTable.

Definition at line 1129 of file PoolDatabaseSchema.cc.

1129  {
1130  coral::AttributeList whereData;
1131  whereData.extend<std::string>( objectNameColumn() );
1132  whereData.begin()->data<std::string>() = name;
1133  std::string condition = objectNameColumn() + " = :" + objectNameColumn();
1134  return m_schema.tableHandle( tableName() ).dataEditor().deleteRows( condition, whereData )>0;
1135 }
static std::string & objectNameColumn()
static std::string & tableName()
bool ora::CondMetadataTable::exists ( )
virtual

Implements ora::IDatabaseTable.

Definition at line 1248 of file PoolDatabaseSchema.cc.

1248  {
1249  return m_schema.existsTable( tableName() );
1250 }
static std::string & tableName()
bool ora::CondMetadataTable::getAllNames ( std::vector< std::string > &  destination)
virtual

Implements ora::INamingServiceTable.

Definition at line 1229 of file PoolDatabaseSchema.cc.

References mergeVDriftHistosByStation::name, o2o::query, and runTheMatrix::ret.

1229  {
1230 
1231  bool ret = false;
1232  coral::ITable& containerTable = m_schema.tableHandle( tableName() );
1233  std::auto_ptr<coral::IQuery> query( containerTable.newQuery());
1234  coral::AttributeList outputBuffer;
1235  outputBuffer.extend<std::string>( objectNameColumn() );
1236  query->defineOutput( outputBuffer );
1237  query->addToOutputList( objectNameColumn() );
1238  coral::ICursor& cursor = query->execute();
1239  while ( cursor.next() ) {
1240  ret = true;
1241  const coral::AttributeList& row = cursor.currentRow();
1242  std::string name = row[ objectNameColumn() ].data< std::string >();
1243  destination.push_back( name );
1244  }
1245  return ret;
1246 }
static std::string & objectNameColumn()
tuple query
Definition: o2o.py:269
static std::string & tableName()
bool ora::CondMetadataTable::getNamesForContainer ( int  contId,
std::vector< std::string > &  destination 
)
virtual

Implements ora::INamingServiceTable.

Definition at line 1200 of file PoolDatabaseSchema.cc.

References ora::PoolDbCacheData::m_className, ora::PoolDbCacheData::m_name, mergeVDriftHistosByStation::name, o2o::query, runTheMatrix::ret, and cond::writeTokenContainerFragment().

1201  {
1202 
1203  bool ret = false;
1204  coral::ITable& containerTable = m_schema.tableHandle( tableName() );
1205  std::auto_ptr<coral::IQuery> query( containerTable.newQuery());
1206  coral::AttributeList outputBuffer;
1207  outputBuffer.extend<std::string>( objectNameColumn() );
1208  query->defineOutput( outputBuffer );
1209  query->addToOutputList( objectNameColumn() );
1210  std::ostringstream condition;
1211  condition << tokenColumn()<<" LIKE :"<< tokenColumn();
1212  ora::PoolDbCacheData& contData = m_dbCache.find( contId );
1213  std::string tokenFragment = cond::writeTokenContainerFragment( contData.m_name, contData.m_className )+"%";
1214  coral::AttributeList condData;
1215  condData.extend<std::string>( tokenColumn() );
1216  coral::AttributeList::iterator iAttribute = condData.begin();
1217  iAttribute->data< std::string >() = tokenFragment;
1218  query->setCondition( condition.str(), condData );
1219  coral::ICursor& cursor = query->execute();
1220  while ( cursor.next() ) {
1221  ret = true;
1222  const coral::AttributeList& row = cursor.currentRow();
1223  std::string name = row[ objectNameColumn() ].data< std::string >();
1224  destination.push_back( name );
1225  }
1226  return ret;
1227 }
static std::string & objectNameColumn()
std::string writeTokenContainerFragment(const std::string &containerName, const std::string &className)
Definition: PoolToken.cc:56
PoolDbCacheData & find(int id)
static std::string & tokenColumn()
tuple query
Definition: o2o.py:269
static std::string & tableName()
bool ora::CondMetadataTable::getNamesForObject ( int  contId,
int  itemId,
std::vector< std::string > &  destination 
)
virtual

Implements ora::INamingServiceTable.

Definition at line 1171 of file PoolDatabaseSchema.cc.

References ora::PoolDbCacheData::m_className, ora::PoolDbCacheData::m_name, mergeVDriftHistosByStation::name, o2o::query, runTheMatrix::ret, and cond::writeToken().

1173  {
1174  bool ret = false;
1175  coral::ITable& containerTable = m_schema.tableHandle( tableName() );
1176  std::auto_ptr<coral::IQuery> query( containerTable.newQuery());
1177  coral::AttributeList outputBuffer;
1178  outputBuffer.extend<std::string>( objectNameColumn() );
1179  query->defineOutput( outputBuffer );
1180  query->addToOutputList( objectNameColumn() );
1181  std::ostringstream condition;
1182  condition << tokenColumn()<<"= :"<< tokenColumn();
1183  ora::PoolDbCacheData& contData = m_dbCache.find( contId );
1184  std::string token = cond::writeToken( contData.m_name, contId, itemId, contData.m_className );
1185  coral::AttributeList condData;
1186  condData.extend<std::string>( tokenColumn() );
1187  coral::AttributeList::iterator iAttribute = condData.begin();
1188  iAttribute->data< std::string >() = token;
1189  query->setCondition( condition.str(), condData );
1190  coral::ICursor& cursor = query->execute();
1191  while ( cursor.next() ) {
1192  ret = true;
1193  const coral::AttributeList& row = cursor.currentRow();
1194  std::string name = row[ objectNameColumn() ].data< std::string >();
1195  destination.push_back( name );
1196  }
1197  return ret;
1198 }
static std::string & objectNameColumn()
PoolDbCacheData & find(int id)
static std::string & tokenColumn()
tuple query
Definition: o2o.py:269
std::string writeToken(const std::string &containerName, int oid0, int oid1, const std::string &className)
Definition: PoolToken.cc:45
static std::string & tableName()
bool ora::CondMetadataTable::getObjectByName ( const std::string &  name,
std::pair< int, int > &  destination 
)
virtual

Implements ora::INamingServiceTable.

Definition at line 1143 of file PoolDatabaseSchema.cc.

References cond::parseToken(), o2o::query, and runTheMatrix::ret.

1144  {
1145  bool ret = false;
1146  coral::ITable& containerTable = m_schema.tableHandle( tableName() );
1147  std::auto_ptr<coral::IQuery> query( containerTable.newQuery());
1148  coral::AttributeList outputBuffer;
1149  outputBuffer.extend<std::string>( tokenColumn() );
1150  query->defineOutput( outputBuffer );
1151  query->addToOutputList( tokenColumn() );
1152  std::ostringstream condition;
1153  condition << objectNameColumn()<<"= :"<< objectNameColumn();
1154  coral::AttributeList condData;
1155  condData.extend<std::string>( objectNameColumn() );
1156  coral::AttributeList::iterator iAttribute = condData.begin();
1157  iAttribute->data< std::string >() = name;
1158  query->setCondition( condition.str(), condData );
1159  coral::ICursor& cursor = query->execute();
1160  while ( cursor.next() ) {
1161  ret = true;
1162  const coral::AttributeList& row = cursor.currentRow();
1163  std::string token = row[ tokenColumn() ].data< std::string >();
1164  std::pair<std::string,int> tokData = cond::parseToken( token );
1165  destination.first = m_dbCache.idByName( tokData.first );
1166  destination.second = tokData.second;
1167  }
1168  return ret;
1169 }
static std::string & objectNameColumn()
std::pair< std::string, int > parseToken(const std::string &objectId)
Definition: PoolToken.cc:16
int idByName(const std::string &name)
static std::string & tokenColumn()
tuple query
Definition: o2o.py:269
static std::string & tableName()
std::string & ora::CondMetadataTable::objectNameColumn ( )
static

Definition at line 1090 of file PoolDatabaseSchema.cc.

1090  {
1091  static std::string s_column("NAME");
1092  return s_column;
1093 }
void ora::CondMetadataTable::setObjectName ( const std::string &  name,
int  contId,
int  itemId 
)
virtual

Implements ora::INamingServiceTable.

Definition at line 1114 of file PoolDatabaseSchema.cc.

References cond::writeToken().

1115  {
1116  coral::AttributeList dataToInsert;
1117  dataToInsert.extend<std::string>( objectNameColumn() );
1118  dataToInsert.extend<std::string>( tokenColumn());
1119  dataToInsert.extend<int>( timetypeColumn());
1120  ora::PoolDbCacheData& contData = m_dbCache.find( contId );
1121  std::string token = cond::writeToken( contData.m_name, contId, itemId, contData.m_className );
1122  dataToInsert[ objectNameColumn() ].data<std::string>() = name;
1123  dataToInsert[ tokenColumn() ].data<std::string>() = token;
1124  dataToInsert[ timetypeColumn() ].data<int>() = -1; // is it fine ???
1125  coral::ITable& containerTable = m_schema.tableHandle( tableName() );
1126  containerTable.dataEditor().insertRow( dataToInsert );
1127 }
static std::string & objectNameColumn()
PoolDbCacheData & find(int id)
static std::string & tokenColumn()
std::string writeToken(const std::string &containerName, int oid0, int oid1, const std::string &className)
Definition: PoolToken.cc:45
static std::string & timetypeColumn()
static std::string & tableName()
std::string & ora::CondMetadataTable::tableName ( )
static

Definition at line 1085 of file PoolDatabaseSchema.cc.

1085  {
1086  static std::string s_name("METADATA");
1087  return s_name;
1088 }
std::string & ora::CondMetadataTable::timetypeColumn ( )
static

Definition at line 1100 of file PoolDatabaseSchema.cc.

1100  {
1101  static std::string s_column("TIMETYPE");
1102  return s_column;
1103 }
std::string & ora::CondMetadataTable::tokenColumn ( )
static

Definition at line 1095 of file PoolDatabaseSchema.cc.

1095  {
1096  static std::string s_column("TOKEN");
1097  return s_column;
1098 }

Member Data Documentation

PoolDbCache& ora::CondMetadataTable::m_dbCache
private

Definition at line 224 of file PoolDatabaseSchema.h.

coral::ISchema& ora::CondMetadataTable::m_schema
private

Definition at line 223 of file PoolDatabaseSchema.h.