CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_4_2_9_HLT1_bphpatch4/src/CondCore/MetaDataService/src/MetaDataDataSchemaUtility.cc

Go to the documentation of this file.
00001 #include "CondCore/MetaDataService/interface/MetaDataSchemaUtility.h"
00002 #include "CondCore/MetaDataService/interface/MetaDataNames.h"
00003 #include "RelationalAccess/SchemaException.h"
00004 #include "RelationalAccess/ISchema.h"
00005 #include "RelationalAccess/ITable.h"
00006 #include "RelationalAccess/TableDescription.h"
00007 #include "RelationalAccess/ITablePrivilegeManager.h"
00008 #include "RelationalAccess/ICursor.h"
00009 #include "RelationalAccess/IQuery.h"
00010 #include "RelationalAccess/ITableDataEditor.h"
00011 #include "CoralBase/AttributeList.h"
00012 #include "CoralBase/AttributeSpecification.h"
00013 #include "CoralBase/Attribute.h"
00014 cond::MetaDataSchemaUtility::MetaDataSchemaUtility(cond::DbSession& coraldb):m_coraldb(coraldb){
00015 }
00016 cond::MetaDataSchemaUtility::~MetaDataSchemaUtility(){}
00017 
00018 void
00019 cond::MetaDataSchemaUtility::create(){
00020   try{
00021     coral::ISchema& schema=m_coraldb.nominalSchema();
00022     coral::TableDescription description;
00023     description.setName( cond::MetaDataNames::metadataTable() );
00024     description.insertColumn(  cond::MetaDataNames::tagColumn(), coral::AttributeSpecification::typeNameForId( typeid(std::string)) );
00025     description.insertColumn( cond::MetaDataNames::tokenColumn(), coral::AttributeSpecification::typeNameForId( typeid(std::string)) );
00026     description.insertColumn( cond::MetaDataNames::timetypeColumn(), coral::AttributeSpecification::typeNameForId( typeid(int)) );
00027     std::vector<std::string> cols;
00028     cols.push_back( cond::MetaDataNames::tagColumn() );
00029     description.setPrimaryKey(cols);
00030     description.setNotNullConstraint( cond::MetaDataNames::tokenColumn() );
00031     coral::ITable& table=schema.createTable(description);
00032     table.privilegeManager().grantToPublic( coral::ITablePrivilegeManager::Select);
00033   }catch( const coral::TableAlreadyExistingException& er ){
00034     //must catch and ignore this exception!!
00035     //std::cout<<"table alreay existing, not creating a new one"<<std::endl;
00036   }
00037 }
00038 void
00039 cond::MetaDataSchemaUtility::drop(){
00040   coral::ISchema& schema=m_coraldb.nominalSchema();
00041   try{
00042     schema.dropTable(cond::MetaDataNames::metadataTable());
00043   }catch(coral::TableNotExistingException& er){
00044     //must catch and ignore this exception!!
00045     //ok do nothing
00046   }
00047 }