--- trunk/tntnet/dynamic/critical.ecpp 2007/11/29 17:06:38 104 +++ trunk/tntnet/dynamic/critical.ecpp 2007/12/03 07:56:35 129 @@ -4,19 +4,6 @@ #include #include -#include - - - -class CriticalInstallation -{ -public: - CriticalInstallation() {} - CriticalInstallation(int i, std::string m) : id(i), message(m) {} - int id; - std::string message; -}; - <%config> @@ -29,15 +16,79 @@ <{ +tntdb::Connection conn = tntdb::connect(dburl); -std::vector criticals; -tntdb::Connection conn = tntdb::connect(dburl); +std::string query1; +query1 += "SELECT c.name, i.description, i.id "; +query1 += "FROM installation i INNER JOIN customer c "; +query1 += "ON i.customerid = c.id"; + + +tntdb::Result inst_res = conn.select(query1); + + +std::string query2; +query2 += "SELECT commerror,temperature,flamedetector,conveyorerror,powerfailure "; +query2 += "FROM logtable "; +query2 += "INNER JOIN installation "; +query2 += "ON logtable.installationnr = installation.id "; +query2 += "WHERE installationnr = :v1 "; +query2 += "ORDER BY messagenr DESC "; +query2 += "LIMIT 1"; + +tntdb::Statement st = conn.prepare(query2); + +std::ostream& out = reply.out(); + +bool hasCritical = false; + +for (unsigned i=0; i 0) + { + bool commerror = res[0].getBool(0); + int temperature = res[0].getInt(1); + bool flameDetector = res[0].getBool(2); + bool conveyorError = res[0].getBool(3); + bool powerFailure = res[0].getBool(4); + + if (commerror || temperature > 90 || flameDetector == false || conveyorError || powerFailure) + { + out << "" << inst_res[i].getString(0) << " : " << inst_res[i].getString(1) << "
\n"; + out << "
    "; + + if (temperature > 90) + out << "
  • High temperature
  • \n"; + + if (commerror) + out << "
  • Communication error
  • \n"; + + if (flameDetector == false) + out << "
  • No flames
  • \n"; + + if (conveyorError) + out << "
  • Conveyor error
  • \n"; + + if (powerFailure) + out << "
  • Power failure
  • \n"; + + out << "
\n"; + + hasCritical = true; + } + } +} -tntdb::Result res = conn.select("SELECT id FROM installation WHERE commerror = true"); -for (int i=0; iNo critical installations found\n"; } }>