1 #ifndef __JDB_JSELECTOR__
2 #define __JDB_JSELECTOR__
13 #include "dbclient/KM3NeTDBClient.h"
20 namespace JDATABASE {};
21 namespace JPP {
using namespace JDATABASE; }
27 using KM3NeT::DB::Selector;
33 static const Selector::RelOp*
const OPERAND[] =
35 &Selector::RelOp::Equal,
36 &Selector::RelOp::Different,
37 &Selector::RelOp::Less,
38 &Selector::RelOp::LessEqual,
39 &Selector::RelOp::Greater,
40 &Selector::RelOp::GreaterEqual
56 inline const Selector::RelOp&
getOperand(
const int index)
70 public JMath<JSelector>
76 static const char EOL =
';';
96 add(key, value, operand);
107 template<
class JClass_t,
class JType_t>
108 JSelector(JType_t JClass_t::*data_member,
const JType_t value,
const Selector::RelOp& operand = Selector::RelOp::Equal)
110 add(data_member, value, operand);
121 template<
class JClass_t>
124 add(data_member, value, operand);
138 copy(selection.begin(), selection.end(), back_inserter(*
this));
161 push_back(Selector(key.c_str(), os.str().c_str(), operand));
175 template<
class JClass_t,
class JType_t>
176 inline JSelector&
add(JType_t JClass_t::*data_member,
const JType_t value,
const Selector::RelOp& operand = Selector::RelOp::Equal)
190 template<
class JClass_t>
215 const string::size_type pos = buffer.find(
getOperand(
i).Render());
217 if (pos != string::npos && (operand == -1 ||
getOperand(
i).Render().length() >
getOperand(operand).Render().length())) {
224 const string::size_type pos = buffer.find(
getOperand(operand).Render());
226 const string key =
JPP::trim(buffer.substr(0, pos));
227 const string value =
JPP::trim(buffer.substr(pos +
getOperand(operand).Render().length()));
229 if (key .find_first_of(
"=!<>") == string::npos &&
230 value.find_first_of(
"=!<>") == string::npos) {
232 selector.push_back(Selector(key.c_str(), value.c_str(),
getOperand(operand)));
236 in.setstate(ios::badbit);
241 in.setstate(ios::badbit);
258 for (const_iterator
i = selector.begin();
i != selector.end(); ++
i) {
259 out <<
i->Name <<
i->RelationalOperator.Render() <<
i->Value <<
JSelector::EOL << std::endl;
JSelector & add(JType_t JClass_t::*data_member, const JType_t value, const Selector::RelOp &operand=Selector::RelOp::Equal)
Add selection.
Auxiliary base class for aritmetic operations of derived class types.
#define THROW(JException_t, A)
Marco for throwing exception with std::ostream compatible message.
friend std::ostream & operator<<(std::ostream &out, const JSelector &selector)
Write selector to output stream.
JSelector(JType_t JClass_t::*data_member, const JType_t value, const Selector::RelOp &operand=Selector::RelOp::Equal)
Constructor.
Auxiliary class for specifying selection of database data.
const char * getColumn(JType_t JTable_t::*data_member)
Get column name.
std::string trim(const std::string &buffer)
Trim string.
JSelector()
Default constructor.
JSelector & add(const JSelector &selection)
Add selection.
static const int NUMBER_OF_OPERANDS
Number of available operands.
do set_variable OUTPUT_DIRECTORY $WORKDIR T
std::istream & getline(std::istream &in, JString &object)
Read string from input stream until end of line.
static const char EOL
End-of-line.
const Selector::RelOp & getOperand(const int index)
Get operand.
friend std::istream & operator>>(std::istream &in, JSelector &selector)
Read selector from input stream.
then fatal Wrong number of arguments fi set_variable DETECTOR $argv[1] set_variable INPUT_FILE $argv[2] eval JPrintDetector a $DETECTOR O IDENTIFIER eval JPrintDetector a $DETECTOR O SUMMARY JAcoustics sh $DETECTOR_ID source JAcousticsToolkit sh CHECK_EXIT_CODE typeset A EMITTERS get_tripods $WORKDIR tripod txt EMITTERS get_transmitters $WORKDIR transmitter txt EMITTERS for EMITTER in
JSelector(const std::string &key, const T value, const Selector::RelOp &operand=Selector::RelOp::Equal)
Constructor.
void copy(const Head &from, JHead &to)
Copy header from from to to.
Base class for data structures with artithmetic capabilities.
JSelector(std::string JClass_t::*data_member, const std::string value, const Selector::RelOp &operand=Selector::RelOp::Equal)
Constructor.
Exception for accessing an index in a collection that is outside of its range.
JSelector & add(std::string JClass_t::*data_member, const std::string &value, const Selector::RelOp &operand=Selector::RelOp::Equal)
Add selection.
static const Selector::RelOp *const OPERAND[]
Available operands.
JSelector & add(const std::string &key, const T value, const Selector::RelOp &operand=Selector::RelOp::Equal)
Add selection.