CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
MetaData.cc
Go to the documentation of this file.
4 #include "RelationalAccess/SchemaException.h"
5 #include <memory>
6 //#include <iostream>
7 
8 
9 namespace {
10 
11  std::string mdErrorPrefix(const std::string& source, const std::string& name) {
12  return source+std::string(": metadata entry \"")+name+std::string("\" ");
13  }
14 
15 
16  void mdError(const std::string& source, const std::string& name, const std::string& mess) {
17  throw cond::Exception(mdErrorPrefix(source,name)+mess);
18  }
19 
20  void mdDuplicateEntryError(const std::string& source, const std::string& name) {
21  mdError(source, name, "Already exists");
22  }
23 
24  void mdNoEntry(const std::string& source, const std::string& name) {
25  mdError(source, name, "does not exists");
26  }
27 
28 }
29 
30 
31 cond::MetaData::MetaData(cond::DbSession& userSession):m_userSession( userSession ){
32 }
34 }
35 bool
36 cond::MetaData::addMapping(const std::string& name,
37  const std::string& iovtoken,
39  try{
40  if(!m_userSession.storage().exists()) return false;
41  ora::OId oid;
42  oid.fromString( iovtoken );
43  m_userSession.storage().setObjectName( name, oid );
44  }catch( const coral::DuplicateEntryInUniqueKeyException& er ){
45  mdDuplicateEntryError("addMapping",name);
46  }catch(std::exception& er){
47  mdError("MetaData::addMapping",name,er.what());
48  }
49  return true;
50 }
51 
52 const std::string
53 cond::MetaData::getToken( const std::string& name ) const{
54  bool ok=false;
55  std::string iovtoken("");
56  if(!m_userSession.storage().exists()) return iovtoken;
57  try{
58  ora::OId oid;
59  ok = m_userSession.storage().getItemId( name, oid );
60  if(ok) {
61  iovtoken = oid.toString();
62  }
63  }catch(const std::exception& er){
64  mdError("MetaData::getToken", name,er.what() );
65  }
66  if (!ok) mdNoEntry("MetaData::getToken", name);
67  return iovtoken;
68 }
69 
70 bool cond::MetaData::hasTag( const std::string& name ) const{
71  bool result=false;
72  if(!m_userSession.storage().exists()) return result;
73  try{
74  ora::OId oid;
75  result = m_userSession.storage().getItemId( name, oid );
76  }catch(const std::exception& er){
77  mdError("MetaData::hasTag", name, er.what() );
78  }
79  return result;
80 }
81 
82 void
83 cond::MetaData::listAllTags( std::vector<std::string>& result ) const{
84  try{
85  m_userSession.storage().listObjectNames( result );
86  }catch(const std::exception& er){
87  throw cond::Exception( std::string("MetaData::listAllTags: " )+er.what() );
88  }
89 }
90 
91 void
93  try{
94  m_userSession.storage().eraseAllNames();
95  }catch(const std::exception& er){
96  throw cond::Exception( std::string("MetaData::deleteAllEntries: " )+er.what() );
97  }
98 }
99 
100 void cond::MetaData::deleteEntryByTag( const std::string& tag ){
101  try{
102  m_userSession.storage().eraseObjectName( tag );
103  }catch(const std::exception& er){
104  throw cond::Exception( std::string("MetaData::deleteEntryByTag: " )+er.what() );
105  }
106 }
void deleteAllEntries()
Definition: MetaData.cc:92
Definition: OId.h:8
const std::string getToken(const std::string &tagname) const
Definition: MetaData.cc:53
TimeType
Definition: Time.h:21
MetaData(cond::DbSession &userSession)
Definition: MetaData.cc:31
bool addMapping(const std::string &name, const std::string &token, cond::TimeType timetype=cond::runnumber)
Definition: MetaData.cc:36
bool hasTag(const std::string &name) const
Definition: MetaData.cc:70
tuple result
Definition: query.py:137
std::string toString() const
Definition: OId.cc:58
void deleteEntryByTag(const std::string &tag)
Definition: MetaData.cc:100
void listAllTags(std::vector< std::string > &result) const
Definition: MetaData.cc:83
bool fromString(const std::string &s)
Definition: OId.cc:64