boost::optional<RubyContinuousVariableRecord> RubyContinuousVariableRecord::factoryFromQuery(const QSqlQuery& query, ProjectDatabase& database) { OptionalRubyContinuousVariableRecord result; try { result = RubyContinuousVariableRecord(query,database); } catch (const std::exception& e) { LOG(Error,"Unable to construct RubyContinuousVariableRecord from query, because '" << e.what() << "'."); } return result; }
ContinuousVariableRecord ContinuousVariableRecord::factoryFromContinuousVariable( const analysis::ContinuousVariable& variable, ProblemRecord& problemRecord, int variableVectorIndex) { if (variable.optionalCast<analysis::RubyContinuousVariable>()) { return RubyContinuousVariableRecord( variable.cast<analysis::RubyContinuousVariable>(), problemRecord, variableVectorIndex); } OS_ASSERT(false); return ContinuousVariableRecord(boost::shared_ptr<detail::ContinuousVariableRecord_Impl>()); }
ContinuousVariableRecord ContinuousVariableRecord::factoryFromContinuousVariable( const analysis::ContinuousVariable& variable, FunctionRecord& functionRecord, int variableVectorIndex, boost::optional<double> functionCoefficient) { if (variable.optionalCast<analysis::RubyContinuousVariable>()) { return RubyContinuousVariableRecord( variable.cast<analysis::RubyContinuousVariable>(), functionRecord, variableVectorIndex, functionCoefficient); } OS_ASSERT(false); return ContinuousVariableRecord(boost::shared_ptr<detail::ContinuousVariableRecord_Impl>()); }
std::vector<RubyContinuousVariableRecord> RubyContinuousVariableRecord::getRubyContinuousVariableRecords(ProjectDatabase& database) { std::vector<RubyContinuousVariableRecord> result; QSqlQuery query(*(database.qSqlDatabase())); query.prepare(toQString("SELECT * FROM " + VariableRecord::databaseTableName() + " WHERE variableRecordType=:variableRecordType AND " + "inputVariableRecordType=:inputVariableRecordType AND " + "continuousVariableRecordType=:continuousVariableRecordType")); query.bindValue(":variableRecordType", VariableRecordType::InputVariableRecord); query.bindValue(":inputVariableRecordType", InputVariableRecordType::ContinuousVariableRecord); query.bindValue(":continuousVariableRecordType", ContinuousVariableRecordType::RubyContinuousVariableRecord); assertExec(query); while (query.next()) { result.push_back(RubyContinuousVariableRecord(query, database)); } return result; }
boost::optional<ContinuousVariableRecord> ContinuousVariableRecord::factoryFromQuery( const QSqlQuery& query, ProjectDatabase& database) { OptionalContinuousVariableRecord result; int continuousVariableRecordType = query.value(VariableRecordColumns::continuousVariableRecordType).toInt(); switch (continuousVariableRecordType){ case ContinuousVariableRecordType::RubyContinuousVariableRecord : result = RubyContinuousVariableRecord(query,database); break; default: LOG(Error, "Unknown continuousVariableRecordType " << continuousVariableRecordType); } return result; }
boost::optional<RubyContinuousVariableRecord> RubyContinuousVariableRecord::getRubyContinuousVariableRecord(int id, ProjectDatabase& database) { boost::optional<RubyContinuousVariableRecord> result; QSqlQuery query(*(database.qSqlDatabase())); query.prepare(toQString("SELECT * FROM " + VariableRecord::databaseTableName() + " WHERE variableRecordType=:variableRecordType AND " + "inputVariableRecordType=:inputVariableRecordType AND " + "continuousVariableRecordType=:continuousVariableRecordType AND " + "id=:id")); query.bindValue(":variableRecordType", VariableRecordType::InputVariableRecord); query.bindValue(":inputVariableRecordType", InputVariableRecordType::ContinuousVariableRecord); query.bindValue(":continuousVariableRecordType", ContinuousVariableRecordType::RubyContinuousVariableRecord); query.bindValue(":id",id); assertExec(query); if (query.first()) { result = RubyContinuousVariableRecord(query, database); } return result; }