QList<Task*> AceImporterTask::onSubTaskFinished(Task* subTask) { QList<Task*> res; CHECK_OP(stateInfo, res); if (isSqliteDbTransit && convertTask == subTask) { initCloneObjectTasks(); res << cloneTasks; } else if (isSqliteDbTransit && cloneTasks.contains(subTask)) { cloneTasks.removeOne(subTask); if (cloneTasks.isEmpty()) { initLoadDocumentTask(); CHECK(NULL != loadDocTask, res); res << loadDocTask; } } else if (!isSqliteDbTransit && convertTask == subTask) { initLoadDocumentTask(); CHECK(NULL != loadDocTask, res); res << loadDocTask; } if (loadDocTask == subTask) { resultDocument = loadDocTask->takeDocument(); } return res; }
QList<Task*> BAMImporterTask::onSubTaskFinished(Task* subTask) { QList<Task*> res; if (subTask->hasError()) { propagateSubtaskError(); return res; } if (loadInfoTask == subTask) { initPrepareToImportTask(); CHECK(NULL != prepareToImportTask, res); res << prepareToImportTask; } else if (prepareToImportTask == subTask && prepareToImportTask->isNewURL()) { initLoadBamInfoTask(); CHECK(NULL != loadBamInfoTask, res); res << loadBamInfoTask; } else if (loadBamInfoTask == subTask || prepareToImportTask == subTask) { initConvertToSqliteTask(); CHECK(NULL != convertTask, res); res << convertTask; } else if (isSqliteDbTransit && convertTask == subTask) { initCloneObjectTasks(); CHECK(!cloneTasks.isEmpty(), res); res << cloneTasks; } else if (!isSqliteDbTransit && convertTask == subTask) { initLoadDocumentTask(); CHECK(NULL != loadDocTask, res); res << loadDocTask; } else if ((isSqliteDbTransit && cloneTasks.contains(subTask))) { cloneTasks.removeOne(subTask); CloneObjectTask *cloneTask = qobject_cast<CloneObjectTask *>(subTask); SAFE_POINT_EXT(NULL != cloneTask, setError("Unexpected task type: CloneObjectTask expected"), res); delete cloneTask->getSourceObject(); if (cloneTasks.isEmpty()) { initLoadDocumentTask(); CHECK(NULL != loadDocTask, res); res << loadDocTask; } } else if (subTask == loadDocTask) { resultDocument = loadDocTask->takeDocument(); } return res; }