diff --git a/src/de/itstall/Lager.java b/src/de/itstall/Lager.java index 1033b70305c02730536e84bcfe3479ad089fd303..8858251021bb3bae07d05f4d50f4b5f2b89142bd 100644 --- a/src/de/itstall/Lager.java +++ b/src/de/itstall/Lager.java @@ -1,105 +1,121 @@ package de.itstall; import java.util.ArrayList; +import java.util.function.Predicate; /** * Klasse zur Verwaltung der Lager */ public class Lager { - /** - * Liste der Regale im aktuellen Lager - */ - ArrayList<Regal> lagerListe = new ArrayList<>(); - - /** - * Anzahl der Lagerplaetze pro Regal - */ - private int regalLagerplaetze; - - /** - * Der Konstruktor legt gleich schon mal ein Regal an und legt auch die Lagerplaetze pro Regal fest - * - * @param lagerplaetze : int : Anzahl der Etagen pro Regal - */ - public Lager(int lagerplaetze) { - this.regalLagerplaetze = lagerplaetze; - this.addRegal(); - } + /** + * Liste der Regale im aktuellen Lager + */ + ArrayList<Regal> lagerListe = new ArrayList<>(); - /** - * Gibt die Anzahl der Regal Lagerplaetze zurueck - * - * @return int : Anzahl der Lagerplaetze pro Regal - */ - public int getRegalLagerplaetze() { - return this.regalLagerplaetze; - } + /** + * Anzahl der Lagerplaetze pro Regal + */ + private int regalLagerplaetze; - /** - * Fuegt dem Lager ein Regal hinzu - */ - public void addRegal() { - this.lagerListe.add(new Regal()); - } + /** + * Der Konstruktor legt gleich schon mal ein Regal an und legt auch die Lagerplaetze pro Regal fest + * + * @param lagerplaetze : int : Anzahl der Etagen pro Regal + */ + public Lager(int lagerplaetze) { + this.regalLagerplaetze = lagerplaetze - 1; + this.addRegal(); + } - /** - * Sucht auf den Lagerplaetzen nach einem Objekt und gibt den Lagerplatz zurueck - * - * //@param o : Object : Das zu suchende Object - * @return Object : Lagerplatz - */ - public Object finden(String bezeichnung) { - for(Regal regal : lagerListe) { - for(Karton<?> lagerPlatz : regal.lagerplaetzListe) { - if (lagerPlatz.getBezeichnung().equals(bezeichnung)) { - return lagerPlatz.getObjekt(); - } - System.out.println(lagerPlatz.toString()); - } - } - return null; - } + /** + * Gibt die Anzahl der Regal Lagerplaetze zurueck + * + * @return int : Anzahl der Lagerplaetze pro Regal + */ + public int getRegalLagerplaetze() { + return this.regalLagerplaetze; + } - public void einlagern(Karton<?> karton) { - for(Regal regal : lagerListe) { - if(regal.lagerplaetzListe.size() < this.regalLagerplaetze) { - regal.lagerplaetzListe.add(karton); - } - } - } + /** + * Fuegt dem Lager ein Regal hinzu + */ + public void addRegal() { + this.lagerListe.add(new Regal()); + System.out.println("Neues Regal wurde gebaut."); + } + + /** + * Sucht auf den Lagerplaetzen nach einem Objekt und gibt den Lagerplatz zurueck + * <p> + * //@param o : Object : Das zu suchende Object + * + * @return Object : Lagerplatz + */ + public Object finden(String bezeichnung) { + for (Regal regal : lagerListe) { + for (Karton<?> lagerPlatz : regal.lagerplaetzListe) { + if (lagerPlatz.getBezeichnung().equals(bezeichnung)) { + + return lagerPlatz.getObjekt(); + } + } + } - public void entnehmen(String bezeichnung) { - for(Regal regal : lagerListe) { - for(Karton<?> lagerPlatz : regal.lagerplaetzListe) { - regal.lagerplaetzListe.remove(regal.lagerplaetzListe.indexOf(lagerPlatz.getBezeichnung().equals(bezeichnung))); + return null; + } + + public boolean einlagern(Karton<?> karton) { + for (Regal regal : lagerListe) { + if (regal.lagerplaetzListe.size() <= this.regalLagerplaetze) { + regal.lagerplaetzListe.add(karton); + + return true; + } else { + this.addRegal(); + this.einlagern(karton); + + return true; } - } - } + } + + return false; + } - /** - * Klasse zur Verwaltung der Regale - * Ein Regal kan max. fünf Lagerplaetze besitzen - */ - public class Regal { - - /** - * Liste der Lagerplaetze in dem aktuellen Regal - */ - ArrayList<Karton> lagerplaetzListe = new ArrayList<>(); - - /** - * Wenn im aktuellen Regal noch ein Lagerplatz frei ist, wird ein Platz abgezogen. - * Ansonten wird ein neues Regal angebaut. - */ - public void einlagern(Karton<?> karton) { - if(lagerplaetzListe.size() < Lager.this.regalLagerplaetze) { - lagerplaetzListe.add(karton); - } else { - Lager.this.addRegal(); + public boolean entnehmen(String bezeichnung) { + for (Regal regal : lagerListe) { + if(regal.lagerplaetzListe.removeIf(karton -> karton.getBezeichnung().equals(bezeichnung))) { + + return true; } } + return false; } + /** + * Klasse zur Verwaltung der Regale + * Ein Regal kan max. fünf Lagerplaetze besitzen + */ + public class Regal { + + /** + * Liste der Lagerplaetze in dem aktuellen Regal + */ + ArrayList<Karton> lagerplaetzListe = new ArrayList<>(); + + /** + * Wenn im aktuellen Regal noch ein Lagerplatz frei ist, wird ein Platz abgezogen. + * Ansonten wird ein neues Regal angebaut. + */ + public void einlagern(Karton<?> karton) { + if (lagerplaetzListe.size() < Lager.this.regalLagerplaetze) { + lagerplaetzListe.add(karton); + } else { + Lager.this.addRegal(); + } + } + + } + } diff --git a/src/de/itstall/Main.java b/src/de/itstall/Main.java index 4496a7dbf5a21ab93e700cd2f4f06370baa50860..5672bed458bbae8da130cdb77310d0ecd09e0018 100644 --- a/src/de/itstall/Main.java +++ b/src/de/itstall/Main.java @@ -1,49 +1,87 @@ package de.itstall; -import de.itstall.Lager.Regal; - -import java.util.ArrayList; - public class Main { - /** - * Lager - * - Regal - * - Etagen (max 5) - * - Lagerplatz (1 Etage == 1 Lagerplatz) - * - * Wenn Lagerplatz == 0 : Regal hinzufügen - * - * @param args - */ public static void main(String[] args) { - Karton<String> karton = new Karton<>(); - String tempObject = "Test Object"; - karton.setBezeichnung("Test"); - karton.setObjekt(tempObject); + Lager lager = new Lager(5); + String suche = ""; - Lager lager = new Lager(5); + Karton<String> karton = new Karton<>(); + karton.setBezeichnung("Test"); + karton.setObjekt(new String("Test Object")); - lager.einlagern(karton); + if(lager.einlagern(karton)) { + System.out.println("Karton \"" + karton.getBezeichnung() + "\" eingelagert."); + } else { + System.out.println("Konnte Karton \"" + karton.getBezeichnung() + "\" nicht eingelagern."); + } - System.out.println("Gibt's schon was?"); - System.out.println(lager.finden("Test")); - Object gesuchterKarton = lager.finden("Test"); + Karton<String> karton2 = new Karton<>(); + karton2.setBezeichnung("Test2"); + karton.setObjekt(new String("Test Object2")); + + if(lager.einlagern(karton2)) { + System.out.println("Karton \"" + karton2.getBezeichnung() + "\" eingelagert."); + } else { + System.out.println("Konnte Karton \"" + karton2.getBezeichnung() + "\" nicht eingelagern."); + } - lager.entnehmen("Test"); + Karton<String> karton3 = new Karton<>(); + karton3.setBezeichnung("Test3"); + karton.setObjekt(new String("Test Object3")); - System.out.println(lager.finden("Test")); + if(lager.einlagern(karton3)) { + System.out.println("Karton \"" + karton3.getBezeichnung() + "\" eingelagert."); + } else { + System.out.println("Konnte Karton \"" + karton3.getBezeichnung() + "\" nicht eingelagern."); + } - /*for(Regal regal : lager.lagerListe) {*/ -/**/ - /*}*/ + Karton<String> karton4 = new Karton<>(); + karton4.setBezeichnung("Test4"); + karton.setObjekt(new String("Test Object4")); - //Lager.Regal lagerListe = lager.lagerListe; + if(lager.einlagern(karton4)) { + System.out.println("Karton \"" + karton4.getBezeichnung() + "\" eingelagert."); + } else { + System.out.println("Konnte Karton \"" + karton4.getBezeichnung() + "\" nicht eingelagern."); + } + + Karton<String> karton5 = new Karton<>(); + karton5.setBezeichnung("Test5"); + karton.setObjekt(new String("Test Object5")); + + if(lager.einlagern(karton5)) { + System.out.println("Karton \"" + karton5.getBezeichnung() + "\" eingelagert."); + } else { + System.out.println("Konnte Karton \"" + karton5.getBezeichnung() + "\" nicht eingelagern."); + } + + suche = "Test"; + if(lager.finden(suche) != null) { + System.out.println("Karton \"" + suche + "\" gefunden."); + } else { + System.out.println("Konnte Karton \"" + suche + "\" nicht finden"); + } + Object gesuchterKarton = lager.finden("Test"); - //ArrayList<Regal> lagerPlaetze = lager.lagerListe; + suche = "Test"; + if(lager.entnehmen(suche)) { + System.out.println("-> Karton \"" + suche + "\" aus dem Lager geholt."); + } else { + System.out.println("Konnte Karton \"" + suche + "\" nicht finden."); + } - //Lager.Regal.Lagerplatz lagerplatz = lagerListe.new Lagerplatz(); + if(lager.finden(suche) != null) { + System.out.println("Karton \"" + suche + "\" gefunden."); + } else { + System.out.println("Konnte Karton \"" + suche + "\" nicht finden"); + } - //lagerplatz.einlagern(karton); + suche = "Test2"; + if(lager.finden(suche) != null) { + System.out.println("Karton \"" + suche + "\" gefunden."); + } else { + System.out.println("Konnte Karton \"" + suche + "\" nicht finden"); + } } }