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;
}
}
1.7.1