//Constructeur /// <summary> /// Lancement de l'importation /// </summary> /// <param name="Modale"> fenetre d'importation </param> public ImportButtonController(ModaleImporter Modale) { this.Modale = Modale; Modale.GetFormMain().GetLabelAjouter().Text = ""; //si on a pas choisi un mode d'importation if (Modale.GetButtonsValue().Equals("") || Modale.GetPathToImport().Equals("") || Modale.GetPathToSave().Equals("")) { Modale.GetLabelImport().Text = "Veuillez choisir un mode d'intégration pour la base de données, un fichier .csv à importer et un fichier .sqlite dans lequel le fichier .csv sera importé."; } else { //import en mode ecrasement if (Modale.GetButtonsValue().Equals("Ecrasement")) { Modale.GetLabelImport().Text = "Import en mode Ecrasement en cours ..."; ImporterEcrasement ImportEcrasement = new ImporterEcrasement(Modale); } //import en mode ajout else if (Modale.GetButtonsValue().Equals("Ajout")) { Modale.GetLabelImport().Text = "Import en mode Ajout en cours ..."; ImporterAjout ImportAjout = new ImporterAjout(Modale); } //mise à jour de la treeView InitializeTreeView initializeTree = new InitializeTreeView(Modale.GetFormMain().GetTreeView()); initializeTree.ConstructTree(Modale.GetPathToSave()); //stockage du chemin de la bdd Modale.GetFormMain().SetPathToSave(Modale.GetPathToSave()); //mise à jour du statusStrip ToolStatusStripController FamilleStripControl = new ToolStatusStripController(Modale.GetFormMain().GetToolStatusStrip("Familles")); ToolStatusStripController ArticleStripControl = new ToolStatusStripController(Modale.GetFormMain().GetToolStatusStrip("Article")); ToolStatusStripController SousFamilleStripControl = new ToolStatusStripController(Modale.GetFormMain().GetToolStatusStrip("SousFamilles")); ToolStatusStripController MarqueStripControl = new ToolStatusStripController(Modale.GetFormMain().GetToolStatusStrip("Marques")); ArticlesDAO ArticlesDAO = new ArticlesDAO(Modale.GetPathToSave()); MarquesDAO MarquesDAO = new MarquesDAO(Modale.GetPathToSave()); FamillesDAO FamillesDAO = new FamillesDAO(Modale.GetPathToSave()); SousFamillesDAO SousFamillesDAO = new SousFamillesDAO(Modale.GetPathToSave()); ArticleStripControl.ChangeNumber(ArticlesDAO.CountAllArticles()); FamilleStripControl.ChangeNumber(FamillesDAO.CountAllFamilles()); SousFamilleStripControl.ChangeNumber(SousFamillesDAO.CountAllSousFamilles()); MarqueStripControl.ChangeNumber(MarquesDAO.CountAllMarques()); } }
//Constructeur /// <summary> /// Constructeur permettant de faire l'importation /// </summary> /// <param name="Modale"> fenêtre d'import </param> public ImporterEcrasement(ModaleImporter Modale) { this.Modale = Modale; //création de la connexion avec la base de données //suppression des tables de la base locale SQLiteConnection M_dbConnection = new SQLiteConnection("Data Source=" + Modale.GetPathToSave()); M_dbConnection.Open(); String Sql = "DELETE FROM 'Marques'"; Console.WriteLine(Sql); SQLiteCommand Command = new SQLiteCommand(Sql, M_dbConnection); Command.ExecuteNonQuery(); Sql = "DELETE FROM 'Familles'"; Console.WriteLine(Sql); Command = new SQLiteCommand(Sql, M_dbConnection); Command.ExecuteNonQuery(); Sql = "DELETE FROM 'SousFamilles'"; Console.WriteLine(Sql); Command = new SQLiteCommand(Sql, M_dbConnection); Command.ExecuteNonQuery(); Sql = "DELETE FROM 'Articles'"; Console.WriteLine(Sql); Command = new SQLiteCommand(Sql, M_dbConnection); Command.ExecuteNonQuery(); Sql = "delete from sqlite_sequence"; Console.WriteLine(Sql); Command = new SQLiteCommand(Sql, M_dbConnection); Command.ExecuteNonQuery(); M_dbConnection.Close(); ImporterBDD(); }
/// <summary> /// Import de la base de données /// </summary> public void ImporterBDD() { Modale.SetProgressBarValue(10); MarquesDAO MarquesD = new MarquesDAO(Modale.GetPathToSave()); FamillesDAO FamillesD = new FamillesDAO(Modale.GetPathToSave()); SousFamillesDAO SousFamillesD = new SousFamillesDAO(Modale.GetPathToSave()); ArticlesDAO ArticlesD = new ArticlesDAO(Modale.GetPathToSave()); List <string> AllMarques = new List <string>(); List <string> AllFamilles = new List <string>(); List <string> AllSousFamilles = new List <string>(); List <string> AllSousFamillesFamilles = new List <string>(); //Pour récupérer la famille des sous familles //Pour les articles, on est obligé de tout stocker dans une liste à part car on doit récupérer les Ref des autres objets (donc ils doivent être créés avant) List <string> AllArticlesRefArticle = new List <string>(); List <string> AllArticlesDescription = new List <string>(); List <string> AllArticlesSousFamilleNom = new List <string>(); List <string> AllArticlesMarqueNom = new List <string>(); List <float> AllArticlesPrixHT = new List <float>(); Modale.SetProgressBarValue(25); using (var reader = new StreamReader(Modale.GetPathToImport(), Encoding.Default)) { reader.ReadLine(); //On passe la première ligne (les headers du fichier) //On stocke tous dans des listes en parcourant notre fichier, on créera après (on ne stocke qu'une occurence de chaque item) while (!reader.EndOfStream) { var line = reader.ReadLine(); var values = line.Split(';'); if (!AllMarques.Exists(e => e.EndsWith(values[2]))) { AllMarques.Add(values[2]); } if (!AllFamilles.Exists(e => e.EndsWith(values[3]))) { AllFamilles.Add(values[3]); } if (!AllSousFamilles.Exists(e => e.EndsWith(values[4]))) { AllSousFamilles.Add(values[4]); AllSousFamillesFamilles.Add(values[3]); } AllArticlesRefArticle.Add(values[1]); AllArticlesDescription.Add(values[0]); AllArticlesMarqueNom.Add(values[2]); AllArticlesSousFamilleNom.Add(values[4]); AllArticlesPrixHT.Add(float.Parse(values[5])); } } //Maintenant on crée tout en base Modale.SetProgressBarValue(50); for (int Index = 0; Index < AllMarques.Count; Index++) { Marques Marque = new Marques(AllMarques[Index]); MarquesD.AjouterMarque(Marque); } Modale.SetProgressBarValue(60); for (int Index = 0; Index < AllFamilles.Count; Index++) { Familles Famille = new Familles(AllFamilles[Index]); FamillesD.AjouterFamille(Famille); } Modale.SetProgressBarValue(70); for (int Index = 0; Index < AllSousFamilles.Count; Index++) { SousFamilles SousFamille = new SousFamilles(FamillesD.GetRefByName(AllSousFamillesFamilles[Index]), AllSousFamilles[Index]); SousFamillesD.AjouterSousFamille(SousFamille); } Modale.SetProgressBarValue(80); for (int Index = 0; Index < AllArticlesRefArticle.Count; Index++) { int RefSousFamille = SousFamillesD.GetRefByName(AllArticlesSousFamilleNom[Index]); int RefMarque = MarquesD.GetRefByName(AllArticlesMarqueNom[Index]); Articles Article = new Articles(AllArticlesRefArticle[Index], AllArticlesDescription[Index], RefSousFamille, RefMarque, AllArticlesPrixHT[Index], 0); ArticlesD.AjouterArticle(Article); } Modale.SetProgressBarValue(100); Modale.GetLabelImport().Text = "Importation en mode Ecrasement terminé !"; string message = ArticlesD.GetNbArticle() + " articles ont été ajoutés à la base de données."; const string caption = "Intégration en mode Ecrasement terminé !"; var result = MessageBox.Show(message, caption, MessageBoxButtons.OK, MessageBoxIcon.Information); }
/// <summary> /// Importer la base de données SQLite en mode ajout /// </summary> public void ImporterBDD() { int NombreArticleAjout = 0; int NombreArticleUpdated = 0; MarquesDAO MarquesD = new MarquesDAO(Modale.GetPathToSave()); FamillesDAO FamillesD = new FamillesDAO(Modale.GetPathToSave()); SousFamillesDAO SousFamillesD = new SousFamillesDAO(Modale.GetPathToSave()); ArticlesDAO ArticlesD = new ArticlesDAO(Modale.GetPathToSave()); List <string> AllMarques = new List <string>(); List <string> AllFamilles = new List <string>(); List <string> AllSousFamilles = new List <string>(); List <string> AllSousFamillesFamilles = new List <string>(); //Pour récupérer la famille des sous familles //Pour les articles, on est obligé de tout stocker dans une liste à part car on doit récupérer les Ref des autres objets (donc ils doivent être créés avant) List <string> AllArticlesRefArticle = new List <string>(); List <string> AllArticlesDescription = new List <string>(); List <string> AllArticlesSousFamilleNom = new List <string>(); List <string> AllArticlesMarqueNom = new List <string>(); List <float> AllArticlesPrixHT = new List <float>(); Modale.SetProgressBarValue(25); using (var reader = new StreamReader(Modale.GetPathToImport(), Encoding.Default)) { reader.ReadLine(); //On passe la première ligne (les headers du fichier) //On stocke tous dans des listes en parcourant notre fichier, on créera après (on ne stocke qu'une occurence de chaque item) while (!reader.EndOfStream) { var line = reader.ReadLine(); var values = line.Split(';'); if (!AllMarques.Exists(e => e.EndsWith(values[2]))) { AllMarques.Add(values[2]); } if (!AllFamilles.Exists(e => e.EndsWith(values[3]))) { AllFamilles.Add(values[3]); } if (!AllSousFamilles.Exists(e => e.EndsWith(values[4]))) { AllSousFamilles.Add(values[4]); AllSousFamillesFamilles.Add(values[3]); } AllArticlesRefArticle.Add(values[1]); AllArticlesDescription.Add(values[0]); AllArticlesMarqueNom.Add(values[2]); AllArticlesSousFamilleNom.Add(values[4]); AllArticlesPrixHT.Add(float.Parse(values[5])); } } //Maintenant on crée tout en base Modale.SetProgressBarValue(50); for (int Index = 0; Index < AllMarques.Count; Index++) //ajout des marques { if (!MarquesD.CheckIfExists(AllMarques[Index])) { Marques Marque = new Marques(AllMarques[Index]); MarquesD.AjouterMarque(Marque); } } Modale.SetProgressBarValue(60); for (int Index = 0; Index < AllFamilles.Count; Index++) //ajout des familles { if (!FamillesD.CheckIfExists(AllFamilles[Index])) { Familles Famille = new Familles(AllFamilles[Index]); FamillesD.AjouterFamille(Famille); } } Modale.SetProgressBarValue(70); for (int Index = 0; Index < AllSousFamilles.Count; Index++) // ajout des sous familles { //Là je devais m'occuper d'ajouter la sous famille si elle était pas là, ou la modifier si sa famille avait changé (jsp si c'est possible) if (!SousFamillesD.CheckIfExists(AllSousFamilles[Index])) { SousFamilles SousFamille = new SousFamilles(FamillesD.GetRefByName(AllSousFamillesFamilles[Index]), AllSousFamilles[Index]); SousFamillesD.AjouterSousFamille(SousFamille); } else { SousFamillesD.Update(FamillesD.GetRefByName(AllSousFamillesFamilles[Index]), AllSousFamilles[Index]); } } Modale.SetProgressBarValue(80); for (int Index = 0; Index < AllArticlesRefArticle.Count; Index++) //ajout des articles { if (!ArticlesD.CheckIfExists(AllArticlesRefArticle[Index])) { int RefSousFamille = SousFamillesD.GetRefByName(AllArticlesSousFamilleNom[Index]); int RefMarque = MarquesD.GetRefByName(AllArticlesMarqueNom[Index]); Articles Article = new Articles(AllArticlesRefArticle[Index], AllArticlesDescription[Index], RefSousFamille, RefMarque, AllArticlesPrixHT[Index], 0); ArticlesD.AjouterArticle(Article); NombreArticleAjout++; } else { int RefSousFamille = SousFamillesD.GetRefByName(AllArticlesSousFamilleNom[Index]); int RefMarque = MarquesD.GetRefByName(AllArticlesMarqueNom[Index]); Articles monArticle = ArticlesD.GetArticleByRef(AllArticlesRefArticle[Index]); if (monArticle.GetDescription() != AllArticlesDescription[Index] || monArticle.GetRefSousFamille() != RefSousFamille || monArticle.GetRefMarque() != RefMarque || monArticle.GetPrixHT() != AllArticlesPrixHT[Index]) { ArticlesD.Update(AllArticlesRefArticle[Index], AllArticlesDescription[Index], RefSousFamille, RefMarque, AllArticlesPrixHT[Index], 0); NombreArticleUpdated++; } } } Modale.SetProgressBarValue(100); Modale.GetLabelImport().Text = "Importation en mode Ajout terminé !"; string message = NombreArticleAjout + " articles ont été ajoutés à la base de données et " + NombreArticleUpdated + " articles ont été mis à jour."; const string caption = "Intégration en mode Ajout terminé !"; var result = MessageBox.Show(message, caption, MessageBoxButtons.OK, MessageBoxIcon.Information); //affichage d'une messageBox pour indiquer que tout s'est bien passé }