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.