void UVManager::lireFichier(QXmlStreamReader& xml) { // We'll parse the XML until we reach end of it. while(!xml.atEnd() && !xml.hasError()) { // Read next element. QXmlStreamReader::TokenType token = xml.readNext(); // If token is just StartDocument, we'll go to next. if(token == QXmlStreamReader::StartDocument) continue; // If token is StartElement, we'll see if we can read it. if(token == QXmlStreamReader::StartElement) { // If it's named uvs, we'll go to the next. if(xml.name() == "uvs") continue; // If it's named uv, we'll dig the information from there. if(xml.name() == "uv") { QString code; QString titre; unsigned int nbCredits; Categorie cat; bool automne=false; bool printemps=false; QXmlStreamAttributes attributes = xml.attributes(); /* Let's check that uvs has attribute. */ if(attributes.hasAttribute("automne")) { QString val =attributes.value("automne").toString(); automne=(val == "true" ? true : false); } if(attributes.hasAttribute("printemps")) { QString val =attributes.value("printemps").toString(); printemps=(val == "true" ? true : false); } xml.readNext(); //We're going to loop over the things because the order might change. //We'll continue the loop until we hit an EndElement named uv. while(!(xml.tokenType() == QXmlStreamReader::EndElement && xml.name() == "uv")) { if(xml.tokenType() == QXmlStreamReader::StartElement) { // We've found code. if(xml.name() == "code") { xml.readNext(); code=xml.text().toString(); } // We've found titre. if(xml.name() == "titre") { xml.readNext(); titre=xml.text().toString(); } // We've found credits. if(xml.name() == "credits") { xml.readNext(); nbCredits=xml.text().toString().toUInt(); } // We've found categorie if(xml.name() == "categorie") { xml.readNext(); cat=StringToCategorie(xml.text().toString()); } } // ...and next... xml.readNext(); } ajouterUV(code,titre,nbCredits,cat,automne,printemps); } } } }
void Database::SaverLoader::load() { tUV.clear(); tEtudiant.clear(); tFormation.clear(); tCategorie.clear(); tNote.clear(); tSaison.clear(); tSemestre.clear(); //load Notes string q="SELECT note, description, rang, eliminatoire FROM Note;"; QSqlQuery res=db.query(q); while(res.next()) { Note note(res.value(0).toString(),res.value(1).toString(),res.value(2).toUInt(),res.value(3).toUInt()); } //load Saisons q="SELECT nom, description FROM Saison;"; res=db.query(q); while(res.next()) { Saison Sais(res.value(0).toString(),res.value(1).toString()); } //load Semestres q="SELECT code, saison, year FROM Semestre;"; res=db.query(q); while(res.next()) { Semestre sem(tSaison.getElement(res.value(1).toString()),res.value(2).toInt()); } qDebug()<<"test"; //load Catégories q="SELECT code, description FROM Categorie;"; res=db.query(q); while(res.next()) { Categorie cat(res.value(0).toString(),res.value(1).toString()); } qDebug()<<"test"; //Mise en place des sous Catégories for(std::vector<Categorie>::iterator it_cat=tCategorie.getIterator();it_cat!=tCategorie.end();it_cat++) { q="SELECT codeParent, codeFille FROM SousCategorie where codeParent='"+it_cat->getCode().toStdString()+"';"; res=db.query(q); while(res.next()) { tCategorie.getElement(res.value(0).toString()).addSousCategorie(tCategorie.getElement(res.value(1).toString())); } } qDebug()<<"test"; //load UVS q="SELECT code, titre, automne, printemps FROM UV;"; res=db.query(q); while(res.next()) { map<Categorie, unsigned int> uvcre=map<Categorie, unsigned int>(); string q1="SELECT code, categorie, nbCredits FROM CreditsUV WHERE code='"+res.value(0).toString().toStdString()+"';"; QSqlQuery res1=db.query(q1); while(res1.next()) { uvcre[StringToCategorie(res1.value(1).toString())]=res1.value(2).toInt(); } UV(res.value(0).toString().toStdString(), res.value(1).toString().toStdString(), uvcre, res.value(2).toBool(), res.value(3).toBool()); } //load Formation q="SELECT nom, description FROM Formation;"; res=db.query(q); while(res.next()) { map<UV*, bool> uvs=map<UV*, bool>(); string q1="SELECT formation, uv, obligatoire FROM FormationUV where formation='"+res.value(0).toString().toStdString()+"';"; QSqlQuery res1=db.query(q1); while(res1.next()) { UV& uv=tUV.getElement(res1.value(1).toString().toStdString()); uvs[&uv]=res1.value(2).toBool(); } map<Categorie, unsigned int> Cat=map<Categorie, unsigned int>(); q1="SELECT formation, categorie, nbCredits FROM CreditsFormation where formation='"+res.value(0).toString().toStdString()+"';"; res1=db.query(q1); while(res1.next()) { Cat[StringToCategorie(res1.value(1).toString())]=res1.value(2).toInt(); } std::vector<Condition> conds; q1="SELECT formation, condition FROM conditionsFormation where formation='"+res.value(0).toString().toStdString()+"';"; res1=db.query(q1); while(res1.next()) { conds.push_back(Condition(res1.value(1).toString())); } Formation(res.value(0).toString(), res.value(1).toString(), uvs, Cat,conds); } //load Etudiants q="SELECT ine, login, nom, prenom, dateNaissance from Etudiant;"; res=db.query(q); while(res.next()) { vector<Inscription> insc= vector<Inscription>(); string q1="SELECT login, code, saison, annee, resultat FROM Inscription WHERE login='******';"; QSqlQuery res1=db.query(q1); while(res1.next()) { //Semestre s=Semestre(StringToSaison(res1.value(2).toString()), res1.value(3).toInt()); string code=res1.value(1).toString().toStdString(); const UV& uv=tUV.getElement(code); Inscription inscription=Inscription(uv, tSemestre.getElement(res1.value(2).toString()+res1.value(3).toString()), StringToNote(res1.value(4).toString())); insc.push_back(inscription); } vector<Formation*> form= vector<Formation*>(); q1="SELECT login, formation FROM FormationEtudiant WHERE login='******';"; res1=db.query(q1); while(res1.next()) { Formation& F=tFormation.getElement(res1.value(1).toString().toStdString()); form.push_back(&F); } Dossier dos=Dossier(insc, form); Etudiant etu=Etudiant(dos, res.value(0).toInt(), res.value(2).toString(), res.value(3).toString(), res.value(4).toDate(), res.value(1).toString()); qDebug()<<"fin load"; } }