import java.util.ArrayList; import java.util.concurrent.ThreadLocalRandom; public class Bedrift implements HarStyre, HarAnsatte { private String navn; private int grunnlagt; private ArrayList styret; private ArrayList ansatte; private enum Status {BRA, DAARLIG, HELT_OK}; private Status status; public Bedrift(String n, int aar) { navn = n; grunnlagt = aar; styret = new ArrayList<>(); status = Status.BRA; ansatte = new ArrayList<>(); } @Override public ArrayList hentStyre() { return styret; } @Override public void taBeslutning() { if (status == Status.BRA) { System.out.println("N? G?R DET BRA"); Ansatt ansatt = new Ansatt("Robot", 1, 20, false); this.ansett(ansatt); } else if (status == Status.DAARLIG) { System.out.println("G?r ikke s? bra..."); try { this.giSparken(); } catch (IngenAnsattException e) { System.out.println(e.getMessage()); } } else { // status == Status.HELT_OK i dette tilfellet System.out.println("G?r helt ok :|"); } } @Override public void leggTil(Styremedlem styremedlem) { styret.add(styremedlem); } public void endreStatus() { int tilfeldig = ThreadLocalRandom.current().nextInt(0,3); if (tilfeldig == 0) status = Status.BRA; else if (tilfeldig == 1) status = Status.DAARLIG; else status = Status.HELT_OK; } @Override public ArrayList hentAnsatte() { return ansatte; } @Override public Ansatt giSparken() throws IngenAnsattException { if (ansatte.isEmpty()) throw new IngenAnsattException(); return ansatte.remove(0); } @Override public void ansett(Ansatt ansatt) { ansatte.add(ansatt); } public void skrivBedrift() { System.out.println("Bedrift: " + navn + ", Grunnlagt i aar: " + grunnlagt); for (Ansatt ansatt : ansatte) { System.out.println(); ansatt.skrivPerson(); } for (Styremedlem medlem : styret) { System.out.println(); medlem.skrivPerson(); } } }