本文整理汇总了C++中U2SequenceObject::getEntityRef方法的典型用法代码示例。如果您正苦于以下问题:C++ U2SequenceObject::getEntityRef方法的具体用法?C++ U2SequenceObject::getEntityRef怎么用?C++ U2SequenceObject::getEntityRef使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类U2SequenceObject
的用法示例。
在下文中一共展示了U2SequenceObject::getEntityRef方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: tryAddObject
QString AssemblyBrowser::tryAddObject(GObject * obj) {
Document * objDoc = obj->getDocument();
SAFE_POINT(NULL != objDoc, "", tr("Internal error: only object with document can be added to browser"));
if (GObjectTypes::SEQUENCE == obj->getGObjectType()) {
U2SequenceObject * seqObj = qobject_cast<U2SequenceObject*>(obj);
CHECK(NULL != seqObj, tr("Internal error: broken sequence object"));
SAFE_POINT(NULL != objDoc->getDocumentFormat(), "", tr("Internal error: empty document format"));
U2OpStatus2Log os;
qint64 seqLen = seqObj->getSequenceLength();
QStringList errs;
qint64 modelLen = model->getModelLength(os);
if (seqLen != modelLen) {
errs << tr("The lengths of the sequence and assembly are different.");
}
if (seqObj->getGObjectName() != gobject->getGObjectName()) {
errs << tr("The sequence and assembly names are different.");
}
// commented: waiting for fix
//QByteArray refMd5 = model->getReferenceMd5();
//if(!refMd5.isEmpty()) {
// //QByteArray data = QString(seqObj->getSequence()).remove("-").toUpper().toUtf8();
// QByteArray data = QString(seqObj->getSequence()).toUpper().toUtf8();
// QByteArray seqObjMd5 = QCryptographicHash::hash(data, QCryptographicHash::Md5).toHex();
// if(seqObjMd5 != refMd5) {
// errs << tr("- Reference MD5 not match with MD5 written in assembly");
// }
//}
bool setRef = !isAssemblyObjectLocked(true) && !model->isLoadingReference();
setRef &= model->checkPermissions(QFile::WriteUser, setRef);
if(!errs.isEmpty() && setRef) {
const NotificationStack *notificationStack = AppContext::getMainWindow()->getNotificationStack();
const QString message = tr("It seems that sequence \"%1\", set as reference to assembly \"%2\", does not match it.").arg(seqObj->getGObjectName()).arg(gobject->getGObjectName())
+ "\n- " + errs.join("\n- ");
notificationStack->addNotification(message, Warning_Not);
}
if(setRef) {
model->setReference(seqObj);
U2Assembly assembly = model->getAssembly();
U2DataId refId;
QString folder;
const QStringList folders = model->getDbiConnection().dbi->getObjectDbi()->getObjectFolders(assembly.id, os);
if (folders.isEmpty() || os.isCoR()) {
folder = U2ObjectDbi::ROOT_FOLDER;
} else {
folder = folders.first();
}
if (seqObj->getEntityRef().dbiRef == model->getDbiConnection().dbi->getDbiRef()) {
refId = seqObj->getEntityRef().entityId;
} else {
U2CrossDatabaseReferenceDbi * crossDbi = model->getDbiConnection().dbi->getCrossDatabaseReferenceDbi();
U2CrossDatabaseReference crossDbRef;
// Cannot simply use seqObj->getSequenceRef(), since it points to a temporary dbi
// TODO: make similar method seqObj->getPersistentSequenctRef()
crossDbRef.dataRef.dbiRef.dbiId = objDoc->getURLString();
crossDbRef.dataRef.dbiRef.dbiFactoryId = "document";
crossDbRef.dataRef.entityId = seqObj->getGObjectName().toUtf8();
crossDbRef.visualName = "cross_database_reference: " + seqObj->getGObjectName();
crossDbRef.dataRef.version = 1;
crossDbi->createCrossReference(crossDbRef, folder, os);
LOG_OP(os);
refId = crossDbRef.id;
addObjectToView(obj);
}
model->associateWithReference(refId);
}
} else if (GObjectTypes::VARIANT_TRACK == obj->getGObjectType()) {
VariantTrackObject *trackObj = qobject_cast<VariantTrackObject*>(obj);
CHECK(NULL != trackObj, tr("Internal error: broken variant track object"));
model->addTrackObject(trackObj);
addObjectToView(obj);
connect(model.data(), SIGNAL(si_trackRemoved(VariantTrackObject *)), SLOT(sl_trackRemoved(VariantTrackObject *)));
} else {