// // $Id$ //----------------------------------------------------------------------- // // (c) Copyright 2006 by GATS, Inc., // 11864 Canon Blvd, Suite 101, Newport News VA 23606 // // All Rights Reserved. No part of this software or publication may be // reproduced, stored in a retrieval system, or transmitted, in any form // or by any means, electronic, mechanical, photocopying, recording, or // otherwise without the prior written permission of GATS, Inc. // //----------------------------------------------------------------------- // // Module: Level1DataOutput.cpp // // Author: John Burton // // Date: Thu May 4 17:01:31 2006 // //----------------------------------------------------------------------- // // Modification History: // // $Log$ // //----------------------------------------------------------------------- // //----------------------------------------------------------------------- // Include Files: //----------------------------------------------------------------------- // #include #include "ConfigFile.h" #include "EventVar.h" #include "Level1DataOutput.h" #include "OutputSOFIE_Summary.h" #include "MetaTableList.h" #include "ModifySOFIE_Summary.h" #include "DeleteFromTables.h" #include "OutputEventVar.h" #include "OutputEventVect.h" #include "OutputEventStats.h" #include "OutputQuality.h" #include "OutputSingleValue.h" //#include "DBTransaction.h" #include "TransferMisc.h" #include "GATS_Exception.h" #include "GATS_DB_mysql.h" #include "SofieDBAdjust.h" #include // //----------------------------------------------------------------------- // Defines and Macros: //----------------------------------------------------------------------- // // //----------------------------------------------------------------------- // Global Variables: //----------------------------------------------------------------------- // // //----------------------------------------------------------------------- // Utility Routines: //----------------------------------------------------------------------- // using namespace std; using namespace gatsDBpp; int Level1DataOutput(Event& L0, Event& L1, Event& Tmp, Event& SD, ConfigFile& cf) { const string MODULE_NAME = "Level1DataOutput"; int eventNo = L1.getEventNumber(); // DBTransaction transaction; DeleteFromTables deleteEvent; string strLog; string strMsg; string tableName; vector tableList; string metaSumName = cf.GetStr(MODULE_NAME, "MetaSummary"); string metaIndepend = cf.GetStr(MODULE_NAME, "MetaIndependVar"); string metaStructName = cf.GetStr(MODULE_NAME, "MetaStructure"); string metaParamName = cf.GetStr(MODULE_NAME, "MetaParameter"); string metaVectorName = cf.GetStr(MODULE_NAME, "MetaVectorName"); string metaStatsName = cf.GetStr(MODULE_NAME, "MetaStatsName"); string metaQualityName = cf.GetStr(MODULE_NAME, "MetaQualityName"); string metaSingleValueName = cf.GetStr(MODULE_NAME, "MetaSingleValueName"); string L1SummaryName = cf.GetStr(MODULE_NAME, "Sofie_Summary_Table"); string user = cf.GetStr(MODULE_NAME, "User"); string passwd = cf.GetStr(MODULE_NAME, "Passwd"); string dbName = cf.GetStr(MODULE_NAME, "Database_Name"); string dbURL = cf.GetStr(MODULE_NAME, "URL_Name"); unsigned long indx; time_t rawtime; time ( &rawtime ); long procDate = rawtime; string Level0_ID = cf.GetStr("Level0DataInput", "version_Id"); string Version = "L1_1.1b"; int retCode = 0; std::cerr << "In Level1DataOutput \n"; try { TransferMisc(L0, L1); // Transfer any variables not dealt with elsewhere GATS_DB_mysql dbConn(user.c_str(), passwd.c_str(), dbName.c_str(),dbURL.c_str() ); SofieDBAdjust dbAdjust(dbConn); dbAdjust.UseGMTimeZone(); strLog = string("Using database: ") + dbName; L1.addLogEntry(strLog); strLog = string("Using host: ") + dbURL; L1.addLogEntry(strLog); strLog = string("L1 Code version: ") + Version; L1.addLogEntry(strLog); ModifySOFIE_Summary modSummary(&dbConn, L1SummaryName); OutputEventVar eventVarOutput(L1, dbConn, metaSumName, metaParamName, metaStructName, metaIndepend); OutputEventVect eventVectOutput(L1, dbConn, metaSumName, metaVectorName, metaStructName, metaIndepend, metaParamName); OutputEventStats eventStatsOutput(L1, dbConn, metaSumName, metaStatsName, metaStructName); OutputQuality qualOutput(L1, dbConn, metaSumName, metaQualityName, metaStructName); OutputSingleValue valueOutput(L1, dbConn, metaSumName, metaSingleValueName, metaStructName); MetaTableList tableListing(dbConn, metaSumName); OutputSOFIE_Summary output_L1_Summary(&dbConn, L1SummaryName, procDate, Level0_ID, Version); deleteEvent = DeleteFromTables(dbConn); // clean up any remnants of previous writing from all tables for a given event. if (modSummary.eventExists(eventNo) ) modSummary.deleteEvent(eventNo); deleteEvent(tableListing.getAll(), eventNo); // transaction = DBTransaction(&dbConn); // transaction.Begin(); tableList = tableListing.getChosen(); for(indx = 0; indx < tableList.size(); indx++) { eventVarOutput( tableList[indx] ); eventVectOutput( tableList[indx] ); eventStatsOutput( tableList[indx] ); qualOutput( tableList[indx] ); valueOutput( tableList[indx] ); } output_L1_Summary(L1); // transaction.Commit(); } catch (exception &ex) { strMsg = string("Exception caught in Level1DataOutput: ") + ex.what(); cerr << strMsg << endl; L1.addLogEntry(strMsg); try { // if(transaction.IsActive()) // transaction.Rollback(); } catch (exception &ex) { cerr << "Exception occurred when trying to Rollback Transaction!!!" << endl; cerr << "Exception message: " << ex.what() << endl; } retCode = -200; } return retCode; }