A column strategy used to interpret floats from raw data and allow conversions based on conversions stored in the database. More...
#include <importfilemodel.h>
Public Member Functions | |
SqlDataStrategy (StrategySettings &settings) | |
void | reconfigure () |
Strategy::StrategyType | name () const |
A column strategy used to interpret floats from raw data and allow conversions based on conversions stored in the database.
SqlDataStrategy::SqlDataStrategy | ( | StrategySettings & | settings | ) |
: DataStrategy(settings) {reconfigure();};
Strategy::StrategyType SqlDataStrategy::name | ( | ) | const [virtual] |
Reimplemented from DataStrategy.
{return Strategy::StrategySensorSqlData;}
void SqlDataStrategy::reconfigure | ( | ) | [virtual] |
Reimplemented from DataStrategy.
Referenced by SqlDataStrategy().
{ QVariant f = setting(Strategy::FormatUnitIdFrom); QVariant t = setting(Strategy::FormatTreeId); if (f.isValid() && !f.isNull() && t.isValid() && !t.isNull()){ QString query = "SELECT unit_conv_factor, unit_conv_offset " "FROM vew_unit_conversions AS c " "INNER JOIN tbl_sensors AS s ON (c.unit_id_to = s.unit_id) " "INNER JOIN tbl_trees AS t USING (sens_id) " "WHERE c.unit_id_from = " + f.toString() + " AND " "t.tree_id = " + t.toString(); QSqlQuery q = Database::execStatic(query); if (q.isActive()){ // soms kan het zijn dat hier 0 is, omdat bijvoorbeeld iemand de unit van de sensor veranderd heeft if (q.size() == 0) { qWarning() << "SqlDataStrategy::reconfigure() vindt voor UnitFrom " << f.toString() << " en TreeId " << t.toString() << " geen conversion factor?"; return; } //indien em hier stopt, dan is q.size() groter dan 1, wat niet zou mogen. Q_ASSERT(q.size() == 1); if (q.first()){ QVariant f(q.value(0)); QVariant o(q.value(1)); Q_ASSERT(f.isValid() && !f.isNull() && o.isValid() && !o.isNull()); unitConvertor() = UnitConvertor(f.toDouble(), o.toDouble()); } else qDebug() << "First record failed in SqlDataStrategy: " << q.lastError().text(); } else qDebug() << "No unitConversion found in SqlDataStrategy!" << f << t; } }