Esempio n. 1
0
    void PgFileRepository::getStoreEntity(OcfaHandle & h, StoreEntity &se) {
      
      ocfaLog(LOG_DEBUG, ">> entering PgFileRepository::getStoreEntity");
      if (h == "") throw OcfaException("getStoreEntity called with empty handle",this);
      string query = "select repname from " + se.tableName() + " where id = " + string(h.c_str()) ;
      se.setHandle(h);
      getLogStream(LOG_DEBUG) << "Executing " << query << endl;
      PGresult *pgres = PQexec(d_connection,query.c_str());
      if (PQresultStatus(pgres) == PGRES_TUPLES_OK) {
	if (PQntuples(pgres) > 0) {

	  Filename repname(PQgetvalue(pgres, 0, 0));
	  se.setStoreName(repname);
	}
	else {
	  ocfaLog(LOG_ERR, "Error: OcfaHandle for StoreEntity not found in DB");
	  throw OcfaException("Error: OcfaHandle "+ h + " not found in DB", this);
	}
      }
      else {
	ocfaLog(LOG_ERR, "Could not get repname from db: " + ErrorMessage() +  " query=" + query);
	throw OcfaException("Cannot get RepName from db " + ErrorMessage() 
			    + " query=" + query, this);
      }
      ocfaLog(LOG_DEBUG, "exiting getStoreEntity");
      PQclear(pgres);
    }
    static VARIABLE_IS_NOT_USED void metrics_report(metrics &m) {
        std::string reporters = get_option_string("metrics.reporter", "console");
        char * creps = (char*)reporters.c_str();
        const char * delims = ",";
        char * t = strtok(creps, delims);

        while(t != NULL) {            
            std::string repname(t);
            if (repname == "basic" || repname == "console") {
                basic_reporter rep;
                m.report(rep);
            } else if (repname == "file") {
                file_reporter rep(get_option_string("metrics.reporter.filename", "metrics.txt"));
                m.report(rep);
            } else if (repname == "html") {
                html_reporter rep(get_option_string("metrics.reporter.htmlfile", "metrics.html"));
                m.report(rep);
            } else {
                logstream(LOG_WARNING) << "Could not find metrics reporter with name [" << repname << "], ignoring." << std::endl;
            }
            t = strtok(NULL, delims);
        }
    }