import java.util.HashMap; class Person { public String navn; public HashMap arkiv = new HashMap(); public HashMap laante = new HashMap(); public HashMap utlaante = new HashMap(); Person(String navn) { this.navn = navn; } public void leggTilArkiv(DVD dvd) { arkiv.put(dvd.navn, dvd); } public void laanUt(DVD dvd, Person laaner) throws Exception { if (!arkiv.containsKey(dvd.navn)) { throw new Exception(this.navn+" har ikke DVDen "+dvd.navn+"."); } arkiv.remove(dvd.navn); utlaante.put(dvd.navn, dvd); dvd.laaner = laaner; laaner.laante.put(dvd.navn, dvd); } public void returner(DVD dvd) throws Exception { if (!laante.containsKey(dvd.navn)) { throw new Exception(this.navn+" laaner ikke DVDen "+dvd.navn+"."); } if (!dvd.eier.utlaante.containsKey(dvd.navn)) { throw new Exception(dvd.eier.navn+" laaner ikke ut DVDen "+dvd.navn+"."); } laante.remove(dvd.navn); dvd.laaner = null; dvd.eier.utlaante.remove(dvd.navn); dvd.eier.leggTilArkiv(dvd); } public DVD finnDvd(String navn) { return arkiv.get(navn); } public String prettyPrintStats() { String res; res = "Person '"+navn+"'\n"; res += " Antall DVDer i arkiv: "+arkiv.size()+"\n"; res += " Antall DVDer laant: "+laante.size()+"\n"; res += " Antall DVDer utlaant: "+utlaante.size(); return res; } public String prettyPrint() { String res; res = "Person '"+navn+"'\n"; if (arkiv.size() == 0) { res += " Eier ingen DVDer.\n"; } else { res += " Eier:\n"; for (DVD dvd: arkiv.values()) { res += " "+dvd.prettyPrint(false)+"\n"; } } if (laante.size() == 0) { res += " Laaner ingen DVDer.\n"; } else { res += " Laaner:\n"; for (DVD dvd: laante.values()) { res += " "+dvd.prettyPrint(false)+"\n"; } } if (utlaante.size() == 0) { res += " Laaner ikke ut noen DVDer."; } else { res += " Laaner ut:\n"; for (DVD dvd: utlaante.values()) { res += " "+dvd.prettyPrint(true)+"\n"; } } //Remove last newline res = res.substring(0, res.length() - 1); return res; } }