U2VariantTrack MysqlVariantDbi::getVariantTrack(const U2DataId& variantTrackId, U2OpStatus& os) { U2VariantTrack res; DBI_TYPE_CHECK(variantTrackId, U2Type::VariantTrack, os, res); MysqlTransaction t(db, os); Q_UNUSED(t); dbi->getMysqlObjectDbi()->getObject(res, variantTrackId, os); CHECK_OP(os, res); static const QString queryString = "SELECT sequence, sequenceName, trackType, fileHeader FROM VariantTrack WHERE object = :object"; U2SqlQuery q(queryString, db, os); q.bindDataId(":object", variantTrackId); if (q.step()) { res.sequence = q.getDataId(0, U2Type::Sequence); res.sequenceName = q.getString(1); int trackType = q.getInt32(2); CHECK_EXT(TrackType_FIRST <= trackType && trackType <= TrackType_LAST, os.setError(U2DbiL10n::tr("Invalid variant track type: %1").arg(trackType)), res); res.trackType = static_cast<VariantTrackType>(trackType); res.fileHeader = q.getString(3); q.ensureDone(); } return res; }
U2VariantTrack MysqlVariantDbi::getVariantTrackofVariant( const U2DataId& variantId, U2OpStatus& os ){ U2VariantTrack res; DBI_TYPE_CHECK(variantId, U2Type::VariantType, os, res); MysqlTransaction t(db, os); Q_UNUSED(t); static const QString queryString = "SELECT track FROM Variant WHERE id = :id"; U2SqlQuery q(queryString, db, os); q.bindDataId(":id", variantId); if (q.step()) { U2DataId trackId = q.getDataId(0, U2Type::VariantTrack); res = getVariantTrack(trackId, os); } return res; }
U2AnnotationTable SQLiteFeatureDbi::getAnnotationTableObject(const U2DataId &tableId, U2OpStatus &os) { U2AnnotationTable result; DBI_TYPE_CHECK(tableId, U2Type::AnnotationTable, os, result); SQLiteReadQuery q("SELECT rootId, name FROM AnnotationTable, Object WHERE object = ?1 AND id = ?1", db, os); q.bindDataId(1, tableId); if (q.step()) { result.rootFeature = q.getDataId(0, U2Type::Feature); result.visualName = q.getString(1); q.ensureDone(); } else if (!os.hasError()) { os.setError(U2DbiL10n::tr("Annotation table object not found.")); } result.id = tableId; return result; }
U2Sequence SQLiteSequenceDbi::getSequenceObject(const U2DataId& sequenceId, U2OpStatus& os) { U2Sequence res; DBI_TYPE_CHECK(sequenceId, U2Type::Sequence, os, res); dbi->getSQLiteObjectDbi()->getObject(res, sequenceId, os); CHECK_OP(os, res); static const QString queryString("SELECT Sequence.length, Sequence.alphabet, Sequence.circular FROM Sequence WHERE Sequence.object = ?1"); SQLiteReadQuery q(queryString, db, os); q.bindDataId(1, sequenceId); if (q.step()) { res.length = q.getInt64(0); res.alphabet = q.getString(1); res.circular = q.getBool(2); q.ensureDone(); } else if (!os.hasError()) { os.setError(U2DbiL10n::tr("Sequence object not found.")); } return res; }