import java.util.HashMap; import java.util.Scanner; import java.io.PrintStream; import java.io.File; import java.io.OutputStream; import java.io.FileOutputStream; import java.io.IOException; class DVDAdministrasjon { private static HashMap navneliste = new HashMap(); private static void write(OutputStream out) throws IOException { //Above the first '-', declaring the names of people for (Person p: navneliste.values()) { out.write((p.navn+"\n").getBytes()); } out.write("-\n".getBytes()); //Declare people's DVDs for (Person p: navneliste.values()) { out.write((p.navn+"\n").getBytes()); //Owned DVDs for (DVD d: p.arkiv.values()) { out.write((d.navn+"\n").getBytes()); } //Lended DVDs for (DVD d: p.utlaante.values()) { out.write(("*"+d.navn+"\n").getBytes()); out.write((d.laaner.navn+"\n").getBytes()); } out.write("-\n".getBytes()); } } private static void parse(Scanner in) { //Bulid namelist while (in.hasNextLine()) { String navn = in.nextLine(); if (navn.equals("-")) break; navneliste.put(navn, new Person(navn)); } //Build people's DVD lists String navn = null; while (in.hasNextLine()) { String line = in.nextLine(); if (navn == null) { navn = line; } else if (line.startsWith("*")) { Person eier = navneliste.get(navn); DVD dvd = new DVD(line.substring(1), eier); Person laaner = navneliste.get(in.nextLine()); dvd.laaner = laaner; eier.utlaante.put(dvd.navn, dvd); laaner.laante.put(dvd.navn, dvd); } else if (!line.equals("-")) { Person eier = navneliste.get(navn); DVD dvd = new DVD(line, eier); eier.leggTilArkiv(dvd); } else { navn = null; } } } private static String readln() { return readln(null); } private static String readln(String msg) { System.out.println(""); if (msg != null) { System.out.println(msg); } System.out.print("> "); return new Scanner(System.in).nextLine(); } private static void command(String str) throws Exception { //Ny Person if (str.equals("1")) { String navn = readln("Hva heter den nye personen?"); if (navneliste.containsKey(navn)) { System.out.println(navn+" finnes allerede."); return; } Person p = new Person(navn); navneliste.put(navn, p); System.out.println(navn+" lagt til."); //Kjop } else if (str.equals("2")) { String navn = readln("Hvem har kjopt DVDen?"); Person p = navneliste.get(navn); if (p == null) { System.out.println(navn+" finnes ikke."); return; } DVD dvd = new DVD(readln("Hva er tittelen paa DVDen?"), p); p.leggTilArkiv(dvd); System.out.println(dvd.navn+" lagt til."); //Laan } else if (str.equals("3")) { Person laaner = navneliste.get(readln("Hvem vil laane DVDen?")); if (laaner == null) { System.out.println("Personen finnes ikke."); return; } Person eier = navneliste.get(readln("Hvem skal laane ut DVDen?")); if (eier == null) { System.out.println("Personen finnes ikke."); return; } DVD dvd = eier.finnDvd(readln("Hva er tittelen paa DVDen?")); if (dvd == null) { System.out.println(eier.navn+" har ikke den DVDen."); return; } eier.laanUt(dvd, laaner); System.out.println(dvd.navn+" laant ut til "+laaner.navn+"."); //Vis Person } else if (str.equals("4")) { String name = readln("Hvem vil du se? (* for alle)"); //Print everyone if name is * if (name.equals("*")) { for (Person p: navneliste.values()) { System.out.println(p.prettyPrint()); } return; } Person p = navneliste.get(name); if (p == null) { System.out.println("Personen finnes ikke."); return; } System.out.println(p.prettyPrint()); //Vis Oversikt } else if (str.equals("5")) { for (Person p: navneliste.values()) { System.out.println(p.prettyPrintStats()); } //Retur } else if (str.equals("6")) { Person p = navneliste.get(readln("Hvem skal returnere en DVD?")); if (p == null) { System.out.println("Personen finnes ikke."); return; } DVD dvd = p.laante.get(readln("Hva er tittelen paa DVDen?")); if (dvd == null) { System.out.println(p.navn+" har ikke den DVDen."); return; } p.returner(dvd); System.out.println(dvd.navn+" er returnert til "+dvd.eier.navn+"."); //Avslutt } else if (str.equals("7")) { write(new FileOutputStream(new File("dvdarkiv.txt"))); System.exit(0); } else { System.out.println("Ukjent kommando: "+str); } } public static void main(String[] args) throws Exception { Scanner in = new Scanner(System.in); parse(new Scanner(new File("dvdarkiv.txt"))); while (true) { System.out.println(""); System.out.println("1: Ny Prerson."); System.out.println("2: Kjop."); System.out.println("3: Laan."); System.out.println("4: Vis Person."); System.out.println("5: Vis Oversikt."); System.out.println("6: Retur."); System.out.println("7: Avslutt."); command(readln()); } } }