1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182
| // Passage du modèle en mise à jour manuelle (opérée à la fin de la boucle)
enum QSqlTableModel::EditStrategy typeMAJ = editStrategy() ;
setEditStrategy(QSqlTableModel::OnManualSubmit);
int numeroLigne = 0 ;
int nombreDoublons = 0 ;
int nombreLicencesAjoutees = 0 ;
int nombreAssociationsAjoutees = 0 ;
int nombreDoublonsAssociations = 0 ;
int nombreDistrictsAjoutees = 0 ;
int nombreDoublonsDistrict = 0 ;
// Définition du format de l'en-tête
QString enTeteLicences2007 = QString::fromUtf8("NUMLIC\\NUMETAB\\NOM\\PRENOM\\SEXE\\CAT\\SEX\\DATNAIS\\TYPETAB\\TYP\\NOMETAB\\DEPAR\\VILLETAB\\DATE\\HEURE\\DISTRICT\\JO_ID");
QStringList champsLicences2007 = enTeteLicences2007.split("\\") ;
QString enTeteLicences2012 = QString::fromUtf8("NUM_LICENCE\\NUM_ETAB\\NOM\\PRENOM\\SEXE1\\CATEGORIE\\SEXE2\\DATE_NAISSANCE\\TYPE_ETAB1\\TYPE_ETAB2\\NOM_ETAB\\DEPARTEMENT_ETAB\\VILLE_ETAB\\DATE_ADHESION\\HEURE_ADHESION\\DISTRICT\\ID_JO\\TYPE_ASSURANCE") ;
QStringList champsLicences2012 = enTeteLicences2012.split("\\") ;
// Préparation des requêtes
QSqlQuery requete(database()) ;
QSqlQuery requeteAS(database()) ;
QSqlQuery requeteDistrict(database()) ;
requete.prepare("INSERT INTO licences (numerolicence, numeroas, nom, prenom, sexe, categorie, genre, datenaissance, typeetablissement, type, nometablissement, departement, villeetablissement, datelicence, heurelicence, district, jo, typeassurance) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)") ;
requeteAS.prepare("INSERT INTO associations (numeroas, typeetablissement, type, nometablissement, departement, villeetablissement, district) VALUES (?,?,?,?,?,?,?)" );
requeteDistrict.prepare("INSERT INTO districts (numerodistrict) VALUES (?)");
// Initialisation du flux
QTextStream in(file) ;
in.setCodec("ISO 8859-1") ;
// Lecture du fichier ligne par ligne
while (! in.atEnd())
{
QString texte = QString::fromUtf8("Traitement de la ligne ") + QString::number(numeroLigne) ;
emit valeurBarreProgression(numeroLigne) ;
emit texteLabelOperation(texte) ;
// Séparation des champs avec l'anti-slash
QString ligne = in.readLine() ;
QStringList champs = ligne.split('\\') ;
// La ligne contient les en-têtes, on la passe
if ((champs == champsLicences2007) || (champs == champsLicences2012))
{
if ((optionEcraser == true) || (compterLicences() > 0))
{
//m_licences->setHorizontalHeaderLabels(champs) ;
}
numeroLigne++ ;
continue ;
}
// Vérification des doublons
QString numeroLicence = champs.at(COLONNE_FICHIER_LICENCE) ;
if (verifierPresenceLicence(numeroLicence))
{
// Le licencié est déjà dans la base
nombreDoublons++ ;
numeroLigne++ ;
continue ;
}
// Ajout de la ligne au modèle
// Méthode simple qui ajoute tous les champs
/*
while (! champs.isEmpty())
{
QString valeur = champs.takeFirst() ;
requete.addBindValue(valeur) ;
}
*/
// Méthode détaillée qui vérifie les champs
QString licenceNumero,licenceAs,licenceNom,licencePrenom,licenceSexe,licenceCat,licenceGenre,licenceDateNaissance,licenceTypeEtab,licenceTypEtab,licenceNomEtab,licenceDepartement,licenceVilleEtab,licenceDate,licenceHeure,
licenceDistrict,licenceJo, licenceAssurance ;
if (champs.size() == 18)
{
// Méthode plus détaillée permettant de différencier les types de données
licenceNumero = champs.at(COLONNE_FICHIER_LICENCE) ;
licenceAs = champs.at(COLONNE_FICHIER_AS) ;
licenceNom = champs.at(COLONNE_FICHIER_NOM) ;
licencePrenom = champs.at(COLONNE_FICHIER_PRENOM) ;
licenceSexe = champs.at(COLONNE_FICHIER_SEX) ;
licenceCat = champs.at(COLONNE_FICHIER_CATEGORIE) ;
licenceGenre = champs.at(COLONNE_FICHIER_SEXE) ;
licenceDateNaissance = champs.at(COLONNE_FICHIER_NAISSANCE) ;
licenceTypeEtab = champs.at(COLONNE_FICHIER_TYPEETAB) ;
licenceTypEtab = champs.at(COLONNE_FICHIER_TYPE) ;
licenceNomEtab = champs.at(COLONNE_FICHIER_NOMETAB) ;
licenceDepartement = champs.at(COLONNE_FICHIER_DEP) ;
licenceVilleEtab = champs.at(COLONNE_FICHIER_VILLE) ;
licenceDate = champs.at(COLONNE_FICHIER_DATELICENCE) ;
licenceHeure = champs.at(COLONNE_FICHIER_HEURELICENCE) ;
licenceDistrict = champs.at(COLONNE_FICHIER_DISTRICT) ;
licenceJo = champs.at(COLONNE_FICHIER_JO) ;
licenceAssurance = champs.at(COLONNE_FICHIER_ASSURANCE) ;
requete.addBindValue(licenceNumero) ;
requete.addBindValue(licenceAs) ;
requete.addBindValue(licenceNom) ;
requete.addBindValue(licencePrenom) ;
requete.addBindValue(licenceSexe) ;
requete.addBindValue(licenceCat) ;
requete.addBindValue(licenceGenre) ;
requete.addBindValue(licenceDateNaissance) ;
requete.addBindValue(licenceTypeEtab) ;
requete.addBindValue(licenceTypEtab) ;
requete.addBindValue(licenceNomEtab) ;
requete.addBindValue(licenceDepartement) ;
requete.addBindValue(licenceVilleEtab) ;
requete.addBindValue(licenceDate) ;
requete.addBindValue(licenceHeure) ;
requete.addBindValue(licenceDistrict) ;
requete.addBindValue(licenceJo) ;
requete.addBindValue(licenceAssurance);
// Exécution de la requête
if (requete.exec())
nombreLicencesAjoutees++ ;
else
qWarning() << QString::fromUtf8("Licence non ajoutée :") << requete.lastError().text() ;
// Ajout de l'association
if (verifierPresenceAS(licenceAs))
{
nombreDoublonsAssociations++ ;
}
else
{
requeteAS.addBindValue(licenceAs);
requeteAS.addBindValue(licenceTypeEtab) ;
requeteAS.addBindValue(licenceTypEtab) ;
requeteAS.addBindValue(licenceNomEtab) ;
requeteAS.addBindValue(licenceDepartement) ;
requeteAS.addBindValue(licenceVilleEtab) ;
requeteAS.addBindValue(licenceDistrict) ;
if (requeteAS.exec())
nombreAssociationsAjoutees++ ;
else
qWarning() << QString::fromUtf8("AS non ajoutée :") << requeteAS.lastError().text();
}
// Ajout du district
if (verifierPresenceDistrict(licenceDistrict))
{
nombreDoublonsDistrict++ ;
}
else
{
requeteDistrict.addBindValue(licenceDistrict);
if (requeteDistrict.exec())
nombreDistrictsAjoutees++ ;
else
qWarning() << QString::fromUtf8("District non ajoutée :") << requeteAS.lastError().text();
}
}
// Incrémentation du numéro de ligne
numeroLigne++ ;
// Fin de la méthode détaillée
}
// Fermeture du fichier
file->close() ;
// Redéfinition du type de mise à jour fixé antérieurement à la boucle
setEditStrategy(typeMAJ);
QTime temps(0,0,0,0) ;
temps = temps.addMSecs(chrono->elapsed()) ;
qDebug() << "Temps : " << temps.toString("hh'h'mm'min'ss'sec'zzz'ms'") ; |
Partager