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);