35int main(
int argc,
char **argv)
57 JParser<> zap(
"Auxiliary program to merge high-voltage calibration results.");
59 zap[
'f'] =
make_field(inputFiles,
"input files");
66 }
catch(
const exception &error) {
68 FATAL(error.what() << endl);
71 if (login.empty() || locationID.empty()) {
72 FATAL(
"Missing user information (please specify via -#login and -#locationID)." << endl);
76 const JUUID& UUID = JUUID::rndm();
80 timer.
sub(elapsedTime);
91 for (vector<string>::const_iterator fileIt = inputFiles.cbegin(); fileIt != inputFiles.cend(); ++fileIt) {
93 NOTICE(
"Merging " << (*fileIt) << endl);
95 if (isJSONFile(fileIt->c_str())) {
98 ifstream ifs(fileIt->c_str());
105 json::const_iterator i0 = js.find(APIVersion_t);
107 if (i0 != js.cend()) {
109 istringstream iss(i0->get<
string>());
116 json::const_iterator i1 = js.find(Data_t);
119 (i1 != js.cend() && i1->size() > 0) ) {
123 JHVCalibration_t::setVersion(getDBVersionTuneHV(*j));
126 metaInfoStr += (*i1)[0].at(Provenance_t + Info_t).at(Configuration_t).get<
string>();
132 JHVCalibration_t::setVersion(getDBVersionTuneHV(*j));
139 for (JHVCalibration::const_iterator cal = HVcals.cbegin(); cal != HVcals.cend(); ++cal) {
141 if (find_if(merged.cbegin(), merged.cend(), make_predicate(&JHVCalibration_t::getNumber, cal->getNumber())) == merged.cend()) {
142 merged.push_back(*cal);
148 WARNING(*fileIt <<
" is not a JSON file; skip" << endl);
153 if (testTypes.size() > 1) {
155 WARNING(
"Ambiguous database test types; Assuming " << *testTypes.crbegin() << endl);
157 }
else if (testTypes.size() == 0) {
159 FATAL(
"No database test type specified.");
167 json error = { {Message_t,
"" },
169 {Arguments_t, json::array() } };
171 json metaData = { {Configuration_t, metaInfoStr },
174 json data = { {Provenance_t + Info_t,
json(metaData) },
176 {Location_t, locationID },
177 {Start_t + Time_t, timer.
toString() },
178 {End_t + Time_t, timer().
toString() },
179 {Test_t + Type_t, *(testTypes.crbegin()) },
180 {Tests_t,
json(merged) } };
183 js[Data_t + Type_t] =
MAKE_STRING(
"ProductTestSession");
185 js[Error_t] =
json(error);
188 js[Data_t][0] =
json(data);
193 js[Location_t] = locationID;
194 js[Test_t + Type_t] = *(testTypes.crbegin());
195 js[Start_t + Time_t] = timer.
toString();
196 js[End_t + Time_t] = timer().
toString();
197 js[Tests_t] =
json(merged);
202 ofs << setw(2) << setprecision(8);