bool validate(const IntegralBusPort *port, ProblemList &problemList) const { QVariant busMap = port->getParameter(Workflow::IntegralBusPort::BUS_MAP_ATTR_ID)->getAttributePureValue(); bool data = isBinded(busMap.value<QStrStrMap>(), READS_URL_SLOT_ID); if (!data){ QString dataName = slotName(port, READS_URL_SLOT_ID); problemList.append(Problem(GenomeAlignerWorker::tr("The slot must be not empty: '%1'").arg(dataName))); return false; } QString slot1Val = busMap.value<QStrStrMap>().value(READS_URL_SLOT_ID); QString slot2Val = busMap.value<QStrStrMap>().value(READS_PAIRED_URL_SLOT_ID); U2OpStatusImpl os; const QList<IntegralBusSlot>& slots1 = IntegralBusSlot::listFromString(slot1Val, os); const QList<IntegralBusSlot>& slots2 = IntegralBusSlot::listFromString(slot2Val, os); bool hasCommonElements = false; foreach(const IntegralBusSlot& ibsl1, slots1){ if (hasCommonElements){ break; } foreach(const IntegralBusSlot& ibsl2, slots2){ if (ibsl1 == ibsl2){ hasCommonElements = true; break; } } } if (hasCommonElements){ problemList.append(Problem(GenomeAlignerWorker::tr("Bowtie2 cannot recognize read pairs from the same file. Please, perform demultiplexing first."))); return false; } return true; }
GeekBind::BindStatus GeekBind::isBinded(string &key) { KeyBind k; k.set(key.c_str()); return isBinded(k); }