#include <XMLTool.hh>
Collaboration diagram for XMLTool:
Public Member Functions | |
XMLTool () | |
~XMLTool () | |
int | parse (SteerDesc &_steerDesc, string _xmlFileName) |
void | receiveEvent (string balise, const map< string, string > &key_value) const |
Private Attributes | |
string | xmlFileName |
SteerDesc * | steerDesc |
Definition at line 166 of file XMLTool.hh.
XMLTool::XMLTool | ( | ) |
XMLTool::~XMLTool | ( | ) | [inline] |
int XMLTool::parse | ( | SteerDesc & | _steerDesc, | |
string | _xmlFileName | |||
) |
Definition at line 264 of file XMLTool.cpp.
Referenced by EventDisplay::Display(), and main().
00265 { 00266 00267 steerDesc = &aSteerDesc; 00268 00269 if ( steerDesc != NULL ) 00270 { 00271 xmlFileName = aXmlFileName; 00272 00273 00274 bool doNamespaces = false; 00275 bool doSchema = false; 00276 bool schemaFullChecking = false; 00277 const char* encodingName = "LATIN1"; 00278 XMLFormatter::UnRepFlags unRepFlags = XMLFormatter::UnRep_CharRef; 00279 const char* xmlFile = 0; 00280 SAXParser::ValSchemes valScheme = SAXParser::Val_Auto; 00281 00282 00283 // Initialize the XML4C2 system 00284 try 00285 { 00286 XMLPlatformUtils::Initialize(); 00287 } 00288 00289 catch (const XMLException& toCatch) 00290 { 00291 XERCES_STD_QUALIFIER cerr << "Error during initialization! :\n" 00292 << StrX(toCatch.getMessage()) << XERCES_STD_QUALIFIER endl; 00293 return 1; 00294 } 00295 00296 xmlFile = xmlFileName.data() ; 00297 int errorCount = 0; 00298 00299 // 00300 // Create a SAX parser object. Then, according to what we were told on 00301 // the command line, set it to validate or not. 00302 // 00303 SAXParser* parser = new SAXParser; 00304 parser->setValidationScheme(valScheme); 00305 parser->setDoNamespaces(doNamespaces); 00306 parser->setDoSchema(doSchema); 00307 parser->setValidationSchemaFullChecking(schemaFullChecking); 00308 00309 // 00310 // Create the handler object and install it as the document and error 00311 // handler for the parser-> Then parse the file and catch any exceptions 00312 // that propogate out 00313 // 00314 int errorCode = 0; 00315 try 00316 { 00317 XMLHandlers handler(*this, encodingName, unRepFlags); 00318 parser->setDocumentHandler(&handler); 00319 parser->setErrorHandler(&handler); 00320 parser->parse(xmlFile); 00321 errorCount = parser->getErrorCount(); 00322 } 00323 catch (const OutOfMemoryException&) 00324 { 00325 XERCES_STD_QUALIFIER cerr << "OutOfMemoryException" << XERCES_STD_QUALIFIER endl; 00326 errorCode = 5; 00327 } 00328 catch (const XMLException& toCatch) 00329 { 00330 XERCES_STD_QUALIFIER cerr << "\nAn error occurred\n Error: " 00331 << StrX(toCatch.getMessage()) 00332 << "\n" << XERCES_STD_QUALIFIER endl; 00333 errorCode = 4; 00334 } 00335 if(errorCode) { 00336 XMLPlatformUtils::Terminate(); 00337 return errorCode; 00338 } 00339 00340 // 00341 // Delete the parser itself. Must be done prior to calling Terminate, below. 00342 // 00343 delete parser; 00344 00345 // And call the termination method 00346 XMLPlatformUtils::Terminate(); 00347 00348 if (errorCount > 0) 00349 return 4; 00350 else 00351 { 00352 return 0; 00353 } 00354 } 00355 else { return 4; } 00356 }
void XMLTool::receiveEvent | ( | string | balise, | |
const map< string, string > & | key_value | |||
) | const |
Definition at line 360 of file XMLTool.cpp.
Referenced by XMLHandlers::startElement().
00361 { 00362 string key,value; 00363 map<string, string>::const_iterator iter; 00364 00365 //cout << "balise[" << balise <<"]" <<endl; 00366 00367 for (iter=key_value.begin(); iter != key_value.end(); ++iter) 00368 { 00369 key = iter->first; 00370 value = iter->second; 00371 00372 //cout << "key[" << key <<"]" <<endl; 00373 //cout << "value[" << value <<"]" <<endl; 00374 00375 00376 //Info 00377 if ( !balise.compare(INFOR) && !key.compare(DATE) ) 00378 { 00379 steerDesc->date = value; 00380 } 00381 // uRun 00382 00383 // Monitoring dif 00384 else if ( !balise.compare(MONDIF) && !key.compare(ID) ) 00385 { 00386 int id = atoi(value.c_str()); 00387 steerDesc->monitoringDif = atoi(value.c_str()); 00388 } 00389 //slow control file 00390 else if ( !balise.compare(SLOWCONTROL) && !key.compare(PATH) ) 00391 { 00392 steerDesc->slowControl = value; 00393 } 00394 00395 //input file 00396 else if ( !balise.compare(INPUT) && !key.compare(PATH) ) 00397 { 00398 steerDesc->inputInfo = new input_info_t(); 00399 steerDesc->inputInfo->path = value; 00400 } 00401 else if ( !balise.compare(INPUT) && !key.compare(TYPE) ) 00402 { 00403 if ( steerDesc->inputInfo != NULL ) 00404 { 00405 steerDesc->inputInfo->type = value; 00406 } 00407 } 00408 00409 else if ( !balise.compare(INPUT) && !key.compare(RUNID) ) 00410 { 00411 if ( steerDesc->inputInfo != NULL ) 00412 { 00413 steerDesc->inputInfo->runId = atoi(value.c_str()); 00414 } 00415 } 00416 00417 // output file 00418 else if ( !balise.compare(OUTPUT) && !key.compare(PATH) ) 00419 { 00420 steerDesc->outputFile = value; 00421 } 00422 //detector name and description 00423 else if ( !balise.compare(DETECTOR) && !key.compare(NAME) ) 00424 { 00425 steerDesc->detectorName = value; 00426 } 00427 else if ( !balise.compare(DETECTOR) && !key.compare(DESCRIPTION) ) 00428 { 00429 steerDesc->detectorDescription = value; 00430 } 00431 00432 // Chamber type and z position 00433 else if ( !balise.compare(CHAMBER) && !key.compare(TYPE) ) 00434 { 00435 if ( steerDesc->chamberInfo == NULL ) 00436 { 00437 steerDesc->chamberInfo = new chamber_info_t(); 00438 steerDesc->chamberInfo->xRotation = false; 00439 steerDesc->chamberInfo->yRotation = false; 00440 steerDesc->chamberInfo->zRotation = 0; 00441 steerDesc->chamberInfo->stripHorizontal = false; 00442 steerDesc->chamberInfo->unit = "cm" ; 00443 } 00444 steerDesc->chamberInfo->type = value; 00445 } 00446 else if ( !balise.compare(CHAMBER) && !key.compare(XPOS) ) 00447 { 00448 if ( steerDesc->chamberInfo == NULL ) 00449 { 00450 steerDesc->chamberInfo = new chamber_info_t(); 00451 steerDesc->chamberInfo->xRotation = false; 00452 steerDesc->chamberInfo->yRotation = false; 00453 steerDesc->chamberInfo->zRotation = 0; 00454 steerDesc->chamberInfo->stripHorizontal = false; 00455 steerDesc->chamberInfo->unit = "cm" ; 00456 } 00457 steerDesc->chamberInfo->xPos = atof(value.c_str()); 00458 // cout << "XMLTool xPos[" << steerDesc->chamberInfo->xPos <<"]" << endl; 00459 } 00460 else if ( !balise.compare(CHAMBER) && !key.compare(YPOS) ) 00461 { 00462 if ( steerDesc->chamberInfo == NULL ) 00463 { 00464 steerDesc->chamberInfo = new chamber_info_t(); 00465 steerDesc->chamberInfo->xRotation = false; 00466 steerDesc->chamberInfo->yRotation = false; 00467 steerDesc->chamberInfo->zRotation = 0; 00468 steerDesc->chamberInfo->stripHorizontal = false; 00469 steerDesc->chamberInfo->unit = "cm" ; 00470 } 00471 steerDesc->chamberInfo->yPos = atof(value.c_str()); 00472 // cout << "y atof(value.c_str()[" << atof(value.c_str()) << "]" <<endl; 00473 // cout << "XMLTool yPos[" << steerDesc->chamberInfo->yPos <<"]" << endl; 00474 } 00475 else if ( !balise.compare(CHAMBER) && !key.compare(ZPOS) ) 00476 { 00477 if ( steerDesc->chamberInfo == NULL ) 00478 { 00479 steerDesc->chamberInfo = new chamber_info_t(); 00480 steerDesc->chamberInfo->xRotation = false; 00481 steerDesc->chamberInfo->yRotation = false; 00482 steerDesc->chamberInfo->zRotation = 0; 00483 steerDesc->chamberInfo->stripHorizontal = false; 00484 steerDesc->chamberInfo->unit = "cm" ; 00485 } 00486 steerDesc->chamberInfo->zPos = atof(value.c_str()); 00487 } 00488 else if ( !balise.compare(CHAMBER) && !key.compare(XROTATION) ) 00489 { 00490 if ( steerDesc->chamberInfo == NULL ) 00491 { 00492 steerDesc->chamberInfo = new chamber_info_t(); 00493 steerDesc->chamberInfo->xRotation = false; 00494 steerDesc->chamberInfo->yRotation = false; 00495 steerDesc->chamberInfo->zRotation = 0; 00496 steerDesc->chamberInfo->stripHorizontal = false; 00497 steerDesc->chamberInfo->unit = "cm" ; 00498 } 00499 if ( !value.compare("true") || !value.compare("TRUE") ) 00500 { 00501 steerDesc->chamberInfo->xRotation = true; 00502 } 00503 } 00504 else if ( !balise.compare(CHAMBER) && !key.compare(YROTATION) ) 00505 { 00506 if ( steerDesc->chamberInfo == NULL ) 00507 { 00508 steerDesc->chamberInfo = new chamber_info_t(); 00509 steerDesc->chamberInfo->xRotation = false; 00510 steerDesc->chamberInfo->yRotation = false; 00511 steerDesc->chamberInfo->zRotation = 0; 00512 steerDesc->chamberInfo->stripHorizontal = false; 00513 steerDesc->chamberInfo->unit = "cm" ; 00514 } 00515 if ( !value.compare("true") || !value.compare("TRUE") ) 00516 { 00517 steerDesc->chamberInfo->yRotation = true; 00518 } 00519 } 00520 00521 else if ( !balise.compare(CHAMBER) && !key.compare(ZROTATION) ) 00522 { 00523 if ( steerDesc->chamberInfo == NULL ) 00524 { 00525 steerDesc->chamberInfo = new chamber_info_t(); 00526 steerDesc->chamberInfo->xRotation = false; 00527 steerDesc->chamberInfo->yRotation = false; 00528 steerDesc->chamberInfo->zRotation = 0; 00529 steerDesc->chamberInfo->stripHorizontal = false; 00530 steerDesc->chamberInfo->unit = "cm" ; 00531 } 00532 i16 rotation = atoi(value.c_str()); 00533 if ( rotation == 0 || rotation == -90 || rotation == 90 ) 00534 { 00535 steerDesc->chamberInfo->zRotation = rotation; 00536 } 00537 else 00538 { 00539 cout << "XML error. zRotation value choise is [-90,0,90]." << endl; 00540 exit(-1); 00541 } 00542 00543 } 00544 00545 00546 else if ( !balise.compare(CHAMBER) && !key.compare(STRIPHORIZONTAL) ) 00547 { 00548 if ( steerDesc->chamberInfo == NULL ) 00549 { 00550 steerDesc->chamberInfo = new chamber_info_t(); 00551 steerDesc->chamberInfo->xRotation = false; 00552 steerDesc->chamberInfo->yRotation = false; 00553 steerDesc->chamberInfo->zRotation = 0; 00554 steerDesc->chamberInfo->stripHorizontal = false; 00555 steerDesc->chamberInfo->unit = "cm" ; 00556 } 00557 if ( !value.compare("true") || !value.compare("TRUE") ) 00558 { 00559 steerDesc->chamberInfo->stripHorizontal = true; 00560 } 00561 } 00562 else if ( !balise.compare(CHAMBER) && !key.compare(UNIT) ) 00563 { 00564 if ( steerDesc->chamberInfo == NULL ) 00565 { 00566 steerDesc->chamberInfo = new chamber_info_t(); 00567 steerDesc->chamberInfo->xRotation = false; 00568 steerDesc->chamberInfo->yRotation = false; 00569 steerDesc->chamberInfo->zRotation = 0; 00570 steerDesc->chamberInfo->stripHorizontal = false; 00571 steerDesc->chamberInfo->unit = "cm" ; 00572 } 00573 steerDesc->chamberInfo->unit = value; 00574 } 00575 00576 else if ( !balise.compare(CHAMBER) && !key.compare(ID) ) 00577 { 00578 if ( steerDesc->chamberInfo == NULL ) 00579 { 00580 steerDesc->chamberInfo = new chamber_info_t(); 00581 steerDesc->chamberInfo->xRotation = false; 00582 steerDesc->chamberInfo->yRotation = false; 00583 steerDesc->chamberInfo->zRotation = 0; 00584 steerDesc->chamberInfo->stripHorizontal = false; 00585 steerDesc->chamberInfo->unit = "cm" ; 00586 } 00587 steerDesc->chamberInfo->id = atoi(value.c_str()); 00588 } 00589 00590 // Boards 00591 else if ( !balise.compare(BOARD) && !key.compare(ID) ) 00592 { 00593 if ( steerDesc->boardInfo == NULL ) steerDesc->boardInfo = new BoardInfo_t(); 00594 steerDesc->boardInfo->id = atoi(value.c_str()); 00595 steerDesc->boardInfo->chamberId = steerDesc->lastChamberId; 00596 steerDesc->boardInfo->difId = steerDesc->lastDifId; 00597 } 00598 00599 00600 // Difs 00601 else if ( !balise.compare(DIF) && !key.compare(ID) ) 00602 { 00603 if ( steerDesc->difInfo == NULL ) steerDesc->difInfo = new DifInfo_t(); 00604 steerDesc->difInfo->id = atoi(value.c_str()); 00605 steerDesc->difInfo->chamberId = steerDesc->lastChamberId; 00606 } 00607 00608 // Chips 00609 else if ( !balise.compare(CHIP) && !key.compare(ID) ) 00610 { 00611 if ( steerDesc->chipInfo == NULL ) 00612 { 00613 steerDesc->chipInfo = new ChipInfo_t(); 00614 steerDesc->chipInfo->boardId = steerDesc->lastBoardId; 00615 steerDesc->chipInfo->difId = steerDesc->lastDifId; 00616 steerDesc->chipInfo->chamberId = steerDesc->lastChamberId; 00617 } 00618 steerDesc->chipInfo->id = atoi(value.c_str()); 00619 } 00620 else if ( !balise.compare(CHIP) && !key.compare(SERIAL) ) 00621 { 00622 if ( steerDesc->chipInfo == NULL ) 00623 { 00624 steerDesc->chipInfo = new ChipInfo_t(); 00625 steerDesc->chipInfo->boardId = steerDesc->lastBoardId; 00626 steerDesc->chipInfo->difId = steerDesc->lastDifId; 00627 steerDesc->chipInfo->chamberId = steerDesc->lastChamberId; 00628 } 00629 steerDesc->chipInfo->serial = atoi(value.c_str()); 00630 } 00631 00632 // Slow Control 00633 else if (!balise.compare(SCPARAM) && !key.compare(SCID) ) 00634 { 00635 if ( steerDesc->slowControlInfo == NULL ) 00636 { 00637 steerDesc->slowControlInfo = new SlowControl_t(); 00638 } 00639 steerDesc->slowControlInfo->scId = atoi(value.c_str()); 00640 } 00641 else if (!balise.compare(SCPARAM) && !key.compare(TYPE) ) 00642 { 00643 if ( steerDesc->slowControlInfo == NULL ) steerDesc->slowControlInfo = new SlowControl_t(); 00644 steerDesc->slowControlInfo->type = value; 00645 } 00646 else if (!balise.compare(SCPARAM) && !key.compare(CHAMBERID) ) 00647 { 00648 if ( steerDesc->slowControlInfo == NULL ) steerDesc->slowControlInfo = new SlowControl_t(); 00649 steerDesc->slowControlInfo->chamberId = atoi(value.c_str()); 00650 } 00651 else if (!balise.compare(SCPARAM) && !key.compare(DIFID) ) 00652 { 00653 if ( steerDesc->slowControlInfo == NULL ) steerDesc->slowControlInfo = new SlowControl_t(); 00654 steerDesc->slowControlInfo->difId = atoi(value.c_str()); 00655 } 00656 else if (!balise.compare(SCPARAM) && !key.compare(BOARDID) ) 00657 { 00658 if ( steerDesc->slowControlInfo == NULL ) steerDesc->slowControlInfo = new SlowControl_t(); 00659 steerDesc->slowControlInfo->boardId = atoi(value.c_str()); 00660 } 00661 else if (!balise.compare(SCPARAM) && !key.compare(NAME) ) 00662 { 00663 if ( steerDesc->slowControlInfo == NULL ) steerDesc->slowControlInfo = new SlowControl_t(); 00664 steerDesc->slowControlInfo->name = value; 00665 } 00666 else if (!balise.compare(SCPARAM) && !key.compare(PMID) ) 00667 { 00668 if ( steerDesc->slowControlInfo == NULL ) steerDesc->slowControlInfo = new SlowControl_t(); 00669 steerDesc->slowControlInfo->pmId = atoi(value.c_str()); 00670 } 00671 00672 } // for 00673 00674 if ( !balise.compare(CHAMBER) && ( steerDesc->chamberInfo != NULL ) ) 00675 { 00676 steerDesc->chambers.push_back(*(steerDesc->chamberInfo)); 00677 steerDesc->lastChamberId = steerDesc->chamberInfo->id; 00678 steerDesc->chamberInfo = NULL; 00679 } 00680 if ( !balise.compare(BOARD) && ( steerDesc->boardInfo != NULL ) ) 00681 { 00682 steerDesc->boards.push_back(*(steerDesc->boardInfo)); 00683 steerDesc->lastBoardId = steerDesc->boardInfo->id; 00684 steerDesc->boardInfo = NULL; 00685 } 00686 if ( !balise.compare(INPUT) && ( steerDesc->inputInfo != NULL ) ) 00687 { 00688 steerDesc->inputFiles.push_back(*(steerDesc->inputInfo)); 00689 steerDesc->inputInfo = NULL; 00690 } 00691 if (!balise.compare(DIF) && ( steerDesc->difInfo != NULL ) ) 00692 { 00693 steerDesc->difs.push_back(*(steerDesc->difInfo)); 00694 steerDesc->lastDifId = steerDesc->difInfo->id; 00695 steerDesc->difInfo = NULL; 00696 } 00697 if (!balise.compare(CHIP) && ( steerDesc->chipInfo != NULL ) ) 00698 { 00699 steerDesc->chips.push_back(*(steerDesc->chipInfo)); 00700 steerDesc->chipInfo = NULL; 00701 } 00702 if (!balise.compare(SCPARAM) && ( steerDesc->slowControlInfo != NULL ) ) 00703 { 00704 steerDesc->slowControls.push_back(*(steerDesc->slowControlInfo)); 00705 steerDesc->slowControlInfo = NULL; 00706 } 00707 00708 }
string XMLTool::xmlFileName [private] |
SteerDesc* XMLTool::steerDesc [private] |