|
|
@@ -104,33 +104,47 @@ void class_recherche::parsefetch() |
|
|
|
parcours = parcours->FirstChildElement("Journal"); // Journal |
|
|
|
parcours = parcours->FirstChildElement("JournalIssue"); // JournalIssue |
|
|
|
parcours = parcours->FirstChildElement("PubDate"); // PubDate |
|
|
|
date << parcours->FirstChildElement("Month")->GetText(); // *Month |
|
|
|
date << " " << parcours->FirstChildElement("Year")->GetText(); // *Year |
|
|
|
if (parcours->FirstChildElement("Day")) |
|
|
|
date << parcours->FirstChildElement("Day")->GetText(); // *Day |
|
|
|
if (parcours->FirstChildElement("Month")) |
|
|
|
date << parcours->FirstChildElement("Month")->GetText(); // *Month |
|
|
|
if (parcours->FirstChildElement("Year")) |
|
|
|
date << parcours->FirstChildElement("Year")->GetText(); // *Year |
|
|
|
parcours = parcours->Parent()->ToElement(); // JournalIssue |
|
|
|
revue << parcours->NextSiblingElement("ISOAbbreviation")->GetText(); // *ISOAbbreviation |
|
|
|
parcours = parcours->Parent()->ToElement(); // Journal |
|
|
|
titre << parcours->NextSiblingElement("ArticleTitle")->GetText(); // *ArticleTitle |
|
|
|
parcours = parcours->NextSiblingElement("Abstract"); // Abstract |
|
|
|
XMLElement* parcoursabstract = parcours->FirstChildElement("AbstractText"); // AbstractText |
|
|
|
do |
|
|
|
{ |
|
|
|
abstract << parcoursabstract->FirstAttribute()->Value() << " :\n"; |
|
|
|
abstract << parcoursabstract->GetText() << "\n"; |
|
|
|
parcoursabstract=parcoursabstract->NextSiblingElement("AbstractText"); |
|
|
|
}while(parcoursabstract); |
|
|
|
if (parcours->NextSiblingElement("Abstract")) |
|
|
|
{ |
|
|
|
parcours = parcours->NextSiblingElement("Abstract"); // Abstract |
|
|
|
XMLElement* parcoursabstract = parcours->FirstChildElement("AbstractText"); // AbstractText |
|
|
|
do |
|
|
|
{ |
|
|
|
if (parcoursabstract->FirstAttribute()) |
|
|
|
abstract << parcoursabstract->FirstAttribute()->Value() << " :\n"; |
|
|
|
abstract << parcoursabstract->GetText() << "\n"; |
|
|
|
parcoursabstract=parcoursabstract->NextSiblingElement("AbstractText"); |
|
|
|
}while(parcoursabstract); |
|
|
|
} |
|
|
|
else |
|
|
|
abstract = ""; |
|
|
|
parcours = parcours->NextSiblingElement("AuthorList"); // AuthorList |
|
|
|
XMLElement* parcoursauteurs = parcours->FirstChildElement("Author"); // Author |
|
|
|
do |
|
|
|
{ |
|
|
|
auteurs << parcoursauteurs->FirstChildElement("LastName")->GetText(); |
|
|
|
auteurs << " " << parcoursauteurs->FirstChildElement("ForeName")->GetText() << ","; |
|
|
|
if (parcoursauteurs->FirstChildElement("ForeName")) |
|
|
|
auteurs << " " << parcoursauteurs->FirstChildElement("ForeName")->GetText() << ","; |
|
|
|
else if (parcoursauteurs->FirstChildElement("Initials")) |
|
|
|
auteurs << " " << parcoursauteurs->FirstChildElement("Initials")->GetText() << ","; |
|
|
|
else |
|
|
|
auteurs << ","; |
|
|
|
parcoursauteurs=parcoursauteurs->NextSiblingElement("Author"); |
|
|
|
}while(parcoursauteurs); |
|
|
|
auteurs = auteurs.BeforeLast(','); |
|
|
|
parcours = parcours->Parent()->Parent()->Parent()->ToElement()->NextSiblingElement("PubmedArticle"); |
|
|
|
|
|
|
|
bdd->addpubli(titre, auteurs, abstract, revue, lien, date); |
|
|
|
wxMessageBox(titre + "\n" + abstract); |
|
|
|
}while(parcours); |
|
|
|
|
|
|
|
delete(doc); |
|
|
@@ -140,9 +154,10 @@ void class_recherche::parsefetch() |
|
|
|
|
|
|
|
void class_recherche::efetch() |
|
|
|
{ |
|
|
|
bool accessdenied = false; |
|
|
|
bool accessdenied; |
|
|
|
do |
|
|
|
{ |
|
|
|
accessdenied = false; |
|
|
|
wxString requete = "http://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?db=pubmed&retmode=xml&id="; |
|
|
|
for (unsigned int i=0; i < idresult.GetCount(); i++) |
|
|
|
requete << idresult[i] << ","; |
|
|
@@ -163,17 +178,15 @@ void class_recherche::efetch() |
|
|
|
|
|
|
|
if (curlhandle) |
|
|
|
curl_easy_perform(curlhandle); |
|
|
|
|
|
|
|
//wxMessageBox(curldata.content); |
|
|
|
|
|
|
|
if (wxString(curldata.content).Left(6) == "<HTML>") |
|
|
|
{ |
|
|
|
accessdenied = true; |
|
|
|
time_t timer = time(NULL); |
|
|
|
wxProgressDialog progress_dialog("Erreur proxy", _T("En attente du proxy"), 300, NULL, wxPD_AUTO_HIDE | wxPD_APP_MODAL | wxPD_SMOOTH | wxPD_ELAPSED_TIME | wxPD_REMAINING_TIME); |
|
|
|
while (time(NULL) < (timer + 300)) |
|
|
|
wxProgressDialog progress_dialog("Erreur proxy", _T("En attente du proxy"), 120, NULL, wxPD_AUTO_HIDE | wxPD_APP_MODAL | wxPD_SMOOTH | wxPD_ELAPSED_TIME | wxPD_REMAINING_TIME); |
|
|
|
while (time(NULL) < (timer + 120)) |
|
|
|
progress_dialog.Update(time(NULL) - timer); |
|
|
|
progress_dialog.Update(300); |
|
|
|
progress_dialog.Update(120); |
|
|
|
if (curldata.content) |
|
|
|
free (curldata.content); |
|
|
|
} |
|
|
@@ -211,9 +224,10 @@ void class_recherche::parsesearch() |
|
|
|
|
|
|
|
void class_recherche::esearch(wxString requete) |
|
|
|
{ |
|
|
|
bool accessdenied = false; |
|
|
|
bool accessdenied; |
|
|
|
do |
|
|
|
{ |
|
|
|
accessdenied = false; |
|
|
|
curl_easy_setopt (curlhandle, CURLOPT_URL, _C(requete)); |
|
|
|
|
|
|
|
if (configuration->IsUseproxy()) |
|
|
@@ -230,16 +244,14 @@ void class_recherche::esearch(wxString requete) |
|
|
|
if (curlhandle) |
|
|
|
curl_easy_perform(curlhandle); |
|
|
|
|
|
|
|
//wxMessageBox(curldata.content); |
|
|
|
|
|
|
|
if (wxString(curldata.content).Left(6) == "<HTML>") |
|
|
|
{ |
|
|
|
accessdenied = true; |
|
|
|
time_t timer = time(NULL); |
|
|
|
wxProgressDialog progress_dialog("Erreur proxy", _T("En attente du proxy"), 300, NULL, wxPD_AUTO_HIDE | wxPD_APP_MODAL | wxPD_SMOOTH | wxPD_ELAPSED_TIME | wxPD_REMAINING_TIME); |
|
|
|
while (time(NULL) < (timer + 300)) |
|
|
|
wxProgressDialog progress_dialog("Erreur proxy", _T("En attente du proxy"), 120, NULL, wxPD_AUTO_HIDE | wxPD_APP_MODAL | wxPD_SMOOTH | wxPD_ELAPSED_TIME | wxPD_REMAINING_TIME); |
|
|
|
while (time(NULL) < (timer + 120)) |
|
|
|
progress_dialog.Update(time(NULL) - timer); |
|
|
|
progress_dialog.Update(300); |
|
|
|
progress_dialog.Update(120); |
|
|
|
if (curldata.content) |
|
|
|
free (curldata.content); |
|
|
|
} |
|
|
|