00001 #include "OnlineDB/CSCCondDB/interface/CSCMap.h"
00002
00006 cscmap::cscmap () throw (oracle::occi::SQLException)
00007 {
00008 std::string db_user;
00009 std::string db_pass;
00010 env = oracle::occi::Environment::createEnvironment (oracle::occi::Environment::DEFAULT);
00011 char* c_user = ::getenv("CSCMAP_AUTH_USER");
00012 char* c_pass = ::getenv("CSCMAP_AUTH_PASSWORD");
00013 db_user=std::string(c_user);
00014 db_pass=std::string(c_pass);
00015 con = env->createConnection (db_user,db_pass,"devdb");
00016 std::cout << "Connection to mapping DB is done." << std::endl;
00017 }
00021 cscmap::~cscmap () throw (oracle::occi::SQLException)
00022 {
00023 env->terminateConnection (con);
00024 oracle::occi::Environment::terminateEnvironment (env);
00025 }
00026
00027 void cscmap::crate0_chamber (int crate0, int dmb, std::string *chamber_id,
00028 int *chamber_num, int *sector, int *first_strip_index,
00029 int *strips_per_layer, int *chamber_index)
00030 {
00031 oracle::occi::Statement *stmt = con->createStatement();
00032 stmt->setSQL("begin cscmap.chamber0(:1, :2, :3, :4, :5, :6, :7, :8); end;");
00033
00034 stmt->setInt (1, crate0);
00035 stmt->setInt (2, dmb);
00036 stmt->registerOutParam(3, oracle::occi::OCCISTRING, 10);
00037 stmt->registerOutParam (4, oracle::occi::OCCIINT);
00038 stmt->registerOutParam (5, oracle::occi::OCCIINT);
00039 stmt->registerOutParam (6, oracle::occi::OCCIINT);
00040 stmt->registerOutParam (7, oracle::occi::OCCIINT);
00041 stmt->registerOutParam (8, oracle::occi::OCCIINT);
00042
00043 stmt->execute();
00044
00045 *chamber_id = stmt->getString(3);
00046 *chamber_num = stmt->getInt(4);
00047 *chamber_index = stmt->getInt(5);
00048 *first_strip_index = stmt->getInt(6);
00049 *strips_per_layer = stmt->getInt(7);
00050 *sector = stmt->getInt(8);
00051
00052 con->terminateStatement (stmt);
00053 }
00054
00055 void cscmap::crate_chamber (int crate, int dmb, std::string *chamber_id,
00056 int *chamber_num, int *sector, int *first_strip_index,
00057 int *strips_per_layer, int *chamber_index)
00058 {
00059 oracle::occi::Statement *stmt = con->createStatement();
00060 stmt->setSQL("begin cscmap.chamber(:1, :2, :3, :4, :5, :6, :7, :8); end;");
00061
00062 stmt->setInt (1, crate);
00063 stmt->setInt (2, dmb);
00064 stmt->registerOutParam(3, oracle::occi::OCCISTRING, 10);
00065 stmt->registerOutParam (4, oracle::occi::OCCIINT);
00066 stmt->registerOutParam (5, oracle::occi::OCCIINT);
00067 stmt->registerOutParam (6, oracle::occi::OCCIINT);
00068 stmt->registerOutParam (7, oracle::occi::OCCIINT);
00069 stmt->registerOutParam (8, oracle::occi::OCCIINT);
00070
00071 stmt->execute();
00072
00073 *chamber_id = stmt->getString(3);
00074 *chamber_num = stmt->getInt(4);
00075 *chamber_index = stmt->getInt(5);
00076 *first_strip_index = stmt->getInt(6);
00077 *strips_per_layer = stmt->getInt(7);
00078 *sector = stmt->getInt(8);
00079
00080 con->terminateStatement (stmt);
00081 }
00082
00083 void cscmap::chamber_crate (std::string chamber_id, int *crate, int *dmb,
00084 int *sector, int *chamber_num, int *crate0,
00085 int *first_strip_index, int *strips_per_layer,
00086 int *chamber_index)
00087 {
00088 oracle::occi::Statement *stmt = con->createStatement();
00089 stmt->setSQL("begin cscmap.crate0_proc(:1, :2, :3, :4, :5, :6, :7, :8, :9); end;");
00090
00091 stmt->setString (1, chamber_id);
00092 stmt->registerOutParam (2, oracle::occi::OCCIINT);
00093 stmt->registerOutParam (3, oracle::occi::OCCIINT);
00094 stmt->registerOutParam (4, oracle::occi::OCCIINT);
00095 stmt->registerOutParam (5, oracle::occi::OCCIINT);
00096 stmt->registerOutParam (6, oracle::occi::OCCIINT);
00097 stmt->registerOutParam (7, oracle::occi::OCCIINT);
00098 stmt->registerOutParam (8, oracle::occi::OCCIINT);
00099 stmt->registerOutParam (9, oracle::occi::OCCIINT);
00100
00101 stmt->execute();
00102
00103 *crate0 = stmt->getInt(2);
00104 *crate = stmt->getInt(3);
00105 *dmb = stmt->getInt(4);
00106 *sector = stmt->getInt(5);
00107 *chamber_num = stmt->getInt(6);
00108 *chamber_index = stmt->getInt(7);
00109 *first_strip_index = stmt->getInt(8);
00110 *strips_per_layer = stmt->getInt(9);
00111
00112 con->terminateStatement (stmt);
00113 }