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
| package graphe_app;
import graphe_app.Modele.Caracteristique;
import graphe_app.Modele.Graphe;
import graphe_app.Modele.Noeud;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
public class Acces_Fichier {
private String chemin = "villes.serial";
private Graphe graphe;
// Constructeur
public Acces_Fichier() {
File file = new File(chemin); // c'est pour vérifier si le fichier existe
if (! file.exists()) creer_Fichier_Graphe();//si le fichier n'existe pas,le créer
graphe = null;
charger_Graphe(); // charger le graphe à partir du fichier "villes"
}
// méthode de chargement du graphe à partir du fichier en utili. la désérialisation
private void charger_Graphe(){
try {
// ouverture d'un flux d'entrée depuis le fichier "villes"
FileInputStream fis = new FileInputStream(chemin);
// création d'un "flux objet" avec le flux fichier
ObjectInputStream ois= new ObjectInputStream(fis);
try {
// désérialisation : lecture de l'objet depuis le flux d'entrée
graphe = (Graphe) ois.readObject();
} finally {
// on ferme les flux
try { ois.close(); }
finally { fis.close(); }
}
}
catch(IOException ioe) { ioe.printStackTrace(); }
catch(ClassNotFoundException cnfe) { cnfe.printStackTrace(); }
System.out.println("chargement du Graphe effectué");
}
// méthode de sauvegarde du graphe dans un fichier en utilisant la sérialisation
private void sauvegarder_Graphe(){
try {
// ouverture d'un flux de sortie vers le fichier "Domaines.serial"
FileOutputStream fos = new FileOutputStream(chemin);
// création d'un "flux objet" avec le flux fichier
ObjectOutputStream oos= new ObjectOutputStream(fos);
try {
// sérialisation : écriture de l'objet dans le flux de sortie
oos.writeObject(graphe);
// on vide le tampon
oos.flush();
} finally {
//fermeture des flux
try {
oos.close();
} finally { fos.close(); }
}
} catch(IOException ioe) { ioe.printStackTrace(); }
//System.out.println("sauvegarde du Graphe effectuée");
}
// création par défaut d'un graphe
private void initialiser_Graphe(){
graphe = new Graphe();
// création des villes
Noeud paris = new Noeud("PAR", "Paris"); paris.setLocation(374, 162);
Noeud marseille = new Noeud("MAR", "Marseille"); marseille.setLocation(541, 559);
Noeud nantes = new Noeud("NAN", "Nantes"); nantes.setLocation(192, 289);
Noeud lille = new Noeud("LIL", "Lille"); lille.setLocation(413, 39);
Noeud lyon = new Noeud("LYO", "Lyon"); lyon.setLocation(509, 390);
Noeud troyes = new Noeud("TRO", "Troyes"); troyes.setLocation(470, 205);
Noeud nancy = new Noeud("NAC", "Nancy"); nancy.setLocation(555, 166);
Noeud toulouse = new Noeud("TOU", "Toulouse"); toulouse.setLocation(330, 560);
Noeud amiens = new Noeud("AMI", "Amiens"); amiens.setLocation(372, 84);
Noeud mans = new Noeud("MAN", "Le Mans"); mans.setLocation(275, 230);
Noeud reims = new Noeud("REI", "Reims"); reims.setLocation(457, 136);
Noeud metz = new Noeud("MET", "Metz"); metz.setLocation(555, 138);
Noeud stras = new Noeud("STR", "Strasbourg"); stras.setLocation(637, 155);
Noeud montpe = new Noeud("MON", "Montpellier"); montpe.setLocation(440, 553);
Noeud mulhouse = new Noeud("MUL", "Mulhouse"); mulhouse.setLocation(620, 247);
Noeud avignon = new Noeud("AVI", "Avignon"); avignon.setLocation(499, 522);
Noeud rochelle = new Noeud("ROC", "La Rochelle");rochelle.setLocation(210, 349);
Noeud orleans = new Noeud("ORL", "Orleans"); orleans.setLocation(345, 236);
Noeud bourges = new Noeud("BOU", "Bourges"); bourges.setLocation(373, 288);
Noeud chateau = new Noeud("CHA", "Chateauroux"); chateau.setLocation(347, 325);
Noeud limoges = new Noeud("LIM", "Limoges"); limoges.setLocation(328, 364);
Noeud bordeaux = new Noeud("BOR", "Bordeaux"); bordeaux.setLocation(224, 428);
graphe.ajouterNoeud(paris); graphe.ajouterNoeud(marseille);
graphe.ajouterNoeud(nantes); graphe.ajouterNoeud(lille);
graphe.ajouterNoeud(lyon); graphe.ajouterNoeud(troyes);
graphe.ajouterNoeud(nancy); graphe.ajouterNoeud(toulouse);
graphe.ajouterNoeud(amiens); graphe.ajouterNoeud(mans);
graphe.ajouterNoeud(reims); graphe.ajouterNoeud(metz);
graphe.ajouterNoeud(stras); graphe.ajouterNoeud(montpe);
graphe.ajouterNoeud(mulhouse); graphe.ajouterNoeud(avignon);
graphe.ajouterNoeud(rochelle); graphe.ajouterNoeud(orleans);
graphe.ajouterNoeud(bourges); graphe.ajouterNoeud(chateau);
graphe.ajouterNoeud(limoges); graphe.ajouterNoeud(bordeaux);
// création des routes
graphe.ajouterArete(paris, troyes, new Caracteristique(200, 100));
graphe.ajouterArete(paris, amiens, new Caracteristique(180, 90));
graphe.ajouterArete(paris, mans,new Caracteristique(230, 90));
graphe.ajouterArete(paris, orleans,new Caracteristique(140, 90));
graphe.ajouterArete(mans, nantes,new Caracteristique(250, 90));
graphe.ajouterArete(lille, amiens, new Caracteristique(150, 90));
graphe.ajouterArete(troyes, nancy, new Caracteristique(170, 90));
graphe.ajouterArete(troyes, lyon,new Caracteristique(750, 90));
graphe.ajouterArete(marseille, lyon,new Caracteristique(600, 90));
graphe.ajouterArete(marseille, avignon,new Caracteristique(100, 90));
graphe.ajouterArete(montpe, avignon,new Caracteristique(130, 90));
graphe.ajouterArete(montpe, toulouse,new Caracteristique(220, 90));
graphe.ajouterArete(paris, reims,new Caracteristique(170, 90));
graphe.ajouterArete(reims, metz, new Caracteristique(160, 90));
graphe.ajouterArete(metz, stras, new Caracteristique(120, 90));
graphe.ajouterArete(nancy, stras, new Caracteristique(125, 90));
graphe.ajouterArete(troyes, mulhouse, new Caracteristique(300, 90));
graphe.ajouterArete(mulhouse, stras,new Caracteristique(220, 90));
graphe.ajouterArete(nantes, rochelle,new Caracteristique(170, 90));
graphe.ajouterArete(nantes, rochelle,new Caracteristique(150, 90));
graphe.ajouterArete(rochelle, bordeaux,new Caracteristique(190, 90));
graphe.ajouterArete(bordeaux, toulouse,new Caracteristique(320, 90));
graphe.ajouterArete(orleans, bourges,new Caracteristique(110, 90));
graphe.ajouterArete(chateau, bourges, new Caracteristique(80, 90));
graphe.ajouterArete(chateau, limoges,new Caracteristique(70, 90));
graphe.ajouterArete(limoges, toulouse, new Caracteristique(500, 90));
}
private void creer_Fichier_Graphe() {
initialiser_Graphe();
sauvegarder_Graphe();
System.out.println("Création du graphe réussie");
}
public Graphe getGraphe() {
return graphe;
}
} |