rendered paste bodypackage pobj.iface;
import pobj.mediatheque.base.Mediatheque;
import pobj.mediatheque.media.Cd;
import pobj.mediatheque.media.Medium;
import pobj.mediatheque.media.VHS;
import pobj.mediatheque.media.Dvd;
import java.io.*;
public class princ {
// fichier de base
private static final String NOM_FIC_BASE = "/home/cyril/workspace/projet-LAVIER/medium";
public static void main (String[] args) throws FileNotFoundException, IOException {
String continue1 = "O";
Mediatheque mediatheque = new Mediatheque();
String strfich = "";
System.out.println("Intialisation de la base\n...");
try {
strfich = init_mediatheque(mediatheque);
}catch (FileNotFoundException err1)
{
System.out.println("Fichier non trouvé.");
err1.printStackTrace();
}
catch (IOException err2)
{
System.out.println("Erreur d'entrée - sortie.");
err2.printStackTrace();
}
do {
String rep_men1 = menu();
if (rep_men1.compareTo("Q") == 0) {
break;
}
System.out.println("");
continue1 = action(rep_men1, mediatheque, strfich);
System.out.println("");
} while (continue1.compareTo("O") == 0);
System.out.println("Au revoir");
}
public static String init_mediatheque(Mediatheque m) throws FileNotFoundException, IOException {
String [] med;
String ligne;
String totalfich = "";
Reader r = new FileReader(NOM_FIC_BASE);
BufferedReader br = new BufferedReader(r);
while ((ligne=br.readLine()) != null) {
totalfich = totalfich +ligne+"_";
med=ligne.split(";");
if (med[0].compareTo("vhs") == 0) {
m.addMedium(new VHS(med[1],med[2],Integer.parseInt(med[3])));
}else{
if (med[0].compareTo("dvd") == 0) {
m.addMedium(new Dvd(med[1],med[2],Integer.parseInt(med[3])));
}else{
if (med[0].compareTo("cd") == 0) {
m.addMedium(new Cd(med[1],med[2], med[3]));
}
}
}
}
r.close();
System.out.println(totalfich);
System.out.println("Intialisation correctement effectuée\n"+m.getMedia().size()+" enregistrements ajoutés");
return totalfich;
}
public static String menu() {
System.out.println("\n######################################################");
System.out.println("################# MENU PRINCIPAL #####################");
System.out.println("######################################################");
System.out.println("# L : LISTER LA MÉDIATHÈQUE ##########################");
System.out.println("# L-TYPE : LISTER LES ÉLÉMENTS DE TYPE \"TYPE\" ########");
System.out.println("# A-TYPE : AJOUTER UN ÉLÉMENT DU TYPE \"TYPE\" #########");
System.out.println("########## (Cd, Dvd, Vhs) ############################");
System.out.println("######################################################");
System.out.println("# Q : QUITTER ########################################");
System.out.println("######################################################");
System.out.print("\nChoix : ");
String rep1 = SaisieClavier.LireChaine();
return rep1;
}
public static String action(String c, Mediatheque m, String strfich) throws IOException {
String ret;
if(c.startsWith("L") == true) {
ret = affi(c, m);
}else{
if(c.startsWith("A") == true) {
ret = ajout(c, m, strfich);
}else{
System.out.println("ERREUR");
ret = "O";
}
}
return ret;
}
public static String ajout(String c, Mediatheque m, String strfich) throws IOException {
String ret;
String [] type;
String titremed;
String auteurmed;
type=c.split("-");
ret="O";
System.out.println("Titre ?");
titremed = SaisieClavier.LireChaine();
System.out.println("Auteur ?");
auteurmed = SaisieClavier.LireChaine();
if(type[1].compareToIgnoreCase("dvd") == 0) {
String zonedvd;
System.out.println("Zone du DVD ?");
zonedvd = SaisieClavier.LireChaine();
if (m.addMedium(new Dvd(titremed, auteurmed, Integer.parseInt(zonedvd)))) {
System.out.println("Ajouter ce DVD à la base ?(O/N)");
String ch = SaisieClavier.LireChaine();
if (ch.compareToIgnoreCase("O") == 0) {
String ligne = "dvd;"+titremed+";"+auteurmed+";"+zonedvd;
ecriture_base(strfich+ligne);
}
}
}
if(type[1].compareToIgnoreCase("cd") == 0) {
String formatcd;
System.out.println("Format du CD ?");
formatcd = SaisieClavier.LireChaine();
if (m.addMedium(new Cd(titremed, auteurmed, formatcd))) {
System.out.println("Ajouter ce CD à la base ?(O/N)");
String ch = SaisieClavier.LireChaine();
if (ch.compareToIgnoreCase("O") == 0) {
String ligne = "cd;"+titremed+";"+auteurmed+";"+formatcd;
ecriture_base(strfich+ligne);
}
}
}
if(type[1].compareToIgnoreCase("vhs") == 0) {
String dureevhs;
System.out.println("Durée de la VHS ?");
dureevhs = SaisieClavier.LireChaine();
if (m.addMedium(new VHS(titremed,auteurmed, Integer.parseInt(dureevhs)))) {
System.out.println("Ajouter cette VHS à la base ?(O/N)");
String ch = SaisieClavier.LireChaine();
if (ch.compareToIgnoreCase("O") == 0) {
String ligne = "vhs;"+titremed+";"+auteurmed+";"+dureevhs;
ecriture_base(strfich+ligne);
}
}
}
return ret;
}
public static void ecriture_base(String ligne) throws IOException {
String [] fichier = ligne.split("_");
Writer w = new FileWriter(NOM_FIC_BASE);
for (int i=0; i<fichier.length; i++) {
w.write(fichier[i]+"\n");
System.out.println(fichier[i]);
}
w.close();
}
public static String affi(String c, Mediatheque m) {
String temp;
String [] classe;
String type;
String [] choix = c.split("-");
if(choix.length > 1) {
c = choix[1].toLowerCase();
}else{
c = choix[0];
}
for (int i=0; i<m.getMedia().size(); i++) {
temp = ((Medium) m.getMedia().get(i)).getClass().toString();
classe=temp.split(" ");
classe=classe[1].split("");
type = classe[24]+classe[25];
if (classe.length == 27) {
type = type + classe[26];
}
if (c.compareTo("dvd") == 0 && type.compareToIgnoreCase(c) == 0) {
System.out.println(m.getMedia().get(i).toString().substring(10));
}
if (c.compareTo("cd") == 0 && type.compareToIgnoreCase(c) == 0) {
System.out.println(m.getMedia().get(i).toString().substring(9));
}
if (c.compareTo("vhs") == 0 && type.compareToIgnoreCase(c) == 0) {
System.out.println(m.getMedia().get(i).toString().substring(10));
}
if (c.compareTo("L") == 0) {
System.out.println(m.getMedia().get(i).toString());
}
}
System.out.println("\nContinuer ? (0/N)");
String str = SaisieClavier.LireChaine();
return str;
}
}