Changeset 16170 for trunk/ippTools/src/regtool.c
- Timestamp:
- Jan 20, 2008, 3:48:37 PM (18 years ago)
- File:
-
- 1 edited
-
trunk/ippTools/src/regtool.c (modified) (17 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/ippTools/src/regtool.c
r15778 r16170 44 44 static bool updateprocessedexpMode(pxConfig *config); 45 45 46 47 // static guidePendingExpRow *newToP1PendingExp(newExpRow *newExp);48 //static chipPendingExpRow *newTochipPendingExp(pxConfig *config, newExpRow *newExp);49 //static chipInputImfileRow *rawImfileTochipInputImfile(pxConfig *config, psS64 chip_id, rawImfileRow *rawImfile);50 51 static rawExpRow *newToRawExp(pxConfig *config, newExpRow *exp);52 //static psU32 mapCodeStrToInt(const char *codeStr);53 54 55 46 # define MODECASE(caseName, func) \ 56 47 case caseName: \ … … 109 100 PS_ASSERT_PTR_NON_NULL(config, false); 110 101 111 bool status = false; 112 psU64 limit = psMetadataLookupU64(&status, config->args, "-limit"); 113 if (!status) { 114 psError(PXTOOLS_ERR_PROG, false, "failed to lookup value for -limit"); 115 return false; 116 } 102 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 103 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 117 104 118 105 // select newImfiles that: … … 163 150 } 164 151 165 bool simple = false;166 simple = psMetadataLookupBool(&status, config->args, "-simple");167 if (!status) {168 psError(PXTOOLS_ERR_PROG, false, "failed to lookup value for -simple");169 return false;170 }171 172 152 // negate simple so the default is true 173 153 if (!ippdbPrintMetadatas(stdout, output, "regPendingImfile", !simple)) { … … 187 167 PS_ASSERT_PTR_NON_NULL(config, false); 188 168 189 bool status = false;190 169 // required 191 psString exp_id = psMetadataLookupStr(&status, config->args, "-exp_id"); 192 if (!status) { 193 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -exp_id"); 194 return false; 195 } 196 if (!exp_id) { 197 psError(PS_ERR_UNKNOWN, true, "-exp_id is required"); 198 return false; 199 } 200 201 psString exp_name = psMetadataLookupStr(&status, config->args, "-exp_name"); 202 if (!status) { 203 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -exp_name"); 204 return false; 205 } 206 if (!exp_name) { 207 psError(PS_ERR_UNKNOWN, true, "-exp_name is required"); 208 return false; 209 } 210 211 psString camera = psMetadataLookupStr(&status, config->args, "-inst"); 212 if (!status) { 213 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -inst"); 214 return false; 215 } 216 if (!camera) { 217 psError(PS_ERR_UNKNOWN, true, "-inst is required"); 218 return false; 219 } 220 221 psString telescope = psMetadataLookupStr(&status, config->args, "-telescope"); 222 if (!status) { 223 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -telescope"); 224 return false; 225 } 226 if (!telescope) { 227 psError(PS_ERR_UNKNOWN, true, "-telescope is required"); 228 return false; 229 } 230 231 psString tmp_class_id = psMetadataLookupStr(&status, config->args, "-tmp_class_id"); 232 if (!status) { 233 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -tmp_class_id"); 234 return false; 235 } 236 if (!tmp_class_id) { 237 psError(PS_ERR_UNKNOWN, true, "-tmp_class_id is required"); 238 } 239 240 psString class_id = psMetadataLookupStr(&status, config->args, "-class_id"); 241 if (!status) { 242 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -class_id"); 243 return false; 244 } 245 if (!class_id) { 246 psError(PS_ERR_UNKNOWN, true, "-class_id is required"); 247 return false; 248 } 249 250 psString uri = psMetadataLookupStr(&status, config->args, "-uri"); 251 if (!status) { 252 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -uri"); 253 return false; 254 } 255 if (!uri) { 256 psError(PS_ERR_UNKNOWN, true, "-uri is required"); 257 return false; 258 } 170 PXOPT_LOOKUP_STR(exp_id, config->args, "-exp_id", true, false); 171 PXOPT_LOOKUP_STR(exp_name, config->args, "-exp_name", true, false); 172 PXOPT_LOOKUP_STR(camera, config->args, "-inst", true, false); 173 PXOPT_LOOKUP_STR(telescope, config->args, "-telescope", true, false); 174 PXOPT_LOOKUP_STR(tmp_class_id, config->args, "-tmp_class_id", true, false); 175 PXOPT_LOOKUP_STR(class_id, config->args, "-class_id", true, false); 176 PXOPT_LOOKUP_STR(uri, config->args, "-uri", true, false); 259 177 260 178 // optional 261 psString exp_type = psMetadataLookupStr(&status, config->args, "-exp_type"); 262 if (!status) { 263 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -exp_type"); 264 return false; 265 } 266 267 psString filelevel = psMetadataLookupStr(&status, config->args, "-filelevel"); 268 if (!status) { 269 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -filelevel"); 270 return false; 271 } 272 273 psString filter = psMetadataLookupStr(&status, config->args, "-filter"); 274 if (!status) { 275 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -filter"); 276 return false; 277 } 278 279 psString comment = psMetadataLookupStr(&status, config->args, "-comment"); 280 if (!status) { 281 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -comment"); 282 return false; 283 } 284 285 psF32 airmass = psMetadataLookupF32(&status, config->args, "-airmass"); 286 if (!status) { 287 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -airmass"); 288 return false; 289 } 290 291 psF64 ra = psMetadataLookupF64(&status, config->args, "-ra"); 292 if (!status) { 293 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -ra"); 294 return false; 295 } 296 297 psF64 decl = psMetadataLookupF64(&status, config->args, "-decl"); 298 if (!status) { 299 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -decl"); 300 return false; 301 } 302 303 psF32 exp_time = psMetadataLookupF32(&status, config->args, "-exp_time"); 304 if (!status) { 305 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -exp_time"); 306 return false; 307 } 308 309 psF32 sat_pixel_frac = psMetadataLookupF32(&status, config->args, "-sat_pixel_frac"); 310 if (!status) { 311 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -sat_pixel_frac"); 312 return false; 313 } 314 315 psF64 bg = psMetadataLookupF64(&status, config->args, "-bg"); 316 if (!status) { 317 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -bg"); 318 return false; 319 } 320 321 psF64 bg_stdev = psMetadataLookupF64(&status, config->args, "-bg_stdev"); 322 if (!status) { 323 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -bg_stdev"); 324 return false; 325 } 326 327 psF64 bg_mean_stdev = psMetadataLookupF64(&status, config->args, "-bg_mean_stdev"); 328 if (!status) { 329 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -bg_mean_stdev"); 330 return false; 331 } 332 333 psF64 alt = psMetadataLookupF64(&status, config->args, "-alt"); 334 if (!status) { 335 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -alt"); 336 return false; 337 } 338 339 psF64 az = psMetadataLookupF64(&status, config->args, "-az"); 340 if (!status) { 341 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -az"); 342 return false; 343 } 344 345 psF32 ccd_temp = psMetadataLookupF32(&status, config->args, "-ccd_temp"); 346 if (!status) { 347 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -ccd_temp"); 348 return false; 349 } 350 351 psF64 posang = psMetadataLookupF32(&status, config->args, "-posang"); 352 if (!status) { 353 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -posang"); 354 return false; 355 } 356 357 psF32 m1_x = psMetadataLookupF32(&status, config->args, "-m1_x"); 358 if (!status) { 359 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -m1_x"); 360 return false; 361 } 362 psF32 m1_y = psMetadataLookupF32(&status, config->args, "-m1_y"); 363 if (!status) { 364 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -m1_y"); 365 return false; 366 } 367 psF32 m1_z = psMetadataLookupF32(&status, config->args, "-m1_z"); 368 if (!status) { 369 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -m1_z"); 370 return false; 371 } 372 psF32 m1_tip = psMetadataLookupF32(&status, config->args, "-m1_tip"); 373 if (!status) { 374 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -m1_tip"); 375 return false; 376 } 377 psF32 m1_tilt = psMetadataLookupF32(&status, config->args, "-m1_tilt"); 378 if (!status) { 379 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -m1_tilt"); 380 return false; 381 } 382 383 psF32 m2_x = psMetadataLookupF32(&status, config->args, "-m2_x"); 384 if (!status) { 385 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -m2_x"); 386 return false; 387 } 388 psF32 m2_y = psMetadataLookupF32(&status, config->args, "-m2_y"); 389 if (!status) { 390 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -m2_y"); 391 return false; 392 } 393 psF32 m2_z = psMetadataLookupF32(&status, config->args, "-m2_z"); 394 if (!status) { 395 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -m2_z"); 396 return false; 397 } 398 psF32 m2_tip = psMetadataLookupF32(&status, config->args, "-m2_tip"); 399 if (!status) { 400 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -m2_tip"); 401 return false; 402 } 403 psF32 m2_tilt = psMetadataLookupF32(&status, config->args, "-m2_tilt"); 404 if (!status) { 405 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -m2_tilt"); 406 return false; 407 } 408 409 psF32 env_temp = psMetadataLookupF32(&status, config->args, "-env_temperature"); 410 if (!status) { 411 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -env_temperature"); 412 return false; 413 } 414 psF32 env_humid = psMetadataLookupF32(&status, config->args, "-env_humidity"); 415 if (!status) { 416 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -env_humidity"); 417 return false; 418 } 419 psF32 env_wind = psMetadataLookupF32(&status, config->args, "-env_wind_speed"); 420 if (!status) { 421 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -env_wind_speed"); 422 return false; 423 } 424 psF32 env_dir = psMetadataLookupF32(&status, config->args, "-env_wind_dir"); 425 if (!status) { 426 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -env_wind_dir"); 427 return false; 428 } 429 430 psF32 teltemp_m1 = psMetadataLookupF32(&status, config->args, "-teltemp_m1"); 431 if (!status) { 432 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -teltemp_m1"); 433 return false; 434 } 435 psF32 teltemp_m1cell = psMetadataLookupF32(&status, config->args, "-teltemp_m1cell"); 436 if (!status) { 437 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -teltemp_m1cell"); 438 return false; 439 } 440 psF32 teltemp_m2 = psMetadataLookupF32(&status, config->args, "-teltemp_m2"); 441 if (!status) { 442 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -teltemp_m2"); 443 return false; 444 } 445 psF32 teltemp_spider = psMetadataLookupF32(&status, config->args, "-teltemp_spider"); 446 if (!status) { 447 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -teltemp_spider"); 448 return false; 449 } 450 psF32 teltemp_truss = psMetadataLookupF32(&status, config->args, "-teltemp_truss"); 451 if (!status) { 452 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -teltemp_truss"); 453 return false; 454 } 455 psF32 teltemp_extra = psMetadataLookupF32(&status, config->args, "-teltemp_extra"); 456 if (!status) { 457 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -teltemp_extra"); 458 return false; 459 } 460 461 psF32 pon_time = psMetadataLookupF32(&status, config->args, "-pon_time"); 462 if (!status) { 463 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -pon_time"); 464 return false; 465 } 466 467 psF64 user_1 = psMetadataLookupF64(&status, config->args, "-user_1"); 468 if (!status) { 469 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -user_1"); 470 return false; 471 } 472 psF64 user_2 = psMetadataLookupF64(&status, config->args, "-user_2"); 473 if (!status) { 474 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -user_2"); 475 return false; 476 } 477 psF64 user_3 = psMetadataLookupF64(&status, config->args, "-user_3"); 478 if (!status) { 479 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -user_3"); 480 return false; 481 } 482 psF64 user_4 = psMetadataLookupF64(&status, config->args, "-user_4"); 483 if (!status) { 484 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -user_4"); 485 return false; 486 } 487 psF64 user_5 = psMetadataLookupF64(&status, config->args, "-user_5"); 488 if (!status) { 489 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -user_5"); 490 return false; 491 } 492 493 psString object = psMetadataLookupStr(&status, config->args, "-object"); 494 if (!status) { 495 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -object"); 496 return false; 497 } 498 499 psTime *dateobs = NULL; 500 { 501 psString dateobsStr = psMetadataLookupStr(&status, config->args, "-dateobs"); 502 if (!status) { 503 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -dateobs"); 504 return false; 505 } 506 // pass through NULL as this is an optional field 507 if (dateobsStr) { 508 dateobs = psTimeFromISO(dateobsStr, PS_TIME_UTC); 509 } else { 510 dateobs = NULL; 511 } 512 } 513 514 psS16 code = psMetadataLookupS16(&status, config->args, "-code"); 515 if (!status) { 516 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -code"); 517 return false; 518 } 179 PXOPT_LOOKUP_STR(exp_type, config->args, "-exp_type", false, false); 180 PXOPT_LOOKUP_STR(filelevel, config->args, "-filelevel", false, false); 181 PXOPT_LOOKUP_STR(filter, config->args, "-filter", false, false); 182 PXOPT_LOOKUP_STR(comment, config->args, "-comment", false, false); 183 184 PXOPT_LOOKUP_F32(airmass, config->args, "-airmass", false, false); 185 PXOPT_LOOKUP_F64(ra, config->args, "-ra", false, false); 186 PXOPT_LOOKUP_F64(decl, config->args, "-decl", false, false); 187 PXOPT_LOOKUP_F32(exp_time, config->args, "-exp_time", false, false); 188 PXOPT_LOOKUP_F32(sat_pixel_frac, config->args, "-sat_pixel_frac", false, false); 189 PXOPT_LOOKUP_F64(bg, config->args, "-bg", false, false); 190 PXOPT_LOOKUP_F64(bg_stdev, config->args, "-bg_stdev", false, false); 191 PXOPT_LOOKUP_F64(bg_mean_stdev, config->args, "-bg_mean_stdev", false, false); 192 PXOPT_LOOKUP_F64(alt, config->args, "-alt", false, false); 193 PXOPT_LOOKUP_F64(az, config->args, "-az", false, false); 194 PXOPT_LOOKUP_F32(ccd_temp, config->args, "-ccd_temp", false, false); 195 PXOPT_LOOKUP_F64(posang, config->args, "-posang", false, false); 196 PXOPT_LOOKUP_F32(m1_x, config->args, "-m1_x", false, false); 197 PXOPT_LOOKUP_F32(m1_y, config->args, "-m1_y", false, false); 198 PXOPT_LOOKUP_F32(m1_z, config->args, "-m1_z", false, false); 199 PXOPT_LOOKUP_F32(m1_tip, config->args, "-m1_tip", false, false); 200 PXOPT_LOOKUP_F32(m1_tilt, config->args, "-m1_tilt", false, false); 201 PXOPT_LOOKUP_F32(m2_x, config->args, "-m2_x", false, false); 202 PXOPT_LOOKUP_F32(m2_y, config->args, "-m2_y", false, false); 203 PXOPT_LOOKUP_F32(m2_z, config->args, "-m2_z", false, false); 204 PXOPT_LOOKUP_F32(m2_tip, config->args, "-m2_tip", false, false); 205 PXOPT_LOOKUP_F32(m2_tilt, config->args, "-m2_tilt", false, false); 206 207 PXOPT_LOOKUP_F32(env_temp, config->args, "-env_temperature", false, false); 208 PXOPT_LOOKUP_F32(env_humid, config->args, "-env_humidity", false, false); 209 PXOPT_LOOKUP_F32(env_wind, config->args, "-env_wind_speed", false, false); 210 PXOPT_LOOKUP_F32(env_dir, config->args, "-env_wind_dir", false, false); 211 PXOPT_LOOKUP_F32(teltemp_m1, config->args, "-teltemp_m1", false, false); 212 PXOPT_LOOKUP_F32(teltemp_m1cell, config->args, "-teltemp_m1cell", false, false); 213 PXOPT_LOOKUP_F32(teltemp_m2, config->args, "-teltemp_m2", false, false); 214 PXOPT_LOOKUP_F32(teltemp_spider, config->args, "-teltemp_spider", false, false); 215 PXOPT_LOOKUP_F32(teltemp_truss, config->args, "-teltemp_truss", false, false); 216 PXOPT_LOOKUP_F32(teltemp_extra, config->args, "-teltemp_extra", false, false); 217 PXOPT_LOOKUP_F32(pon_time, config->args, "-pon_time", false, false); 218 PXOPT_LOOKUP_F64(user_1, config->args, "-user_1", false, false); 219 PXOPT_LOOKUP_F64(user_2, config->args, "-user_2", false, false); 220 PXOPT_LOOKUP_F64(user_3, config->args, "-user_3", false, false); 221 PXOPT_LOOKUP_F64(user_4, config->args, "-user_4", false, false); 222 PXOPT_LOOKUP_F64(user_5, config->args, "-user_5", false, false); 223 PXOPT_LOOKUP_STR(object, config->args, "-object", false, false); 224 PXOPT_LOOKUP_TIME(dateobs, config->args, "-dateobs", false, false); 225 PXOPT_LOOKUP_S16(code, config->args, "-code", false, false); 519 226 520 227 if (!rawImfileInsert( … … 574 281 )) { 575 282 psError(PS_ERR_UNKNOWN, false, "database error"); 576 psFree(dateobs); 577 return false; 578 } 579 580 psFree(dateobs); 283 return false; 284 } 581 285 582 286 return true; … … 588 292 PS_ASSERT_PTR_NON_NULL(config, false); 589 293 590 bool status = false; 591 psU64 limit = psMetadataLookupU64(&status, config->args, "-limit"); 592 if (!status) { 593 psError(PXTOOLS_ERR_PROG, false, "failed to lookup value for -limit"); 594 return false; 595 } 596 597 bool faulted = psMetadataLookupU64(&status, config->args, "-faulted"); 598 if (!status) { 599 psError(PXTOOLS_ERR_PROG, false, "failed to lookup value for -faulted"); 600 return false; 601 } 294 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 295 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 296 PXOPT_LOOKUP_BOOL(faulted, config->args, "-faulted", false); 602 297 603 298 psString query = pxDataGet("regtool_processedimfile.sql"); … … 655 350 } 656 351 657 bool simple = false;658 {659 bool status = false;660 simple = psMetadataLookupBool(&status, config->args, "-simple");661 if (!status) {662 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -simple");663 return false;664 }665 }666 667 352 if (psArrayLength(output)) { 668 353 // negative simple so the default is true … … 716 401 PS_ASSERT_PTR_NON_NULL(config, false); 717 402 718 bool status = false; 719 psS16 code = psMetadataLookupS16(&status, config->args, "-code"); 720 if (!status) { 721 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -code"); 722 return false; 723 } 724 if (code == INT16_MAX) { 725 psError(PS_ERR_UNKNOWN, true, "-code is required"); 726 return false; 727 } 403 PXOPT_LOOKUP_S16(code, config->args, "-code", true, false); 728 404 729 405 if (!pxSetFaultCode(config->dbh, "rawImfile", config->where, code)) { … … 740 416 PS_ASSERT_PTR_NON_NULL(config, false); 741 417 742 bool status = false; 743 psU64 limit = psMetadataLookupU64(&status, config->args, "-limit"); 744 if (!status) { 745 psError(PXTOOLS_ERR_PROG, false, "failed to lookup value for -limit"); 746 return false; 747 } 418 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 419 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 748 420 749 421 // return only exps that: … … 792 464 } 793 465 794 bool simple = false;795 simple = psMetadataLookupBool(&status, config->args, "-simple");796 if (!status) {797 psError(PXTOOLS_ERR_PROG, false, "failed to lookup value for -simple");798 return false;799 }800 801 466 // negate simple so the default is true 802 467 if (!ippdbPrintMetadatas(stdout, output, "regPendingExp", !simple)) { … … 821 486 // that the correct count of imfiles is in rawImfile 822 487 823 bool status = false; 824 psString exp_id = psMetadataLookupStr(&status, config->args, "-exp_id"); 825 if (!status) { 826 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -exp_id"); 827 return false; 828 } 829 if (!exp_id) { 830 psError(PS_ERR_UNKNOWN, true, "-exp_id is required"); 831 return false; 832 } 833 834 bool detrend = psMetadataLookupBool(&status, config->args, "-detrend"); 835 if (!status) { 836 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -detrend"); 837 return false; 838 } 488 // required 489 PXOPT_LOOKUP_STR(exp_id, config->args, "-exp_id", true, false); 490 PXOPT_LOOKUP_STR(exp_name, config->args, "-exp_name", true, false); 491 PXOPT_LOOKUP_STR(camera, config->args, "-inst", true, false); 492 PXOPT_LOOKUP_STR(telescope, config->args, "-telescope", true, false); 493 PXOPT_LOOKUP_STR(exp_tag, config->args, "-exp_tag", true, false); 494 PXOPT_LOOKUP_STR(filelevel, config->args, "-filelevel", true, false); 495 496 // optional 497 PXOPT_LOOKUP_STR(dvodb, config->args, "-dvodb", false, false); 498 PXOPT_LOOKUP_STR(tess_id, config->args, "-tess_id", false, false); 499 PXOPT_LOOKUP_STR(end_stage, config->args, "-end_stage", false, false); 500 PXOPT_LOOKUP_STR(exp_type, config->args, "-exp_type", false, false); 501 PXOPT_LOOKUP_STR(workdir, config->args, "-workdir", false, false); 502 PXOPT_LOOKUP_STR(reduction, config->args, "-reduction", false, false); 503 PXOPT_LOOKUP_STR(filter, config->args, "-filter", false, false); 504 PXOPT_LOOKUP_STR(comment, config->args, "-comment", false, false); 505 PXOPT_LOOKUP_F32(airmass, config->args, "-airmass", false, false); 506 PXOPT_LOOKUP_F64(ra, config->args, "-ra", false, false); 507 PXOPT_LOOKUP_F64(decl, config->args, "-decl", false, false); 508 PXOPT_LOOKUP_F32(exp_time, config->args, "-exp_time", false, false); 509 PXOPT_LOOKUP_F32(sat_pixel_frac, config->args, "-sat_pixel_frac", false, false); 510 PXOPT_LOOKUP_F64(bg, config->args, "-bg", false, false); 511 PXOPT_LOOKUP_F64(bg_stdev, config->args, "-bg_stdev", false, false); 512 PXOPT_LOOKUP_F64(bg_mean_stdev, config->args, "-bg_mean_stdev", false, false); 513 PXOPT_LOOKUP_F64(alt, config->args, "-alt", false, false); 514 PXOPT_LOOKUP_F64(az, config->args, "-az", false, false); 515 PXOPT_LOOKUP_F32(ccd_temp, config->args, "-ccd_temp", false, false); 516 PXOPT_LOOKUP_F64(posang, config->args, "-posang", false, false); 517 PXOPT_LOOKUP_F32(m1_x, config->args, "-m1_x", false, false); 518 PXOPT_LOOKUP_F32(m1_y, config->args, "-m1_y", false, false); 519 PXOPT_LOOKUP_F32(m1_z, config->args, "-m1_z", false, false); 520 PXOPT_LOOKUP_F32(m1_tip, config->args, "-m1_tip", false, false); 521 PXOPT_LOOKUP_F32(m1_tilt, config->args, "-m1_tilt", false, false); 522 PXOPT_LOOKUP_F32(m2_x, config->args, "-m2_x", false, false); 523 PXOPT_LOOKUP_F32(m2_y, config->args, "-m2_y", false, false); 524 PXOPT_LOOKUP_F32(m2_z, config->args, "-m2_z", false, false); 525 PXOPT_LOOKUP_F32(m2_tip, config->args, "-m2_tip", false, false); 526 PXOPT_LOOKUP_F32(m2_tilt, config->args, "-m2_tilt", false, false); 527 528 PXOPT_LOOKUP_F32(env_temp, config->args, "-env_temperature", false, false); 529 PXOPT_LOOKUP_F32(env_humid, config->args, "-env_humidity", false, false); 530 PXOPT_LOOKUP_F32(env_wind, config->args, "-env_wind_speed", false, false); 531 PXOPT_LOOKUP_F32(env_dir, config->args, "-env_wind_dir", false, false); 532 PXOPT_LOOKUP_F32(teltemp_m1, config->args, "-teltemp_m1", false, false); 533 PXOPT_LOOKUP_F32(teltemp_m1cell, config->args, "-teltemp_m1cell", false, false); 534 PXOPT_LOOKUP_F32(teltemp_m2, config->args, "-teltemp_m2", false, false); 535 PXOPT_LOOKUP_F32(teltemp_spider, config->args, "-teltemp_spider", false, false); 536 PXOPT_LOOKUP_F32(teltemp_truss, config->args, "-teltemp_truss", false, false); 537 PXOPT_LOOKUP_F32(teltemp_extra, config->args, "-teltemp_extra", false, false); 538 PXOPT_LOOKUP_F32(pon_time, config->args, "-pon_time", false, false); 539 PXOPT_LOOKUP_F64(user_1, config->args, "-user_1", false, false); 540 PXOPT_LOOKUP_F64(user_2, config->args, "-user_2", false, false); 541 PXOPT_LOOKUP_F64(user_3, config->args, "-user_3", false, false); 542 PXOPT_LOOKUP_F64(user_4, config->args, "-user_4", false, false); 543 PXOPT_LOOKUP_F64(user_5, config->args, "-user_5", false, false); 544 PXOPT_LOOKUP_STR(object, config->args, "-object", false, false); 545 PXOPT_LOOKUP_TIME(dateobs, config->args, "-dateobs", false, false); 546 547 // default 548 PXOPT_LOOKUP_S16(code, config->args, "-code", false, false); 839 549 840 550 psString query = pxDataGet("regtool_pendingexp.sql"); … … 847 557 // build a query to search by exp_id 848 558 psMetadata *where = psMetadataAlloc(); 849 bool status = false; 850 psString exp_id = psMetadataLookupStr(&status, config->args, "-exp_id"); 851 if (!status) { 852 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -exp_id"); 559 if (!psMetadataAddStr(where, PS_LIST_TAIL, "exp_id", 0, "==", exp_id)) { 560 psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id"); 561 psFree(where); 853 562 psFree(query); 854 563 return false; 855 564 } 856 if (exp_id) {857 if (!psMetadataAddStr(where, PS_LIST_TAIL, "exp_id", 0, "==", exp_id)) {858 psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");859 psFree(where);860 psFree(query);861 return false;862 }863 }864 865 565 866 566 psString whereClause = psDBGenerateWhereSQL(where, NULL); … … 898 598 return false; 899 599 } 600 // sanity check that we only got one row 601 if (psArrayLength(output) != 1) { 602 // rollback 603 if (!psDBRollback(config->dbh)) { 604 psError(PS_ERR_UNKNOWN, false, "database error"); 605 } 606 psError(PS_ERR_UNKNOWN, false, "should have gotten 1 row but %lu rows were returned", psArrayLength(output)); 607 psFree(output); 608 return NULL; 609 } 900 610 901 611 if (!psDBTransaction(config->dbh)) { … … 906 616 907 617 // insert the exp into rawExp 908 for (long i = 0; psArrayLength(output) > i; i++) { 909 psMetadata *row = output->data[i]; 910 // convert metadata into a newExp object 911 newExpRow *newExp = newExpObjectFromMetadata(row); 912 // convert newExp object into a rawExp object 913 rawExpRow *rawExp = newToRawExp(config, newExp); 914 if (!rawExp) { 915 // rollback 916 if (!psDBRollback(config->dbh)) { 917 psError(PS_ERR_UNKNOWN, false, "database error"); 918 } 919 psError(PS_ERR_UNKNOWN, false, "failed to convert newExp to rawExp"); 920 psFree(newExp); 921 psFree(output); 922 return false; 923 } 924 psFree(newExp); 925 926 // insert the rawExp object into the database 927 if (!rawExpInsertObject(config->dbh, rawExp)) { 928 // rollback 929 if (!psDBRollback(config->dbh)) { 930 psError(PS_ERR_UNKNOWN, false, "database error"); 931 } 932 psError(PS_ERR_UNKNOWN, false, "database error"); 933 psFree(rawExp); 934 psFree(output); 935 return false; 936 } 937 938 // if this is a detrend image don't put it in the chip queue (and we're 939 // done) 940 if (detrend) { 941 // set the state for the newExp to stop 942 if (!pxnewExpSetState(config, exp_id, "stop")) { 943 // rollback 944 if (!psDBRollback(config->dbh)) { 945 psError(PS_ERR_UNKNOWN, false, "database error"); 946 } 947 psError(PS_ERR_UNKNOWN, false, "failed to change newExp.state for exp_id: %s", exp_id); 948 psFree(rawExp); 949 psFree(output); 950 return false; 951 } 952 psFree(rawExp); 953 continue; 954 } 955 956 957 // set the state for the newExp to stop 958 if (!pxnewExpSetState(config, exp_id, "stop")) { 959 // rollback 960 if (!psDBRollback(config->dbh)) { 961 psError(PS_ERR_UNKNOWN, false, "database error"); 962 } 963 psError(PS_ERR_UNKNOWN, false, "failed to change newExp.state for exp_id: %s", exp_id); 964 psFree(rawExp); 965 psFree(output); 966 return false; 967 } 968 969 // insert an entry into the chipPendingExp table 970 // this can only be run as the newExp's state has been set to stop 971 if (!pxchipQueueByExpTag(config, 972 rawExp->exp_id, 973 rawExp->workdir, 974 NULL, // label 975 rawExp->reduction, 976 NULL, // expgroup 977 NULL // dvodb 978 )) { 979 // rollback 980 if (!psDBRollback(config->dbh)) { 981 psError(PS_ERR_UNKNOWN, false, "database error"); 982 } 983 psError(PS_ERR_UNKNOWN, false, "failed to queue chipPendingExp"); 984 psFree(rawExp); 985 psFree(output); 986 return false; 987 } 988 psFree(rawExp); 989 } 618 psMetadata *row = output->data[0]; 619 // convert metadata into a newExp object 620 newExpRow *newExp = newExpObjectFromMetadata(row); 990 621 psFree(output); 991 622 992 if (!psDBCommit(config->dbh)) { 993 psError(PS_ERR_UNKNOWN, false, "database error"); 994 return false; 995 } 996 997 return true; 998 } 999 1000 1001 static bool processedexpMode(pxConfig *config) 1002 { 1003 PS_ASSERT_PTR_NON_NULL(config, false); 1004 1005 bool status = false; 1006 psU64 limit = psMetadataLookupU64(&status, config->args, "-limit"); 1007 if (!status) { 1008 psError(PXTOOLS_ERR_PROG, false, "failed to lookup value for -limit"); 1009 return false; 1010 } 1011 1012 bool faulted = psMetadataLookupU64(&status, config->args, "-faulted"); 1013 if (!status) { 1014 psError(PXTOOLS_ERR_PROG, false, "failed to lookup value for -faulted"); 1015 return false; 1016 } 1017 1018 psString query = pxDataGet("regtool_processedexp.sql"); 1019 if (!query) { 1020 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 1021 return false; 1022 } 1023 1024 if (config->where) { 1025 psString whereClause = psDBGenerateWhereConditionSQL(config->where, "rawExp"); 1026 psStringAppend(&query, " AND %s", whereClause); 1027 psFree(whereClause); 1028 } 1029 1030 if (faulted) { 1031 // list only faulted rows 1032 psStringAppend(&query, " %s", "AND rawExp.fault != 0"); 1033 } else { 1034 // don't list faulted rows 1035 psStringAppend(&query, " %s", "AND rawExp.fault = 0"); 1036 } 1037 1038 // treat limit == 0 as "no limit" 1039 if (limit) { 1040 psString limitString = psDBGenerateLimitSQL(limit); 1041 psStringAppend(&query, " %s", limitString); 1042 psFree(limitString); 1043 } 1044 1045 if (!p_psDBRunQuery(config->dbh, query)) { 1046 psError(PS_ERR_UNKNOWN, false, "database error"); 1047 return false; 1048 } 1049 psFree(query); 1050 1051 psArray *output = p_psDBFetchResult(config->dbh); 1052 if (!output) { 1053 psErrorCode err = psErrorCodeLast(); 1054 switch (err) { 1055 case PS_ERR_DB_CLIENT: 1056 psError(PXTOOLS_ERR_SYS, false, "database error"); 1057 case PS_ERR_DB_SERVER: 1058 psError(PXTOOLS_ERR_PROG, false, "database error"); 1059 default: 1060 psError(PXTOOLS_ERR_PROG, false, "unknown error"); 1061 } 1062 1063 return false; 1064 } 1065 if (!psArrayLength(output)) { 1066 psTrace("regtool", PS_LOG_INFO, "no rows found"); 1067 psFree(output); 1068 return true; 1069 } 1070 1071 bool simple = false; 1072 { 1073 bool status = false; 1074 simple = psMetadataLookupBool(&status, config->args, "-simple"); 1075 if (!status) { 1076 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -simple"); 1077 return false; 1078 } 1079 } 1080 1081 if (psArrayLength(output)) { 1082 // negative simple so the default is true 1083 if (!ippdbPrintMetadatas(stdout, output, "rawExp", !simple)) { 1084 psError(PS_ERR_UNKNOWN, false, "failed to print array"); 1085 psFree(output); 1086 return false; 1087 } 1088 } 1089 1090 psFree(output); 1091 1092 return true; 1093 } 1094 1095 static bool revertprocessedexpMode(pxConfig *config) 1096 { 1097 PS_ASSERT_PTR_NON_NULL(config, false); 1098 1099 psString query = pxDataGet("regtool_revertprocessedexp.sql"); 1100 if (!query) { 1101 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 1102 return false; 1103 } 1104 1105 if (config->where) { 1106 psString whereClause = psDBGenerateWhereConditionSQL(config->where, "rawExp"); 1107 psStringAppend(&query, " AND %s", whereClause); 1108 psFree(whereClause); 1109 } 1110 1111 if (!p_psDBRunQuery(config->dbh, query)) { 1112 psError(PS_ERR_UNKNOWN, false, "database error"); 1113 psFree(query); 1114 return false; 1115 } 1116 psFree(query); 1117 1118 if (psDBAffectedRows(config->dbh) < 1) { 1119 psError(PS_ERR_UNKNOWN, false, "should have affected atleast 1 row"); 1120 return false; 1121 } 1122 1123 return true; 1124 } 1125 1126 1127 static bool updateprocessedexpMode(pxConfig *config) 1128 { 1129 bool status = false; 1130 psS16 code = psMetadataLookupS16(&status, config->args, "-code"); 1131 if (!status) { 1132 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -code"); 1133 return false; 1134 } 1135 if (code == INT16_MAX) { 1136 psError(PS_ERR_UNKNOWN, true, "-code is required"); 1137 return false; 1138 } 1139 1140 if (!pxSetFaultCode(config->dbh, "rawExp", config->where, code)) { 1141 psError(PS_ERR_UNKNOWN, false, "failed to set set fault flag"); 1142 return false; 1143 } 1144 1145 return true; 1146 } 1147 1148 1149 # if 0 1150 static guidePendingExpRow *newToP1PendingExp(newExpRow *newExp) 1151 { 1152 return guidePendingExpRowAlloc( 1153 newExp->exp_id, 1154 newExp->camera, 1155 newExp->telescope, 1156 newExp->exp_type, 1157 newExp->imfiles, 1158 "my filter", 1159 0.1, // airmass 1160 0.2, // ra 1161 0.3, // dec 1162 0.4, // exp time 1163 0.5, // background 1164 "my recipe", 1165 0xff // XXX calc version number 1166 ); 1167 } 1168 #endif 1169 1170 1171 #if 0 1172 static chipPendingExpRow *newTochipPendingExp(pxConfig *config, newExpRow *exp) 1173 { 1174 PS_ASSERT_PTR_NON_NULL(config, NULL); 1175 PS_ASSERT_PTR_NON_NULL(exp, NULL); 1176 1177 // optional 1178 bool status = false; 1179 psString label = psMetadataLookupStr(&status, config->args, "-label"); 1180 if (!status) { 1181 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -label"); 1182 return false; 1183 } 1184 1185 chipPendingExpRow *chipExp = chipPendingExpRowAlloc( 1186 0, // chip ID, assigned by db 1187 exp->exp_id, 1188 0xdeadbeef, // guide version 1189 label, 1190 "my recipe", // recipe 1191 NULL, // expgroup 1192 NULL // dvodb 1193 ); 1194 1195 return chipExp; 1196 } 1197 1198 1199 static chipInputImfileRow *rawImfileTochipInputImfile(pxConfig *config, psS64 chip_id, rawImfileRow *rawImfile) 1200 { 1201 return chipInputImfileRowAlloc( 1202 chip_id, 1203 rawImfile->class_id, 1204 rawImfile->uri 1205 ); 1206 } 1207 #endif 1208 1209 1210 static rawExpRow *newToRawExp(pxConfig *config, newExpRow *exp) 1211 { 1212 PS_ASSERT_PTR_NON_NULL(config, NULL); 1213 PS_ASSERT_PTR_NON_NULL(exp, NULL); 1214 1215 bool status = false; 1216 // required 1217 psString exp_name = psMetadataLookupStr(&status, config->args, "-exp_name"); 1218 if (!status) { 1219 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -exp_name"); 1220 return false; 1221 } 1222 if (!exp_name) { 1223 psError(PS_ERR_UNKNOWN, true, "-exp_name is required"); 1224 return false; 1225 } 1226 1227 psString camera = psMetadataLookupStr(&status, config->args, "-inst"); 1228 if (!status) { 1229 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -inst"); 1230 return false; 1231 } 1232 if (!camera) { 1233 psError(PS_ERR_UNKNOWN, true, "-inst is required"); 1234 return false; 1235 } 1236 1237 psString telescope = psMetadataLookupStr(&status, config->args, "-telescope"); 1238 if (!status) { 1239 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -telescope"); 1240 return false; 1241 } 1242 if (!telescope) { 1243 psError(PS_ERR_UNKNOWN, true, "-telescope is required"); 1244 return false; 1245 } 1246 1247 psString exp_tag = psMetadataLookupStr(&status, config->args, "-exp_tag"); 1248 if (!status) { 1249 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -exp_tag"); 1250 return false; 1251 } 1252 if (!exp_tag) { 1253 psError(PS_ERR_UNKNOWN, true, "-exp_tag is required"); 1254 return false; 1255 } 1256 1257 // optional 1258 psString exp_type = psMetadataLookupStr(&status, config->args, "-exp_type"); 1259 if (!status) { 1260 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -exp_type"); 1261 return false; 1262 } 1263 1264 psString filelevel = psMetadataLookupStr(&status, config->args, "-filelevel"); 1265 if (!status) { 1266 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -filelevel"); 1267 return false; 1268 } 1269 if (!filelevel) { 1270 psError(PS_ERR_UNKNOWN, true, "-filelevel is required"); 1271 return false; 1272 } 1273 1274 psString workdir = psMetadataLookupStr(&status, config->args, "-workdir"); 1275 if (!status) { 1276 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -workdir"); 1277 return false; 1278 } 1279 1280 psString reduction = psMetadataLookupStr(&status, config->args, "-reduction"); 1281 if (!status) { 1282 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -reduction"); 1283 return false; 1284 } 1285 1286 psString filter = psMetadataLookupStr(&status, config->args, "-filter"); 1287 if (!status) { 1288 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -filter"); 1289 return false; 1290 } 1291 1292 psString comment = psMetadataLookupStr(&status, config->args, "-comment"); 1293 if (!status) { 1294 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -comment"); 1295 return false; 1296 } 1297 1298 psF32 airmass = psMetadataLookupF32(&status, config->args, "-airmass"); 1299 if (!status) { 1300 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -airmass"); 1301 return false; 1302 } 1303 1304 psF64 ra = psMetadataLookupF64(&status, config->args, "-ra"); 1305 if (!status) { 1306 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -ra"); 1307 return false; 1308 } 1309 1310 psF64 decl = psMetadataLookupF64(&status, config->args, "-decl"); 1311 if (!status) { 1312 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -decl"); 1313 return false; 1314 } 1315 1316 psF32 exp_time = psMetadataLookupF32(&status, config->args, "-exp_time"); 1317 if (!status) { 1318 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -exp_time"); 1319 return false; 1320 } 1321 1322 psF32 sat_pixel_frac = psMetadataLookupF32(&status, config->args, "-sat_pixel_frac"); 1323 if (!status) { 1324 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -sat_pixel_frac"); 1325 return false; 1326 } 1327 1328 psF64 bg = psMetadataLookupF64(&status, config->args, "-bg"); 1329 if (!status) { 1330 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -bg"); 1331 return false; 1332 } 1333 1334 psF64 bg_stdev = psMetadataLookupF64(&status, config->args, "-bg_stdev"); 1335 if (!status) { 1336 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -bg_stdev"); 1337 return false; 1338 } 1339 1340 psF64 bg_mean_stdev = psMetadataLookupF64(&status, config->args, "-bg_mean_stdev"); 1341 if (!status) { 1342 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -bg_mean_stdev"); 1343 return false; 1344 } 1345 1346 psF64 alt = psMetadataLookupF64(&status, config->args, "-alt"); 1347 if (!status) { 1348 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -alt"); 1349 return false; 1350 } 1351 1352 psF64 az = psMetadataLookupF64(&status, config->args, "-az"); 1353 if (!status) { 1354 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -az"); 1355 return false; 1356 } 1357 1358 psF32 ccd_temp = psMetadataLookupF32(&status, config->args, "-ccd_temp"); 1359 if (!status) { 1360 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -ccd_temp"); 1361 return false; 1362 } 1363 1364 psF64 posang = psMetadataLookupF32(&status, config->args, "-posang"); 1365 if (!status) { 1366 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -posang"); 1367 return false; 1368 } 1369 1370 psF32 m1_x = psMetadataLookupF32(&status, config->args, "-m1_x"); 1371 if (!status) { 1372 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -m1_x"); 1373 return false; 1374 } 1375 psF32 m1_y = psMetadataLookupF32(&status, config->args, "-m1_y"); 1376 if (!status) { 1377 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -m1_y"); 1378 return false; 1379 } 1380 psF32 m1_z = psMetadataLookupF32(&status, config->args, "-m1_z"); 1381 if (!status) { 1382 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -m1_z"); 1383 return false; 1384 } 1385 psF32 m1_tip = psMetadataLookupF32(&status, config->args, "-m1_tip"); 1386 if (!status) { 1387 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -m1_tip"); 1388 return false; 1389 } 1390 psF32 m1_tilt = psMetadataLookupF32(&status, config->args, "-m1_tilt"); 1391 if (!status) { 1392 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -m1_tilt"); 1393 return false; 1394 } 1395 1396 psF32 m2_x = psMetadataLookupF32(&status, config->args, "-m2_x"); 1397 if (!status) { 1398 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -m2_x"); 1399 return false; 1400 } 1401 psF32 m2_y = psMetadataLookupF32(&status, config->args, "-m2_y"); 1402 if (!status) { 1403 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -m2_y"); 1404 return false; 1405 } 1406 psF32 m2_z = psMetadataLookupF32(&status, config->args, "-m2_z"); 1407 if (!status) { 1408 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -m2_z"); 1409 return false; 1410 } 1411 psF32 m2_tip = psMetadataLookupF32(&status, config->args, "-m2_tip"); 1412 if (!status) { 1413 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -m2_tip"); 1414 return false; 1415 } 1416 psF32 m2_tilt = psMetadataLookupF32(&status, config->args, "-m2_tilt"); 1417 if (!status) { 1418 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -m2_tilt"); 1419 return false; 1420 } 1421 1422 psF32 env_temp = psMetadataLookupF32(&status, config->args, "-env_temperature"); 1423 if (!status) { 1424 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -env_temperature"); 1425 return false; 1426 } 1427 psF32 env_humid = psMetadataLookupF32(&status, config->args, "-env_humidity"); 1428 if (!status) { 1429 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -env_humidity"); 1430 return false; 1431 } 1432 psF32 env_wind = psMetadataLookupF32(&status, config->args, "-env_wind_speed"); 1433 if (!status) { 1434 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -env_wind_speed"); 1435 return false; 1436 } 1437 psF32 env_dir = psMetadataLookupF32(&status, config->args, "-env_wind_dir"); 1438 if (!status) { 1439 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -env_wind_dir"); 1440 return false; 1441 } 1442 1443 psF32 teltemp_m1 = psMetadataLookupF32(&status, config->args, "-teltemp_m1"); 1444 if (!status) { 1445 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -teltemp_m1"); 1446 return false; 1447 } 1448 psF32 teltemp_m1cell = psMetadataLookupF32(&status, config->args, "-teltemp_m1cell"); 1449 if (!status) { 1450 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -teltemp_m1cell"); 1451 return false; 1452 } 1453 psF32 teltemp_m2 = psMetadataLookupF32(&status, config->args, "-teltemp_m2"); 1454 if (!status) { 1455 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -teltemp_m2"); 1456 return false; 1457 } 1458 psF32 teltemp_spider = psMetadataLookupF32(&status, config->args, "-teltemp_spider"); 1459 if (!status) { 1460 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -teltemp_spider"); 1461 return false; 1462 } 1463 psF32 teltemp_truss = psMetadataLookupF32(&status, config->args, "-teltemp_truss"); 1464 if (!status) { 1465 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -teltemp_truss"); 1466 return false; 1467 } 1468 psF32 teltemp_extra = psMetadataLookupF32(&status, config->args, "-teltemp_extra"); 1469 if (!status) { 1470 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -teltemp_extra"); 1471 return false; 1472 } 1473 1474 psF32 pon_time = psMetadataLookupF32(&status, config->args, "-pon_time"); 1475 if (!status) { 1476 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -pon_time"); 1477 return false; 1478 } 1479 1480 psF64 user_1 = psMetadataLookupF64(&status, config->args, "-user_1"); 1481 if (!status) { 1482 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -user_1"); 1483 return false; 1484 } 1485 psF64 user_2 = psMetadataLookupF64(&status, config->args, "-user_2"); 1486 if (!status) { 1487 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -user_2"); 1488 return false; 1489 } 1490 psF64 user_3 = psMetadataLookupF64(&status, config->args, "-user_3"); 1491 if (!status) { 1492 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -user_3"); 1493 return false; 1494 } 1495 psF64 user_4 = psMetadataLookupF64(&status, config->args, "-user_4"); 1496 if (!status) { 1497 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -user_4"); 1498 return false; 1499 } 1500 psF64 user_5 = psMetadataLookupF64(&status, config->args, "-user_5"); 1501 if (!status) { 1502 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -user_5"); 1503 return false; 1504 } 1505 1506 psString object = psMetadataLookupStr(&status, config->args, "-object"); 1507 if (!status) { 1508 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -object"); 1509 return false; 1510 } 1511 1512 psTime *dateobs = NULL; 1513 { 1514 psString dateobsStr = psMetadataLookupStr(&status, config->args, "-dateobs"); 1515 if (!status) { 1516 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -dateobs"); 1517 return false; 1518 } 1519 // pass through NULL as this is an optional field 1520 if (dateobsStr) { 1521 dateobs = psTimeFromISO(dateobsStr, PS_TIME_UTC); 1522 } else { 1523 dateobs = NULL; 1524 } 1525 } 1526 1527 // default 1528 psS16 code = psMetadataLookupS16(&status, config->args, "-code"); 1529 if (!status) { 1530 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -code"); 1531 return false; 1532 } 1533 1534 rawExpRow *raw = rawExpRowAlloc( 1535 exp->exp_id, 623 // carry through these values 624 // new CLI options overwrite existing values 625 workdir = workdir ? workdir : newExp->workdir; 626 reduction = reduction ? reduction : newExp->reduction; 627 dvodb = dvodb ? dvodb : newExp->dvodb; 628 tess_id = tess_id ? tess_id : newExp->tess_id; 629 end_stage = end_stage ? end_stage : newExp->end_stage; 630 631 psFree(newExp); 632 633 if (!rawExpInsert(config->dbh, 634 (psS64)atoll(exp_id), 1536 635 exp_name, 1537 636 camera, … … 1541 640 exp_type, 1542 641 filelevel, 1543 workdir ? workdir : exp->workdir, 1544 reduction ? reduction : exp->reduction, 642 workdir, 643 reduction, 644 dvodb, 645 tess_id, 646 end_stage, 1545 647 filter, 1546 comment,648 comment, 1547 649 airmass, 1548 650 ra, … … 1557 659 ccd_temp, 1558 660 posang, 1559 m1_x,1560 m1_y,1561 m1_z,1562 m1_tip,1563 m1_tilt,1564 m2_x,1565 m2_y,1566 m2_z,1567 m2_tip,1568 m2_tilt,1569 env_temp,1570 env_humid,1571 env_wind,1572 env_dir,1573 teltemp_m1,1574 teltemp_m1cell,1575 teltemp_m2,1576 teltemp_spider,1577 teltemp_truss,1578 teltemp_extra,1579 pon_time,661 m1_x, 662 m1_y, 663 m1_z, 664 m1_tip, 665 m1_tilt, 666 m2_x, 667 m2_y, 668 m2_z, 669 m2_tip, 670 m2_tilt, 671 env_temp, 672 env_humid, 673 env_wind, 674 env_dir, 675 teltemp_m1, 676 teltemp_m1cell, 677 teltemp_m2, 678 teltemp_spider, 679 teltemp_truss, 680 teltemp_extra, 681 pon_time, 1580 682 user_1, 1581 683 user_2, … … 1586 688 0.0, 1587 689 code 1588 ); 1589 1590 if (dateobs) { 1591 psFree(dateobs); 1592 } 1593 1594 return raw; 1595 } 690 )) { 691 // rollback 692 if (!psDBRollback(config->dbh)) { 693 psError(PS_ERR_UNKNOWN, false, "database error"); 694 } 695 psError(PS_ERR_UNKNOWN, false, "database error"); 696 return false; 697 } 698 699 // set the state for the newExp to stop 700 if (!pxnewExpSetState(config, exp_id, "stop")) { 701 // rollback 702 if (!psDBRollback(config->dbh)) { 703 psError(PS_ERR_UNKNOWN, false, "database error"); 704 } 705 psError(PS_ERR_UNKNOWN, false, "failed to change newExp.state for exp_id: %s", exp_id); 706 return false; 707 } 708 709 // should we stop here and proceed on to the chip stage? 710 if (psStrcasestr(end_stage, "reg")) { 711 // then we are done here 712 if (!psDBCommit(config->dbh)) { 713 psError(PS_ERR_UNKNOWN, false, "database error"); 714 return false; 715 } 716 717 return true; 718 } 719 // else continue on... 720 721 722 // insert an entry into the chipPendingExp table 723 // this can only be run as the newExp's state has been set to stop 724 if (!pxchipQueueByExpTag(config, 725 (psS64)atoll(exp_id), 726 workdir, 727 NULL, // label 728 reduction, 729 NULL, // expgroup 730 dvodb, 731 tess_id, 732 end_stage 733 )) { 734 // rollback 735 if (!psDBRollback(config->dbh)) { 736 psError(PS_ERR_UNKNOWN, false, "database error"); 737 } 738 psError(PS_ERR_UNKNOWN, false, "failed to queue chipPendingExp"); 739 return false; 740 } 741 742 if (!psDBCommit(config->dbh)) { 743 psError(PS_ERR_UNKNOWN, false, "database error"); 744 return false; 745 } 746 747 return true; 748 } 749 750 751 static bool processedexpMode(pxConfig *config) 752 { 753 PS_ASSERT_PTR_NON_NULL(config, false); 754 755 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 756 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 757 PXOPT_LOOKUP_BOOL(faulted, config->args, "-faulted", false); 758 759 psString query = pxDataGet("regtool_processedexp.sql"); 760 if (!query) { 761 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 762 return false; 763 } 764 765 if (config->where) { 766 psString whereClause = psDBGenerateWhereConditionSQL(config->where, "rawExp"); 767 psStringAppend(&query, " AND %s", whereClause); 768 psFree(whereClause); 769 } 770 771 if (faulted) { 772 // list only faulted rows 773 psStringAppend(&query, " %s", "AND rawExp.fault != 0"); 774 } else { 775 // don't list faulted rows 776 psStringAppend(&query, " %s", "AND rawExp.fault = 0"); 777 } 778 779 // treat limit == 0 as "no limit" 780 if (limit) { 781 psString limitString = psDBGenerateLimitSQL(limit); 782 psStringAppend(&query, " %s", limitString); 783 psFree(limitString); 784 } 785 786 if (!p_psDBRunQuery(config->dbh, query)) { 787 psError(PS_ERR_UNKNOWN, false, "database error"); 788 return false; 789 } 790 psFree(query); 791 792 psArray *output = p_psDBFetchResult(config->dbh); 793 if (!output) { 794 psErrorCode err = psErrorCodeLast(); 795 switch (err) { 796 case PS_ERR_DB_CLIENT: 797 psError(PXTOOLS_ERR_SYS, false, "database error"); 798 case PS_ERR_DB_SERVER: 799 psError(PXTOOLS_ERR_PROG, false, "database error"); 800 default: 801 psError(PXTOOLS_ERR_PROG, false, "unknown error"); 802 } 803 804 return false; 805 } 806 if (!psArrayLength(output)) { 807 psTrace("regtool", PS_LOG_INFO, "no rows found"); 808 psFree(output); 809 return true; 810 } 811 812 if (psArrayLength(output)) { 813 // negative simple so the default is true 814 if (!ippdbPrintMetadatas(stdout, output, "rawExp", !simple)) { 815 psError(PS_ERR_UNKNOWN, false, "failed to print array"); 816 psFree(output); 817 return false; 818 } 819 } 820 821 psFree(output); 822 823 return true; 824 } 825 826 static bool revertprocessedexpMode(pxConfig *config) 827 { 828 PS_ASSERT_PTR_NON_NULL(config, false); 829 830 psString query = pxDataGet("regtool_revertprocessedexp.sql"); 831 if (!query) { 832 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 833 return false; 834 } 835 836 if (config->where) { 837 psString whereClause = psDBGenerateWhereConditionSQL(config->where, "rawExp"); 838 psStringAppend(&query, " AND %s", whereClause); 839 psFree(whereClause); 840 } 841 842 if (!p_psDBRunQuery(config->dbh, query)) { 843 psError(PS_ERR_UNKNOWN, false, "database error"); 844 psFree(query); 845 return false; 846 } 847 psFree(query); 848 849 if (psDBAffectedRows(config->dbh) < 1) { 850 psError(PS_ERR_UNKNOWN, false, "should have affected atleast 1 row"); 851 return false; 852 } 853 854 return true; 855 } 856 857 858 static bool updateprocessedexpMode(pxConfig *config) 859 { 860 PS_ASSERT_PTR_NON_NULL(config, false); 861 862 PXOPT_LOOKUP_S16(code, config->args, "-code", true, false); 863 864 if (!pxSetFaultCode(config->dbh, "rawExp", config->where, code)) { 865 psError(PS_ERR_UNKNOWN, false, "failed to set set fault flag"); 866 return false; 867 } 868 869 return true; 870 }
Note:
See TracChangeset
for help on using the changeset viewer.
