36int main(
int argc, 
char **argv)
 
   58    JParser<> zap(
"Auxiliary program to merge high-voltage calibration results.");
 
   60    zap[
'f'] = 
make_field(inputFiles,   
"input  files");
 
   67  } 
catch(
const exception &error) {
 
   69    FATAL(error.what() << endl);
 
   72  if (login.empty() || locationID.empty()) {
 
   73    FATAL(
"Missing user information (please specify via -#login and -#locationID)." << endl);
 
   77  const JUUID& UUID = JUUID::rndm();
 
   81  timer.
sub(elapsedTime);
 
   92  for (vector<string>::const_iterator fileIt = inputFiles.cbegin(); fileIt != inputFiles.cend(); ++fileIt) {
 
   94    NOTICE(
"Merging " << (*fileIt) << endl);
 
   96    if (isJSONFile(fileIt->c_str())) {
 
   99      ifstream ifs(fileIt->c_str());
 
  106      json::const_iterator i0 = js.find(APIVersion_t);
 
  108      if (i0 != js.cend()) {
 
  110        istringstream iss(i0->get<
string>());
 
  117      json::const_iterator i1 = js.find(Data_t);
 
  120           (i1 != js.cend() && i1->size() > 0) ) {
 
  124        JHVCalibration_t::setVersion(getDBVersionTuneHV(*j));
 
  127        metaInfoStr   += (*i1)[0].at(Provenance_t + Info_t).at(Configuration_t).get<
string>();
 
  133        JHVCalibration_t::setVersion(getDBVersionTuneHV(*j));
 
  140      for (JHVCalibration::const_iterator cal = HVcals.cbegin(); cal != HVcals.cend(); ++cal) {
 
  142        if (find_if(merged.cbegin(), merged.cend(), make_predicate(&JHVCalibration_t::getNumber, cal->getNumber())) == merged.cend()) {
 
  143          merged.push_back(*cal);
 
  149      WARNING(*fileIt << 
" is not a JSON file; skip" << endl);
 
  154  if (testTypes.size() > 1) {
 
  156    WARNING(
"Ambiguous database test types; Assuming " << *testTypes.crbegin() << endl);
 
  158  } 
else if (testTypes.size() == 0) {
 
  160    FATAL(
"No database test type specified.");
 
  168    json error           = { {Message_t,              
""                      },
 
  170                             {Arguments_t,            json::array()           } };
 
  172    json metaData        = { {Configuration_t,        metaInfoStr             },
 
  175    json data            = { {Provenance_t + Info_t,  
json(metaData)          },
 
  177                             {Location_t,             locationID              },
 
  178                             {Start_t + Time_t,       timer.
toString()        },
 
  179                             {End_t   + Time_t,       timer().
toString()      },
 
  180                             {Test_t  + Type_t,     *(testTypes.crbegin())    },
 
  181                             {Tests_t,                
json(merged)            } };
 
  184    js[Data_t + Type_t]  = 
MAKE_STRING(
"ProductTestSession");
 
  186    js[Error_t]          = 
json(error);
 
  189    js[Data_t][0]        = 
json(data);
 
  194    js[Location_t]       = locationID;
 
  195    js[Test_t + Type_t]  = *(testTypes.crbegin());
 
  196    js[Start_t + Time_t] = timer.
toString();
 
  197    js[End_t + Time_t]   = timer().
toString();
 
  198    js[Tests_t]          = 
json(merged);
 
  203  ofs << setw(2) << setprecision(8);