/** @class OutputEventVar @author Brian Magill @date 3/07/2007 $Date:$ $Revision:$ @copyright (©) 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. @brief Class writes a vector of data associated with a given parameter to the database. */ //---------------------------------------------------------------------- // #include #include #include "Event.h" #include "GATS_DB.h" #include "GATS_DB_Exception.h" #include "GATS_Utilities.hpp" #include "OutputEventVar.h" //#include "MetaSummary.h" #include "MetaParameter.h" #include "ModifyGeneric.h" #include "WritingFactory.h" #include "FindIndependVar.h" #include "EventVarLength.h" #include "GATS_Utilities.hpp" using namespace std; using namespace GATS_Utilities; void OutputEventVar::operator() (std::string tableName) const { string strLog; string ParamName; string strErr; vector paramList; vector dataArray; int indxSize; unsigned long i; //int j; int event = L1_Output->getEventNumber(); //MetaSummary metaSum(*L1_Output, *dbConn, metaSumTable); MetaParameter metaParam(*L1_Output, *dbConn, metaParamTable); FindIndependVar findIndep(*dbConn, metaSumTable, metaIndepend, metaParamTable); EventVarLength varLength(*L1_Output); WritingFactory factory(*dbConn, metaSumTable, metaStructTable); ModifyGeneric writeOutput; // Only write to table if it stores EventVar objects if (!metaParam.TableExists(tableName) ) return; writeOutput = factory(tableName); strLog = string("writing to table: ") + tableName; L1_Output->addLogEntry(strLog); if (writeOutput.eventExists(event) ) { strLog = string("Warning: overwriting data for event ") + ConvertToString(event) + string(" in table ") + tableName; cerr << strLog << endl; L1_Output->addLogEntry(strLog); writeOutput.deleteEvent(event); } indxSize = varLength(findIndep(tableName)); paramList = metaParam.getParameterList(tableName); for(i = 0; i < paramList.size(); i++) { dataArray = metaParam.getData(tableName, paramList[i]); if (dataArray.size() != indxSize) { strErr = string("OutputEventVar::operator() : Size of array ") + metaParam.getEntryName(tableName, paramList[i]) + string(" = ") + ConvertToString(dataArray.size()) + string(" for parameter ") + paramList[i] + " does not match index size = " + ConvertToString(indxSize); throw runtime_error(strErr); } writeOutput.insertIntoTable(event, paramList[i], dataArray); // for (j = 0; j < dataArray.size(); j++) // writeOutput.insertIntoTable(event, j+1, paramList[i], dataArray[j]); } }