void CExportStrategy::x_Process_SearchDb(CRef<CSearchDatabase> & db) { if (db.Empty()) { NCBI_THROW(CBlastException, eInvalidArgument, "Empty reference for CSearchDatabase."); } if (db->GetDatabaseName().empty()) { NCBI_THROW(CBlastException, eInvalidArgument, "Error: No database specified"); } // Set database Name CRef<CBlast4_subject> subject_p(new CBlast4_subject); subject_p->SetDatabase(db->GetDatabaseName()); m_QueueSearchRequest->SetSubject(*subject_p); // Set Entrez Query Limitation string entrez_query_limit = db->GetEntrezQueryLimitation(); if(!entrez_query_limit.empty()) { CRef<CBlast4_parameter> p(new CBlast4_parameter); p->SetName(CBlast4Field::GetName(eBlastOpt_EntrezQuery)); CRef<CBlast4_value> v(new CBlast4_value); v->SetString().assign(entrez_query_limit); p->SetValue(*v); _ASSERT(CBlast4Field::Get(eBlastOpt_EntrezQuery).Match(*p)); m_QueueSearchRequest->SetProgram_options().Set().push_back(p); } // Set the GI List Limitation const CSearchDatabase::TGiList& gi_list_limit = db->GetGiListLimitation(); if (!gi_list_limit.empty()) { x_AddParameterToProgramOptions(CBlast4Field::Get(eBlastOpt_GiList), gi_list_limit); } // Set the negative GI list const CSearchDatabase::TGiList& neg_gi_list = db->GetNegativeGiListLimitation(); if (!neg_gi_list.empty()) { x_AddParameterToProgramOptions(CBlast4Field::Get(eBlastOpt_NegativeGiList), neg_gi_list); } // Set the filtering algorithms int algo_id = db->GetFilteringAlgorithm(); if (algo_id != -1) { x_AddParameterToProgramOptions(CBlast4Field::Get(eBlastOpt_DbFilteringAlgorithmId), algo_id); } }
void CExportStrategy::x_Process_SearchDb(CRef<CSearchDatabase> & db) { if (db.Empty()) { NCBI_THROW(CBlastException, eInvalidArgument, "Empty reference for CSearchDatabase."); } if (db->GetDatabaseName().empty()) { NCBI_THROW(CBlastException, eInvalidArgument, "Error: No database specified"); } // Set database Name CRef<CBlast4_subject> subject_p(new CBlast4_subject); subject_p->SetDatabase(db->GetDatabaseName()); m_QueueSearchRequest->SetSubject(*subject_p); // Set Entrez Query Limitation string entrez_query_limit = db->GetEntrezQueryLimitation(); if(!entrez_query_limit.empty()) { CRef<CBlast4_parameter> p(new CBlast4_parameter); p->SetName(CBlast4Field::GetName(eBlastOpt_EntrezQuery)); CRef<CBlast4_value> v(new CBlast4_value); v->SetString().assign(entrez_query_limit); p->SetValue(*v); _ASSERT(CBlast4Field::Get(eBlastOpt_EntrezQuery).Match(*p)); m_QueueSearchRequest->SetProgram_options().Set().push_back(p); } // Set the GI List Limitation const CSearchDatabase::TGiList& gi_list_limit = db->GetGiListLimitation(); if (!gi_list_limit.empty()) { #ifdef NCBI_STRICT_GI vector<int> int_gi_list; ITERATE ( vector<TGi>, it, gi_list_limit ) { int_gi_list.push_back(GI_TO( int, *it)); }