code-Verbesserung

MedienAusleihen
obai 2024-11-13 21:24:12 +01:00
parent ab42c268d1
commit 75579d5c4b
5 changed files with 84 additions and 22 deletions

View File

@ -2,7 +2,10 @@ package domain;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map.Entry;
import java.util.stream.Collector;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import domain.AusleiheSystem.Ausleihe;
@ -29,15 +32,28 @@ public class BibSystem {
mediumsAufladen();
}
public List<String> mediumDurchsuchen(String title, String bibKartenNummer) throws MediumNichtGefundenException, BenutzerNichtAngemeldetException {
if (!checkIfUserImSystemAngemeldetIst(bibKartenNummer))
throw new BenutzerNichtAngemeldetException("Sie müssen sich erst im System anmelden");
List<String> treffer = medien.values().stream()
.filter(t -> t.getMedium().getTitle().equalsIgnoreCase(title))
.map(t -> t.toString())
.collect(Collectors.toCollection(ArrayList::new));
return (ArrayList<String>) treffer;
}
public void userRegistrieren(String name, String type, int alter,String istAdmin) throws FalscheEingabeException {
Benutzer bibbenutzer = Registieren.userRegistrieren(name, type, alter, istAdmin);
alleBibBenutzer.add(bibbenutzer);
Benutzer bibBenutzer = Registieren.userRegistrieren(name, type, alter, istAdmin);
alleBibBenutzer.add(bibBenutzer);
}
public boolean userAnmdelden(String kartennummer) throws BenutzerNichtGefundenException {
Benutzer tempUser = findBenutzer(kartennummer);
tempUser.setAngemeldet(true);
return tempUser.isAngemeldet();
Benutzer bibBenutzer = findBenutzer(kartennummer);
bibBenutzer.setAngemeldet(true);
return bibBenutzer.isAngemeldet();
}
public void mediumAusleihen(String kartennummer, String eindeutigeKennung) throws Exception {
@ -55,7 +71,7 @@ public class BibSystem {
}
private void mediumsAufladen() {
medien.put("B001",new Mediumverwalter (true,10,4, new Buch("Effektives Java Programmieren",2018,"Joshua Bloch")));
medien.put("B001",new Mediumverwalter (true,10,4, new Buch("t",2018,"Joshua Bloch")));
medien.put("B00", new Mediumverwalter (true,10,4, new Buch("Effektives Java Programmieren",2018,"Joshua Bloch")));
medien.put("BG001", new Mediumverwalter (false,10,4, new Brettspiel("Die Siedler von Catan",2012,"XY Müller")));
@ -63,10 +79,8 @@ public class BibSystem {
private boolean checkIfUserImSystemAngemeldetIst(String kartennummer) {
return alleBibBenutzer.stream()
.anyMatch(user -> user.isAngemeldet());
}
private Benutzer findBenutzer(String kartennummer) throws BenutzerNichtGefundenException {

View File

@ -0,0 +1,34 @@
package domain;
import static org.junit.jupiter.api.Assertions.*;
import java.util.ArrayList;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import domain.Benutzer.Benutzer;
import domain.ExceptionsKlassen.BenutzerNichtAngemeldetException;
import domain.ExceptionsKlassen.BenutzerNichtGefundenException;
import domain.ExceptionsKlassen.FalscheEingabeException;
import domain.ExceptionsKlassen.MediumNichtGefundenException;
import domain.UserRegistieren.Registieren;
class MediumDurchsuchenTest {
BibSystem fassade;
@BeforeEach
void setUp() throws Exception {
fassade = new BibSystem();
}
@Test
void testMediumsuchen() throws FalscheEingabeException, BenutzerNichtGefundenException, MediumNichtGefundenException, BenutzerNichtAngemeldetException {
fassade.userRegistrieren("obai", "student", 15, "nein");
assertTrue(fassade.userAnmdelden("K1000"));
ArrayList<String> treffer = (ArrayList<String>) fassade.mediumDurchsuchen("Effektives Java Programmieren", "B001");
System.out.println(treffer);
}
}

View File

@ -6,22 +6,19 @@ import domain.ExceptionsKlassen.FalscheEingabeException;
public class Registieren {
public static Benutzer userRegistrieren(String name, String type, int alter,String istAdmin) throws FalscheEingabeException {
if (name.isEmpty() || type.isEmpty() || alter <= 0 || istAdmin.isEmpty())
throw new FalscheEingabeException("Geben Sie alle Felder korrekt ein");
Benutzer benutzer;
Ausweis ausweis;
boolean istStudentOderSchüler = (type.equalsIgnoreCase("schüler") || type.equalsIgnoreCase("student"))? true : false;
if (istAdmin.equalsIgnoreCase("nein")) {
ausweis = new Ausweis("K");
benutzer = new Mitarbeiter(ausweis,name,alter,istStudentOderSchüler);
}
else {
ausweis = new Ausweis("A");
benutzer = new Kunde(ausweis,name,alter,istStudentOderSchüler);
if (!name.isEmpty() && (type.equalsIgnoreCase("schüler") || type.equalsIgnoreCase("student")) && istAdmin.equalsIgnoreCase("nein")) {
ausweis = new Ausweis("K");
benutzer = new Kunde(ausweis,name,alter,false);
}
else if (!name.isEmpty() && type.equalsIgnoreCase("mitarbeiter") && istAdmin.equalsIgnoreCase("ja")) {
ausweis = new Ausweis("A");
benutzer = new Mitarbeiter(ausweis,name,alter,true);
}
else
throw new FalscheEingabeException("Falsche Eingabe");
return benutzer;

View File

@ -9,6 +9,7 @@ import domain.BibSystem;
import domain.Benutzer.Ausweis;
import domain.Benutzer.Benutzer;
import domain.Benutzer.Kunde;
import domain.Benutzer.Mitarbeiter;
import domain.ExceptionsKlassen.FalscheEingabeException;
import domain.Medium.Buch;
import domain.Medium.Mediumverwalter;
@ -22,9 +23,25 @@ class RegistrierenTest {
}
@Test
void test() throws FalscheEingabeException {
void testKunde() throws FalscheEingabeException {
Benutzer benutzer = Registieren.userRegistrieren("obai", "student", 15, "nein");
// True, da Kunde ist
assertTrue(benutzer instanceof Kunde);
String bibKartenNummer = "K1000";
assertTrue(benutzer.getBibAusweis().getKartenNummer().equalsIgnoreCase(bibKartenNummer));
}
@Test
void testMitarbeiter() throws FalscheEingabeException {
Benutzer benutzer = Registieren.userRegistrieren("obai", "mitarbeiter", 15, "ja");
// True, da Mitarbeiter ist
assertTrue(benutzer instanceof Mitarbeiter);
String bibKartenNummer = "A1001";
assertTrue(benutzer.getBibAusweis().getKartenNummer().equalsIgnoreCase(bibKartenNummer));
}
}