00001 #include <stdexcept>
00002 #include <string>
00003 #include <fstream>
00004 #include <iostream>
00005 #include <stdio.h>
00006 #include <cstdlib>
00007
00008 #include "OnlineDB/Oracle/interface/Oracle.h"
00009
00010 #include "OnlineDB/EcalCondDB/interface/ODLaserConfig.h"
00011
00012 using namespace std;
00013 using namespace oracle::occi;
00014
00015 ODLaserConfig::ODLaserConfig()
00016 {
00017 m_env = NULL;
00018 m_conn = NULL;
00019 m_writeStmt = NULL;
00020 m_readStmt = NULL;
00021 m_size=0;
00022 m_config_tag="";
00023 m_ID=0;
00024 clear();
00025
00026 }
00027
00028 void ODLaserConfig::clear(){
00029
00030
00031 m_debug=0;
00032 m_dummy=0;
00033
00034
00035 m_emtc_1=0;
00036 m_emtc_2=0;
00037 m_emtc_3=0;
00038 m_emtc_4=0;
00039 m_emtc_5=0;
00040
00041
00042 m_wave=0;
00043 m_power=0;
00044 m_switch=0;
00045 m_filter=0;
00046 m_on=0;
00047 m_laserhost="";
00048 m_laserport=0;
00049
00050
00051 m_mq_base=0;
00052 m_mq_none=0;
00053 m_mode="" ;
00054 m_chan_mask=0;
00055 m_samples="";
00056 m_ped_file="";
00057 m_use_buffer=0;
00058 m_post_trig=0;
00059 m_fp_mode=0;
00060 m_hal_mod_file="";
00061 m_hal_add_file="";
00062 m_hal_tab_file="";
00063 m_serial="";
00064 m_ped_count=0;
00065 m_raw_mode=0;
00066 m_aqmode="";
00067 m_mq_file="";
00068 m_laser_tag="";
00069 m_matacq_vernier_min=0;
00070 m_matacq_vernier_max=0;
00071
00072 m_wte_2_led_delay =0;
00073 m_led1_on =0;
00074 m_led2_on =0;
00075 m_led3_on =0;
00076 m_led4_on =0;
00077 m_vinj =0;
00078 m_orange_led_mon_ampl=0;
00079 m_blue_led_mon_ampl =0;
00080 m_trig_log_file ="";
00081 m_led_control_on =0;
00082 m_led_control_host="";
00083 m_led_control_port =0;
00084 m_ir_laser_power =0;
00085 m_green_laser_power=0;
00086 m_red_laser_power =0;
00087 m_blue_laser_log_attenuator =0;
00088 m_ir_laser_log_attenuator =0;
00089 m_green_laser_log_attenuator =0;
00090 m_red_laser_log_attenuator =0;
00091 m_laser_config_file ="";
00092
00093 }
00094
00095 ODLaserConfig::~ODLaserConfig()
00096 {
00097 }
00098
00099
00100
00101 void ODLaserConfig::setParameters(std::map<string,string> my_keys_map){
00102
00103
00104
00105
00106 for( std::map<std::string, std::string >::iterator ci=
00107 my_keys_map.begin(); ci!=my_keys_map.end(); ci++ ) {
00108
00109 if(ci->first== "LASER_CONFIGURATION_ID") setConfigTag(ci->second);
00110 if(ci->first== "DEBUG") setDebug(atoi(ci->second.c_str()) );
00111 if(ci->first== "LASER_DEBUG") setDebug(atoi(ci->second.c_str()) );
00112 if(ci->first== "DUMMY") setDummy(atoi(ci->second.c_str() ));
00113 if(ci->first== "MATACQ_BASE_ADDRESS") setMatacqBaseAddress(atoi(ci->second.c_str() ));
00114 if(ci->first== "MATACQ_NONE") setMatacqNone(atoi(ci->second.c_str() ));
00115 if(ci->first== "MATACQ_MODE") setMatacqMode(ci->second);
00116 if(ci->first== "CHANNEL_MASK") setChannelMask(atoi(ci->second.c_str() ));
00117 if(ci->first== "MAX_SAMPLES_FOR_DAQ") setMaxSamplesForDaq(ci->second );
00118 if(ci->first== "MATACQ_FED_ID") setMatacqFedId(atoi(ci->second.c_str()) );
00119 if(ci->first== "PEDESTAL_FILE") setPedestalFile(ci->second );
00120 if(ci->first== "USE_BUFFER") setUseBuffer(atoi(ci->second.c_str())) ;
00121 if(ci->first== "POSTTRIG") setPostTrig(atoi(ci->second.c_str()) );
00122 if(ci->first== "FP_MODE") setFPMode(atoi(ci->second.c_str() ));
00123 if(ci->first== "HAL_MODULE_FILE") setHalModuleFile(ci->second );
00124 if(ci->first== "HAL_ADDRESS_TABLE_FILE" || ci->first== "HAL_ADDRESST_ABLE_FILE") setHalAddressTableFile(ci->second);
00125 if(ci->first== "HAL_STATIC_TABLE_FILE") setHalStaticTableFile(ci->second );
00126 if(ci->first== "MATACQ_SERIAL_NUMBER") setMatacqSerialNumber(ci->second );
00127 if(ci->first== "PEDESTAL_RUN_EVENT_COUNT") setPedestalRunEventCount(atoi(ci->second.c_str()) );
00128 if(ci->first== "RAW_DATA_MODE") setRawDataMode(atoi(ci->second.c_str()) );
00129 if(ci->first== "ACQUISITION_MODE") setMatacqAcquisitionMode(ci->second );
00130 if(ci->first== "LOCAL_OUTPUT_FILE") setLocalOutputFile(ci->second );
00131 if(ci->first== "EMTC_NONE") setEMTCNone(atoi(ci->second.c_str()) );
00132 if(ci->first== "WTE2_LASER_DELAY") setWTE2LaserDelay(atoi(ci->second.c_str()) );
00133 if(ci->first== "LASER_PHASE") setLaserPhase(atoi(ci->second.c_str()) );
00134 if(ci->first== "EMTC_TTC_IN") setEMTCTTCIn(atoi(ci->second.c_str()) );
00135 if(ci->first== "EMTC_SLOT_ID") setEMTCSlotId(atoi(ci->second.c_str()) );
00136 if(ci->first== "WAVELENGTH") setWaveLength(atoi(ci->second.c_str()) );
00137 if(ci->first== "OPTICAL_SWITCH") setOpticalSwitch(atoi(ci->second.c_str()) );
00138 if(ci->first== "POWER_SETTING") setPower(atoi(ci->second.c_str()) );
00139 if(ci->first== "FILTER") setFilter(atoi(ci->second.c_str()) );
00140 if(ci->first== "LASER_CONTROL_ON") setLaserControlOn(atoi(ci->second.c_str()) );
00141 if(ci->first== "LASER_CONTROL_HOST") setLaserControlHost(ci->second );
00142 if(ci->first== "LASER_CONTROL_PORT") setLaserControlPort(atoi(ci->second.c_str()) );
00143 if(ci->first== "MATACQ_VERNIER_MAX") setMatacqVernierMax(atoi(ci->second.c_str()) );
00144 if(ci->first== "MATACQ_VERNIER_MIN") setMatacqVernierMin(atoi(ci->second.c_str()) );
00145
00146 if(ci->first== "WTE_2_LED_DELAY") setWTE2LedDelay(atoi(ci->second.c_str()) );
00147 if(ci->first== "LED1_ON") setLed1ON(atoi(ci->second.c_str()) );
00148 if(ci->first== "LED2_ON") setLed2ON(atoi(ci->second.c_str()) );
00149 if(ci->first== "LED3_ON") setLed3ON(atoi(ci->second.c_str()) );
00150 if(ci->first== "LED4_ON") setLed4ON(atoi(ci->second.c_str()) );
00151 if(ci->first== "VINJ") setVinj(atoi(ci->second.c_str()) );
00152 if(ci->first== "ORANGE_LED_MON_AMPL") setOrangeLedMonAmpl(atoi(ci->second.c_str()) );
00153 if(ci->first== "BLUE_LED_MON_AMPL") setBlueLedMonAmpl(atoi(ci->second.c_str()) );
00154 if(ci->first== "TRIG_LOG_FILE") setTrigLogFile(ci->second.c_str() );
00155 if(ci->first== "LED_CONTROL_ON") setLedControlON(atoi(ci->second.c_str()) );
00156 if(ci->first== "LED_CONTROL_HOST") setLedControlHost( ci->second.c_str() );
00157 if(ci->first== "LED_CONTROL_PORT") setLedControlPort(atoi(ci->second.c_str()) );
00158 if(ci->first== "IR_LASER_POWER") setIRLaserPower(atoi(ci->second.c_str()) );
00159 if(ci->first== "GREEN_LASER_POWER") setGreenLaserPower(atoi(ci->second.c_str()) );
00160 if(ci->first== "RED_LASER_POWER") setRedLaserPower(atoi(ci->second.c_str()) );
00161 if(ci->first== "BLUE_LASER_LOG_ATTENUATOR") setBlueLaserLogAttenuator(atoi(ci->second.c_str()) );
00162 if(ci->first== "IR_LASER_LOG_ATTENUATOR") setIRLaserLogAttenuator(atoi(ci->second.c_str()) );
00163 if(ci->first== "GREEN_LASER_LOG_ATTENUATOR") setGreenLaserLogAttenuator(atoi(ci->second.c_str()) );
00164 if(ci->first== "RED_LASER_LOG_ATTENUATOR") setRedLaserLogAttenuator(atoi(ci->second.c_str()) );
00165
00166
00167 if(ci->first== "LASER_CONFIG_FILE") {
00168 std::string fname=ci->second ;
00169 setLaserConfigFile(fname );
00170
00171 std::cout << "Going to read Laser file: " << fname << endl;
00172
00173 ifstream inpFile;
00174 inpFile.open(fname.c_str());
00175
00176
00177 int bufsize = 0;
00178 inpFile.seekg( 0,ios::end );
00179 bufsize = inpFile.tellg();
00180 std::cout <<" bufsize ="<<bufsize<< std::endl;
00181
00182 inpFile.seekg( 0,ios::beg );
00183
00184 m_size=bufsize;
00185
00186 inpFile.close();
00187
00188 }
00189
00190
00191 }
00192
00193 }
00194
00195 int ODLaserConfig::fetchNextId() throw(std::runtime_error) {
00196
00197 int result=0;
00198 try {
00199 this->checkConnection();
00200
00201 m_readStmt = m_conn->createStatement();
00202 m_readStmt->setSQL("select ecal_laser_config_sq.NextVal from dual");
00203 ResultSet* rset = m_readStmt->executeQuery();
00204 while (rset->next ()){
00205 result= rset->getInt(1);
00206 }
00207 m_conn->terminateStatement(m_readStmt);
00208 return result;
00209
00210 } catch (SQLException &e) {
00211 throw(std::runtime_error("ODLaserConfig::fetchNextId(): "+e.getMessage()));
00212 }
00213
00214 }
00215
00216
00217 void ODLaserConfig::prepareWrite()
00218 throw(std::runtime_error)
00219 {
00220 this->checkConnection();
00221 int next_id=fetchNextId();
00222
00223
00224 try {
00225 m_writeStmt = m_conn->createStatement();
00226 m_writeStmt->setSQL("INSERT INTO ECAL_Laser_CONFIGURATION ( laser_configuration_id, laser_tag "
00227 ", laser_DEBUG "
00228 ", DUMMY "
00229 ", MATACQ_BASE_ADDRESS "
00230 ", MATACQ_NONE "
00231 ", matacq_mode "
00232 ", channel_Mask "
00233 ", max_Samples_For_Daq "
00234 ", maTACQ_FED_ID "
00235 ", pedestal_File "
00236 ", use_Buffer "
00237 ", postTrig "
00238 ", fp_Mode "
00239 ", hal_Module_File "
00240 ", hal_Address_Table_File "
00241 ", hal_Static_Table_File "
00242 ", matacq_Serial_Number "
00243 ", pedestal_Run_Event_Count "
00244 ", raw_Data_Mode "
00245 ", ACQUISITION_MODE "
00246 ", LOCAL_OUTPUT_FILE "
00247 ", emtc_none "
00248 ", wte2_laser_delay "
00249 ", laser_phase "
00250 ", emtc_ttc_in "
00251 ", emtc_slot_id "
00252 ", WAVELENGTH "
00253 ", POWER_SETTING "
00254 ", OPTICAL_SWITCH "
00255 ", FILTER "
00256 ", LASER_CONTROL_ON "
00257 ", LASER_CONTROL_HOST "
00258 ", LASER_CONTROL_PORT "
00259 ", LASER_TAG2 "
00260 ", MATACQ_VERNIER_MIN "
00261 ", MATACQ_VERNIER_MAX "
00262 " , wte_2_led_delay "
00263 " , led1_on "
00264 " , led2_on "
00265 " , led3_on "
00266 " , led4_on "
00267 " , VINJ "
00268 " , orange_led_mon_ampl"
00269 " , blue_led_mon_ampl "
00270 " , trig_log_file "
00271 " , led_control_on "
00272 " , led_control_host "
00273 " , led_control_port "
00274 " , ir_laser_power "
00275 " , green_laser_power"
00276 " , red_laser_power "
00277 " , blue_laser_log_attenuator "
00278 " , IR_LASER_LOG_ATTENUATOR "
00279 " , GREEN_LASER_LOG_ATTENUATOR"
00280 " , RED_LASER_LOG_ATTENUATOR "
00281 " , LASER_CONFIG_FILE "
00282 " , laser_configuration ) "
00283 " VALUES ( :1, :2, :3, :4, :5, :6, :7, :8, :9, :10, "
00284 ":11, :12, :13, :14, :15, :16, :17, :18, :19, :20, "
00285 ":21, :22, :23, :24, :25, :26, :27, :28, :29, :30, "
00286 ":31, :32, :33, :34, :35, :36, :37, "
00287 " :38, :39, :40, :41, :42, :43, :44, :45, :46, :47, :48, :49, :50, :51, :52, :53, :54, :55, :56, :57, :58 )");
00288 m_writeStmt->setInt(1, next_id);
00289 m_ID=next_id;
00290 } catch (SQLException &e) {
00291 throw(std::runtime_error("ODLaserConfig::prepareWrite(): "+e.getMessage()));
00292 }
00293 }
00294
00295
00296
00297 void ODLaserConfig::writeDB()
00298 throw(std::runtime_error)
00299 {
00300 this->checkConnection();
00301 this->checkPrepare();
00302
00303 try {
00304
00305
00306 m_writeStmt->setString(2, this->getConfigTag());
00307
00308 m_writeStmt->setInt( 3, this->getDebug());
00309 m_writeStmt->setInt( 4, this->getDummy());
00310 m_writeStmt->setInt( 5, this->getMatacqBaseAddress());
00311 m_writeStmt->setInt( 6, this->getMatacqNone());
00312 m_writeStmt->setString(7, this->getMatacqMode());
00313 m_writeStmt->setInt( 8, this->getChannelMask());
00314 m_writeStmt->setString(9, this->getMaxSamplesForDaq());
00315 m_writeStmt->setInt( 10, this->getMatacqFedId());
00316 m_writeStmt->setString(11, this->getPedestalFile());
00317 m_writeStmt->setInt( 12, this->getUseBuffer());
00318 m_writeStmt->setInt( 13, this->getPostTrig());
00319 m_writeStmt->setInt( 14, this->getFPMode());
00320 m_writeStmt->setString(15, this->getHalModuleFile() );
00321 m_writeStmt->setString(16, this->getHalAddressTableFile() );
00322 m_writeStmt->setString(17, this->getHalStaticTableFile() );
00323 m_writeStmt->setString(18, this->getMatacqSerialNumber() );
00324 m_writeStmt->setInt( 19, this->getPedestalRunEventCount() );
00325 m_writeStmt->setInt( 20, this->getRawDataMode());
00326 m_writeStmt->setString(21, this->getMatacqAcquisitionMode());
00327 m_writeStmt->setString(22, this->getLocalOutputFile());
00328 m_writeStmt->setInt( 23, this->getEMTCNone());
00329 m_writeStmt->setInt( 24, this->getWTE2LaserDelay());
00330 m_writeStmt->setInt( 25, this->getLaserPhase());
00331 m_writeStmt->setInt( 26, this->getEMTCTTCIn());
00332 m_writeStmt->setInt( 27, this->getEMTCSlotId());
00333
00334 m_writeStmt->setInt(28, this->getWaveLength());
00335 m_writeStmt->setInt(29, this->getPower());
00336 m_writeStmt->setInt(30, this->getOpticalSwitch());
00337 m_writeStmt->setInt(31, this->getFilter());
00338 m_writeStmt->setInt(32, this->getLaserControlOn());
00339 m_writeStmt->setString(33, this->getLaserControlHost() );
00340 m_writeStmt->setInt( 34, this->getLaserControlPort());
00341 m_writeStmt->setString( 35, this->getLaserTag());
00342
00343 m_writeStmt->setInt( 36, this->getMatacqVernierMin());
00344 m_writeStmt->setInt( 37, this->getMatacqVernierMax());
00345
00346
00347
00348 m_writeStmt->setInt( 38, this->getWTE2LedDelay());
00349 m_writeStmt->setInt( 39, this->getLed1ON());
00350 m_writeStmt->setInt( 40, this->getLed2ON());
00351 m_writeStmt->setInt( 41, this->getLed3ON());
00352 m_writeStmt->setInt( 42, this->getLed4ON());
00353 m_writeStmt->setInt( 43, this->getVinj());
00354 m_writeStmt->setInt( 44, this->getOrangeLedMonAmpl());
00355 m_writeStmt->setInt( 45, this->getBlueLedMonAmpl());
00356 m_writeStmt->setString( 46, this->getTrigLogFile());
00357 m_writeStmt->setInt( 47, this->getLedControlON());
00358 m_writeStmt->setString( 48, this->getLedControlHost());
00359 m_writeStmt->setInt( 49, this->getLedControlPort());
00360 m_writeStmt->setInt( 50, this->getIRLaserPower());
00361 m_writeStmt->setInt( 51, this->getGreenLaserPower());
00362 m_writeStmt->setInt( 52, this->getRedLaserPower());
00363 m_writeStmt->setInt( 53, this->getBlueLaserLogAttenuator());
00364 m_writeStmt->setInt( 54, this->getIRLaserLogAttenuator());
00365 m_writeStmt->setInt( 55, this->getGreenLaserLogAttenuator());
00366 m_writeStmt->setInt( 56, this->getRedLaserLogAttenuator());
00367 m_writeStmt->setString( 57, this->getLaserConfigFile());
00368
00369
00370 oracle::occi::Clob clob(m_conn);
00371 clob.setEmpty();
00372 m_writeStmt->setClob(58,clob);
00373 m_writeStmt->executeUpdate ();
00374 m_conn->terminateStatement(m_writeStmt);
00375
00376
00377 m_writeStmt = m_conn->createStatement();
00378 m_writeStmt->setSQL ("SELECT laser_configuration FROM "+getTable()+" WHERE"
00379 " laser_configuration_id=:1 FOR UPDATE");
00380 std::cout<<"updating the laser clob "<<std::endl;
00381
00382
00383 m_writeStmt->setInt(1, m_ID);
00384 ResultSet* rset = m_writeStmt->executeQuery();
00385 rset->next ();
00386 oracle::occi::Clob clob_to_write = rset->getClob (1);
00387 cout << "Opening the clob in read write mode" << endl;
00388
00389 populateClob (clob_to_write, getLaserConfigFile(), m_size);
00390 int clobLength=clob_to_write.length ();
00391 cout << "Length of the clob is: " << clobLength << endl;
00392 m_writeStmt->executeUpdate();
00393 m_writeStmt->closeResultSet (rset);
00394
00395
00396 } catch (SQLException &e) {
00397 throw(std::runtime_error("ODLaserConfig::writeDB(): "+e.getMessage()));
00398 }
00399
00400 if (!this->fetchID()) {
00401 throw(std::runtime_error("ODLaserConfig::writeDB: Failed to write"));
00402 }
00403
00404 }
00405
00406
00407
00408 void ODLaserConfig::fetchData(ODLaserConfig * result)
00409 throw(std::runtime_error)
00410 {
00411 this->checkConnection();
00412 result->clear();
00413 if(result->getId()==0 && (result->getConfigTag()=="") ){
00414 throw(std::runtime_error("ODLaserConfig::fetchData(): no Id defined for this ODLaserConfig "));
00415 }
00416
00417 try {
00418
00419 m_readStmt->setSQL("SELECT * "
00420 "FROM "+getTable()+
00421 " where ( laser_configuration_id = :1 or laser_tag=:2 )" );
00422 m_readStmt->setInt(1, result->getId());
00423 m_readStmt->setString(2, result->getConfigTag());
00424 ResultSet* rset = m_readStmt->executeQuery();
00425
00426 rset->next();
00427
00428
00429
00430
00431 result->setId(rset->getInt(1));
00432 result->setConfigTag(rset->getString(2));
00433
00434 result->setDebug(rset->getInt( 3 ));
00435 result->setDummy(rset->getInt( 4 ));
00436 result->setMatacqBaseAddress(rset->getInt( 5 ));
00437 result->setMatacqNone(rset->getInt( 6 ));
00438 result->setMatacqMode(rset->getString(7 ));
00439 result->setChannelMask(rset->getInt( 8 ));
00440 result->setMaxSamplesForDaq(rset->getString( 9 ));
00441 result->setMatacqFedId(rset->getInt( 10 ));
00442 result->setPedestalFile(rset->getString( 11 ));
00443 result->setUseBuffer(rset->getInt( 12 ));
00444 result->setPostTrig(rset->getInt( 13 ));
00445 result->setFPMode(rset->getInt( 14 ));
00446 result->setHalModuleFile(rset->getString( 15 ));
00447 result->setHalAddressTableFile(rset->getString( 16 ));
00448 result->setHalStaticTableFile(rset->getString( 17 ));
00449 result->setMatacqSerialNumber(rset->getString( 18 ));
00450 result->setPedestalRunEventCount(rset->getInt( 19 ));
00451 result->setRawDataMode(rset->getInt( 20 ));
00452 result->setMatacqAcquisitionMode(rset->getString( 21 ));
00453 result->setLocalOutputFile(rset->getString( 22 ));
00454 result->setEMTCNone(rset->getInt( 23 ));
00455 result->setWTE2LaserDelay(rset->getInt( 24 ));
00456 result->setLaserPhase(rset->getInt( 25 ));
00457 result->setEMTCTTCIn(rset->getInt( 26 ));
00458 result->setEMTCSlotId(rset->getInt( 27 ));
00459
00460 result->setWaveLength(rset->getInt( 28 ));
00461 result->setPower(rset->getInt( 29 ));
00462 result->setOpticalSwitch(rset->getInt( 30 ));
00463 result->setFilter(rset->getInt( 31 ));
00464 result->setLaserControlOn(rset->getInt( 32 ));
00465 result->setLaserControlHost(rset->getString( 33 ));
00466 result->setLaserControlPort(rset->getInt( 34 ));
00467 result->setLaserTag(rset->getString( 35 ));
00468
00469 result->setMatacqVernierMin(rset->getInt( 36 ));
00470 result->setMatacqVernierMax(rset->getInt( 37 ));
00471
00472 result->setWTE2LedDelay(rset->getInt( 38 ));
00473 result->setLed1ON(rset->getInt( 39 ));
00474 result->setLed2ON(rset->getInt( 40 ));
00475 result->setLed3ON(rset->getInt( 41 ));
00476 result->setLed4ON(rset->getInt( 42 ));
00477 result->setVinj(rset->getInt( 43 ));
00478 result->setOrangeLedMonAmpl(rset->getInt( 44 ));
00479 result->setBlueLedMonAmpl(rset->getInt( 45 ));
00480 result->setTrigLogFile(rset->getString( 46 ));
00481 result->setLedControlON(rset->getInt( 47 ));
00482 result->setLedControlHost(rset->getString( 48 ));
00483 result->setLedControlPort(rset->getInt( 49 ));
00484 result->setIRLaserPower(rset->getInt( 50 ));
00485 result->setGreenLaserPower(rset->getInt( 51 ));
00486 result->setRedLaserPower(rset->getInt( 52 ));
00487 result->setBlueLaserLogAttenuator(rset->getInt( 53 ));
00488 result->setIRLaserLogAttenuator(rset->getInt( 54 ));
00489 result->setGreenLaserLogAttenuator(rset->getInt( 55 ));
00490 result->setRedLaserLogAttenuator(rset->getInt( 56 ));
00491 result->setLaserConfigFile(rset->getString( 57 ));
00492
00493 Clob clob = rset->getClob (58);
00494 cout << "Opening the clob in Read only mode" << endl;
00495 clob.open (OCCI_LOB_READONLY);
00496 int clobLength=clob.length ();
00497 cout << "Length of the clob is: " << clobLength << endl;
00498 m_size=clobLength;
00499 unsigned char* buffer = readClob (clob, m_size);
00500 clob.close ();
00501 cout<< "the clob buffer is:"<<endl;
00502 for (int i = 0; i < clobLength; ++i)
00503 cout << (char) buffer[i];
00504 cout << endl;
00505
00506 result->setLaserClob(buffer);
00507
00508
00509 } catch (SQLException &e) {
00510 throw(std::runtime_error("ODLaserConfig::fetchData(): "+e.getMessage()));
00511 }
00512 }
00513
00514 int ODLaserConfig::fetchID() throw(std::runtime_error)
00515 {
00516
00517 if (m_ID!=0) {
00518 return m_ID;
00519 }
00520
00521 this->checkConnection();
00522
00523 try {
00524 Statement* stmt = m_conn->createStatement();
00525 stmt->setSQL("SELECT laser_configuration_id FROM ecal_laser_configuration "
00526 "WHERE laser_tag=:laser_tag ");
00527 stmt->setString(1, getLaserTag());
00528
00529 ResultSet* rset = stmt->executeQuery();
00530
00531 if (rset->next()) {
00532 m_ID = rset->getInt(1);
00533 } else {
00534 m_ID = 0;
00535 }
00536 m_conn->terminateStatement(stmt);
00537 } catch (SQLException &e) {
00538 throw(std::runtime_error("ODLaserConfig::fetchID: "+e.getMessage()));
00539 }
00540
00541 fetchData(this);
00542
00543 return m_ID;
00544 }