Jpp  15.0.0-rc.2
the software that should make you happy
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Member Functions | Protected Attributes | List of all members
JDATABASE::JUPIHelper Struct Reference

Auxiliary class for mapping UPI of product to serial number. More...

#include <JDBToolkit.hh>

Public Member Functions

void initialise (const JPBS_t &pbs)
 Initialise. More...
 
JUPI_t operator() (const JPBS_t &pbs, const int number)
 Get UPI. More...
 

Protected Attributes

std::map< JPBS_t, std::map
< int, JUPI_t > > 
number2upi
 

Detailed Description

Auxiliary class for mapping UPI of product to serial number.

Definition at line 187 of file JDBToolkit.hh.

Member Function Documentation

void JDATABASE::JUPIHelper::initialise ( const JPBS_t pbs)
inline

Initialise.

Parameters
pbsPBS

Definition at line 193 of file JDBToolkit.hh.

194  {
195  ResultSet& rs = JDB::get()->StreamDS(getTable<JUPI>(), getSelector<JUPI>(pbs));
196 
197  for (JUPI parameters; rs >> parameters; ) {
198 
199  const JUPI_t upi(parameters.PBS,
200  parameters.VARIANT,
201  parameters.VERSION,
202  parameters.SERIALNUMBER);
203 
204  number2upi[pbs][parameters.SERIALNUMBER] = upi;
205  }
206 
207  rs.Close();
208  }
*fatal Wrong number of arguments esac JCookie sh typeset Z DETECTOR typeset Z SOURCE_RUN typeset Z TARGET_RUN set_variable PARAMETERS_FILE $WORKDIR parameters
Definition: diff-Tuna.sh:38
Universal product identifier (UPI).
Definition: JUPI_t.hh:29
std::map< JPBS_t, std::map< int, JUPI_t > > number2upi
Definition: JDBToolkit.hh:251
Template definition for getting table specific selector.
static JDB & get()
Get connection to database.
Definition: JDB.hh:225
JUPI_t JDATABASE::JUPIHelper::operator() ( const JPBS_t pbs,
const int  number 
)
inline

Get UPI.

Parameters
pbsPBS
numberserial number
Returns
UPI

Definition at line 218 of file JDBToolkit.hh.

219  {
220  using namespace std;
221  using namespace JPP;
222 
223  map<JPBS_t, map<int, JUPI_t>>::const_iterator p = number2upi.find(pbs);
224 
225  if (p == number2upi.end()) {
226 
227  initialise(pbs);
228  p = number2upi.find(pbs);
229  }
230 
231  if (p != number2upi.end()) {
232 
233  map<int, JUPI_t>::const_iterator q = p->second.find(number);
234 
235  if (q != p->second.end()) {
236 
237  return q->second;
238 
239  } else {
240 
241  THROW(JValueOutOfRange, "Invalid serial number " << number);
242  }
243 
244  } else {
245 
246  THROW(JDatabaseException, "Invalid PBS " << pbs);
247  }
248  }
#define THROW(JException_t, A)
Marco for throwing exception with std::ostream compatible message.
Definition: JException.hh:670
void initialise(const JPBS_t &pbs)
Initialise.
Definition: JDBToolkit.hh:193
std::map< JPBS_t, std::map< int, JUPI_t > > number2upi
Definition: JDBToolkit.hh:251

Member Data Documentation

std::map<JPBS_t, std::map<int, JUPI_t> > JDATABASE::JUPIHelper::number2upi
protected

Definition at line 251 of file JDBToolkit.hh.


The documentation for this struct was generated from the following file: