Code :
public ArrayList<Fichier> ajoutFichier(Fichier newFichier, ArrayList<Fichier> oldList) { int tailleVide = 0; ArrayList<Fichier> newList = oldList; boolean fichierAjoute = false; boolean fichierExistant = false; boolean memoireSaturee = true; for (int k = 0; k < newList.size(); k++) { if (newList.get(k).nomFichier.equalsIgnoreCase("Vide" )) { memoireSaturee = false; k = newList.size(); } } for (int j = 0; j < newList.size(); j++) { if (newList.get(j).nomFichier.equalsIgnoreCase(newFichier.nomFichier)) { fichierExistant = true; j = newList.size(); } } if (!memoireSaturee) { if (!fichierExistant) { for (int i = 0; i < newList.size() && !fichierAjoute; i++) { if (newList.get(i).nomFichier.equalsIgnoreCase("Vide" ) && newFichier.tailleFichier <= newList.get(i).tailleFichier && !fichierAjoute) { newList.get(i).tailleFichier = newList.get(i).tailleFichier - newFichier.tailleFichier; if (newList.get(i).tailleFichier == 0) newList.remove(i); newList.add((i), newFichier); i = newList.size(); fichierAjoute = true; JOptionPane. showConfirmDialog(this, "Ajout reussi du fichier : " + newFichier. nomFichier + " de taille : " + newFichier. tailleFichier, "Ajout de Fichier", JOptionPane. PLAIN_MESSAGE, JOptionPane. INFORMATION_MESSAGE); } } if (!fichierAjoute) { JOptionPane. showConfirmDialog(this, "Espace insuffisant , la defragmentation aura lieu !", "Ajout de fichier", JOptionPane. PLAIN_MESSAGE, JOptionPane. WARNING_MESSAGE); for (int i = 0; i < newList.size(); i++) { if (newList.get(i).nomFichier.equalsIgnoreCase("Vide" )) { tailleVide = tailleVide + newList.get(i).tailleFichier; newList.remove(i); if (i==0) i=0; else i--; } } Fichier videDefrag = new Fichier("Vide", tailleVide); newList.add(videDefrag); int lastIndexVide = (newList.size() - 1); if (newFichier.tailleFichier <= tailleVide) { newList.add((lastIndexVide), newFichier); newList.get(newList.lastIndexOf(videDefrag)).tailleFichier -= newFichier.tailleFichier; if (newList.get(newList.lastIndexOf(videDefrag)).tailleFichier == 0) newList.remove(videDefrag); JOptionPane. showConfirmDialog(this, "Ajout reussi du fichier : " + newFichier. nomFichier + " de taille : " + newFichier. tailleFichier, "Ajout de Fichier", JOptionPane. PLAIN_MESSAGE, JOptionPane. INFORMATION_MESSAGE); } else { JOptionPane. showConfirmDialog(this, "Espace insuffisant meme apres la defragmentation !", "Ajout de fichier", JOptionPane. PLAIN_MESSAGE, JOptionPane. WARNING_MESSAGE); } } } else { JOptionPane. showConfirmDialog(this, "Fichier : "+newFichier. nomFichier+ " déjà existant !", "Ajout de fichier", JOptionPane. PLAIN_MESSAGE, JOptionPane. WARNING_MESSAGE); } } else { } return newList; }
|