14#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;
 
   77    { 
"Default", Server::Default },
 
   78    { 
"Test",    Server::Test    },
 
   79    { 
"Lyon",    Server::Lyon    },
 
   80    { 
"Lyon2",   Server::Lyon2   },
 
   81    { 
"Napoli",  Server::Napoli  }
 
 
   91  inline const Server& 
getServer(
const std::string& server)
 
   94      if (element.first == server) {
 
   95        return element.second;
 
 
  112    const char* 
const server = getenv(
"DATABASE_SERVER");
 
  114    if (server != NULL) {
 
  115      buffer.push_back(server);
 
  119      if (std::find(buffer.begin(), buffer.end(), element.first) == buffer.end()) {
 
  120        buffer.push_back(element.first);
 
 
  140    const char* 
const server = getenv(
"DATABASE_SERVER");
 
  147      return Server::Default;
 
 
  158    const char* home = getenv(
"HOME");
 
  160    return MAKE_CSTRING((home != NULL ? home : 
".") << 
"/" << 
".km3netdb_cookie");
 
 
  171    return getenv(
"DBCOOKIE");
 
 
  192    public std::shared_ptr<Client>
 
  250      if (db.
get() != NULL) {
 
  252        static_cast<std::shared_ptr<Client>&
>(db).
reset();
 
 
  263    static void reset(
const std::string& usr,
 
  264                      const std::string& pwd)
 
  266      static_cast<std::shared_ptr<Client>&
>(
JDB::get()) = Client::Create(
getServer(), usr.c_str(), pwd.c_str());
 
 
  275    static void reset(
const std::string& cookie)
 
  280      string buffer = cookie;
 
  282      if (getFileStatus(cookie.c_str())) {
 
  284        ifstream in(cookie.c_str());
 
  293      if (pos != string::npos) {
 
  294        buffer.erase(0, pos);
 
  297      static_cast<std::shared_ptr<Client>&
>(
JDB::get()) = Client::Create(
getServer(), buffer.c_str());
 
 
  315    static void reset(
const std::string& usr,
 
  316                      const std::string& pwd,
 
  317                      const std::string& cookie)
 
  322      if      (usr != 
"" && pwd != 
"")
 
  324      else if (cookie != 
"")
 
 
 
  359    if (in >> 
static_cast<std::string&
>(server)) {
 
 
  372  template<
class JTable_t>
 
  375    return JTable_t::getName();
 
 
  385  template<
class JTable_t, 
class JType_t>
 
  386  inline const char* 
getColumn(JType_t JTable_t::*data_member)
 
  389    TClass*   rc = 
dynamic_cast<TClass*
>(TDictionary::GetDictionary(
typeid(JTable_t)));
 
  393      for( std::unique_ptr<TIterator> i(rc->GetListOfDataMembers()->MakeIterator()); 
const TDataMember* p = (
const TDataMember*) i->Next(); ) {
 
  395        if (p->GetOffset() == (
char*) &(pc->*data_member) - (
char*) pc) {
 
 
  410  template<
class JTable_t>
 
  417    TClass*   rc = 
dynamic_cast<TClass*
>(TDictionary::GetDictionary(
typeid(JTable_t)));
 
  421      for (std::unique_ptr<TIterator> i(rc->GetListOfDataMembers()->MakeIterator()); 
const TDataMember* p = (
const TDataMember*) i->Next(); ) {
 
  422        if (JRoot::is_class(*p)) {
 
  423          buffer.push_back(p->GetName());
 
 
  453    return JDB::get()->StreamDS(query.c_str(), selection);
 
 
  463  inline void get_json(json& js, 
const std::string& query)
 
 
#define THROW(JException_t, A)
Marco for throwing exception with std::ostream compatible message.
 
I/O formatting auxiliaries.
 
#define MAKE_CSTRING(A)
Make C-string.
 
static void reset(const std::string &cookie)
Reset connection to database.
 
static void reset(const std::string &usr, const std::string &pwd)
Reset connection to database.
 
static void reset()
Reset connection to database.
 
static const Server & getServer()
Get server.
 
static void setServer(const Server &server)
Set server.
 
JDB & operator=(const JDB &)
 
static JDB & get()
Get connection to database.
 
JDB()
Default constructor.
 
static Server & get_server()
Get server.
 
static void reset(const std::string &usr, const std::string &pwd, const std::string &cookie)
Reset connection to database.
 
Auxiliary classes and methods for database I/O.
 
std::istream & operator>>(std::istream &in, JAHRSCalibration &calibration)
Read AHRS calibration from input stream.
 
ResultSet & getResultSet(const std::string &query)
Get result set.
 
const char * getPrivateCookie()
Get private cookie.
 
const char * getPublicCookie()
Get public cookie.
 
static const std::string PREFIX_ADF
 
const char * getTable()
Get table name.
 
const Server & getServer()
Get default server.
 
std::vector< std::string > getColumns()
Get column names.
 
static std::vector< std::pair< JServer, Server > > LIST_OF_SERVERS
Named list of available database servers.
 
static const std::string PREFIX_DATAFILTER
This string is prepended to every parameter in the database output for the corresponding process.
 
void get_json(json &js, const std::string &query)
Get json.
 
const char * getColumn(JType_t JTable_t::*data_member)
Get column name.
 
static const char PREFIX_COOKIE
Cookie prefix.
 
std::vector< JServer > getServernames()
Get list of names of available database servers.
 
static const JVersion APIV2_VERSION(2, 1, 0)
 
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
 
Wrapper class for server name.
 
JServer(const char *server)
Constructor.
 
JServer()
Default constructor.
 
Auxiliary data structure for general purpose version number.
 
std::string toString() const
Convert version to string.