Go to the documentation of this file.
    9 #include <TDictionary.h> 
   11 #include <TDataMember.h> 
   12 #include <TIterator.h> 
   23 #include "dbclient/KM3NeTDBClient.h" 
   34   using KM3NeT::DB::DBException;
 
   35   using KM3NeT::DB::Server;
 
   36   using KM3NeT::DB::Client;
 
   37   using KM3NeT::DB::ResultSet;
 
   38   using KM3NeT::DB::Selector;
 
   48     const char* home = getenv(
"HOME");
 
   50     return MAKE_CSTRING((home != NULL ? home : 
".") << 
"/" << 
".km3netdb_cookie");
 
   61     return getenv(
"DBCOOKIE");
 
   88     public std::shared_ptr<Client>
 
  111       if (db.
get() != NULL) {
 
  113         static_cast<std::shared_ptr<Client>&
>(db).
reset();
 
  124     static void reset(
const std::string& usr,
 
  125                       const std::string& pwd)
 
  127       static_cast<std::shared_ptr<Client>&
>(
JDB::get()) = Client::Create(Server::Default, usr.c_str(), pwd.c_str());
 
  136     static void reset(
const std::string& cookie)
 
  141       string buffer = cookie;
 
  145         ifstream in(cookie.c_str());
 
  154       if (pos != string::npos) {
 
  155         buffer.erase(0, pos);
 
  158       static_cast<std::shared_ptr<Client>&
>(
JDB::get()) = Client::Create(Server::Default, buffer.c_str());
 
  176     static void reset(
const std::string& usr,
 
  177                       const std::string& pwd,
 
  178                       const std::string& cookie)
 
  183       if      (usr != 
"" && pwd != 
"")
 
  185       else if (cookie != 
"")
 
  248       if (buffer.empty()) {
 
  250         JRootReadableClass cls(
object);
 
  252         for (
size_t i = 0; i != rs.FieldCount(); ++i) {
 
  254           string parameter = rs.FieldName(i);
 
  257             for (string::size_type pos; (pos = parameter.find(*i)) != string::npos; ) {
 
  258               parameter.erase(pos);
 
  262           buffer.push_back(cls.find(parameter.c_str()));
 
  266       for (
unsigned int i = 0; i != rs.FieldCount(); ++i) {
 
  270           JRedirectString redirect(reader, rs.GetString(i));
 
  272           reader.getObject(buffer[i]);
 
  317   template<
class JElement_t, 
class JAllocator_t>
 
  320     for (JElement_t 
object; rs >> object; ) {
 
  321       buffer.push_back(
object);
 
  333   template<
class JTable_t>
 
  346   template<
class JTable_t, 
class JType_t>
 
  347   inline const char* 
getColumn(JType_t JTable_t::*data_member)
 
  350     TClass*   rc = dynamic_cast<TClass*>(TDictionary::GetDictionary(
typeid(JTable_t)));
 
  354       TIterator* i = rc->GetListOfDataMembers()->MakeIterator();
 
  356       for (
const TDataMember* p; (p = (
const TDataMember*) i->Next()) != NULL; ) {
 
  358         if (p->GetOffset() == (
char*) &(pc->*data_member) - (
char*) pc) {
 
  373   template<
class JTable_t>
 
  380     TClass*   rc = dynamic_cast<TClass*>(TDictionary::GetDictionary(
typeid(JTable_t)));
 
  384       TIterator* i = rc->GetListOfDataMembers()->MakeIterator();
 
  386       for (
const TDataMember* p; (p = (
const TDataMember*) i->Next()) != NULL; ) {
 
  388           buffer.push_back(p->GetName());
 
  418     return JDB::get()->StreamDS(query.c_str(), selection);
 
  
Auxiliary classes and methods for ROOT I/O.
 
std::vector< std::string > getColumns()
Get column names.
 
T & getInstance(const T &object)
Get static instance from temporary object.
 
const char * getColumn(JType_t JTable_t::*data_member)
Get column name.
 
static bool is_class(const char *const class_name)
Check class name against ROOT class names.
 
bool is_valid(const T &value)
Check validity of given value.
 
static void reset(const std::string &usr, const std::string &pwd, const std::string &cookie)
Reset connection to database.
 
static JNullStream null
Null I/O stream.
 
JDB & operator=(const JDB &)
 
static JDB & get()
Get connection to database.
 
ResultSet & getResultSet(const std::string &query, const std::vector< Selector > &selection)
Get result set.
 
bool operator>>(ResultSet &rs, std::vector< JElement_t, JAllocator_t > &buffer)
Read vector of ROOT objects from result set.
 
static void reset(const std::string &usr, const std::string &pwd)
Reset connection to database.
 
Auxiliary classes and methods for database I/O.
 
JROOT::JRootReader reader
 
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
 
#define MAKE_CSTRING(A)
Make C-string.
 
static void reset()
Reset connection to database.
 
JDB()
Default constructor.
 
const char * getPrivateCookie()
Get private cookie.
 
static JStat getFileStatus
Function object for file status.
 
#define THROW(JException_t, A)
Marco for throwing exception with std::ostream compatible message.
 
JDBReader()
Default constructor.
 
static void reset(const std::string &cookie)
Reset connection to database.
 
const char * getTable()
Get table name.
 
Implementation for ASCII input of objects with ROOT dictionary.
 
const T & operator()(ResultSet &rs)
Read ROOT object from result set.
 
const char * getName()
Get ROOT name of given data type.
 
static const char PREFIX_COOKIE
Cookie prefix.
 
static const std::string PREFIX_ADF
 
Auxiliary class to read ROOT object from database.
 
Auxiliary classes and methods for language specific functionality.
 
static const std::string PREFIX_DATAFILTER
This string is prepended to every parameter in the database output for the corresponding process.
 
const char * getPublicCookie()
Get public cookie.
 
Auxiliary class for connection to data base.
 
std::istream & getline(std::istream &in, JString &object)
Read string from input stream until end of line.
 
std::vector< JROOT::JRootReadableClass > buffer
 
static const std::string SPECIAL_CHARACTERS
Special characters.