AnmeldungProzess implementieren und dann testen

Anmelden
3009594 2024-11-10 22:09:50 +01:00
parent 9b1dd72e8b
commit 9c65ba768f
10 changed files with 143 additions and 15 deletions

View File

@ -0,0 +1,29 @@
private Benutzer findBenutzer(int kartennummer) {
alleBibBenutzer.stream()
.filter(k -> k.getBibAusweis().getKartenNummer() == kartennummer)
}
}
wie kann ich hier Benutzer mit Stream zurückgeben?
Antwort:
Um in der Methode findBenutzer den Benutzer mit der angegebenen Kartennummer zurückzugeben,
kannst du den stream()-Ansatz verwenden und das Ergebnis filtern.
Schließlich kannst du mit findFirst() das erste (und in diesem Fall das einzige) Element des Streams
abrufen, das die Bedingung erfüllt. Wenn kein Benutzer mit dieser Kartennummer vorhanden ist, könnte findFirst() ein Optional-Objekt ohne Wert zurückgeben.
Hier ist die angepasste Methode:
private Benutzer findBenutzer(int kartennummer) {
return alleBibBenutzer.stream()
.filter(k -> k.getBibAusweis().getKartenNummer() == kartennummer)
.findFirst()
.orElse(null); // Gibt null zurück, falls kein Benutzer mit der Kartennummer gefunden wurde
}
Erklärung der Anpassung
stream(): Wandelt die ArrayList in einen Stream um.
filter(...): Filtert den Stream nach Benutzern, deren Kartennummer mit der gesuchten übereinstimmt.
findFirst(): Nimmt das erste Element des Streams, das die Filterbedingung erfüllt.
orElse(null): Gibt null zurück, falls kein Benutzer gefunden wurde.

View File

@ -1,4 +1,4 @@
package domain;
package domain.Benutzer;
public class Ausweis {
private int kartenNummer;

View File

@ -1,7 +1,7 @@
package domain.Benutzer;
import java.util.ArrayList;
import domain.Ausweis;
import domain.Medium.Medium;
public abstract class Benutzer {
@ -11,6 +11,8 @@ public abstract class Benutzer {
private int alter;
private boolean istStudent;
private ArrayList<Medium> ausgeliehenenMedien;
private boolean angemeldet;
public Benutzer(Ausweis bibAusweis, String name, int alter, boolean istStudent) {
super();
@ -19,6 +21,7 @@ public abstract class Benutzer {
this.alter = alter;
this.istStudent = istStudent;
this.ausgeliehenenMedien = new ArrayList<>();
this.angemeldet = false;
}
public Ausweis getBibAusweis() {
@ -64,11 +67,19 @@ public abstract class Benutzer {
public void removeMedium(Medium medium) {
this.ausgeliehenenMedien.remove(medium);
}
public boolean isAngemeldet() {
return angemeldet;
}
public void setAngemeldet(boolean angemeldet) {
this.angemeldet = angemeldet;
}
@Override
public String toString() {
return "Benutzer [bibAusweisNummer= " + bibAusweis.getKartenNummer() + ", name=" + name + ", alter=" + alter + ", istStudent="
+ istStudent + ", ausgeliehenenMedien=" + ausgeliehenenMedien + "]";
+ istStudent + ", ist im System Online = " + angemeldet + ", ausgeliehenenMedien=" + ausgeliehenenMedien + "]";
}

View File

@ -1,7 +1,5 @@
package domain.Benutzer;
import domain.Ausweis;
public class Kunde extends Benutzer {
public Kunde(Ausweis bibAusweis, String name, int alter, boolean istStudent) {

View File

@ -1,7 +1,5 @@
package domain.Benutzer;
import domain.Ausweis;
public class Mitarbeiter extends Benutzer {
public Mitarbeiter(Ausweis bibAusweis, String name, int alter, boolean istStudent) {

View File

@ -1,19 +1,21 @@
package domain;
import java.util.ArrayList;
import java.util.stream.Stream;
import domain.Benutzer.*;
import domain.ExceptionsKlassen.*;
public class BibSystem {
private ArrayList<Benutzer> benutzer;
private ArrayList<Benutzer> alleBibBenutzer;
public BibSystem() {
this.benutzer = new ArrayList<>();
this.alleBibBenutzer = new ArrayList<>();
}
public String addUser(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 Fielder ein");
public String 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 = new Ausweis();
@ -24,7 +26,25 @@ public class BibSystem {
else
benutzer = new Kunde(ausweis,name,alter,istStudentOderSchüler);
alleBibBenutzer.add(benutzer);
return benutzer.toString();
}
public boolean userAnmdelden(int kartennummer) throws BenutzerNichtGefundenException {
Benutzer tempUser = findBenutzer(kartennummer);
if (tempUser == null)
throw new BenutzerNichtGefundenException("Benutzer mit Kartennummer " + kartennummer + " nicht gefunden");
tempUser.setAngemeldet(true);
return tempUser.isAngemeldet();
}
private Benutzer findBenutzer(int kartennummer) {
return alleBibBenutzer.stream()
.filter(k -> k.getBibAusweis().getKartenNummer() == kartennummer)
.findFirst() // nimmt das erste Element des Streams, das die Filterbedingung erfüllt.
.orElse(null);
}
}

View File

@ -0,0 +1,9 @@
package domain.ExceptionsKlassen;
public class BenutzerNichtGefundenException extends Exception {
public BenutzerNichtGefundenException(String error) {
super(error);
}
}

View File

@ -0,0 +1,39 @@
package domain.JTests;
import static org.junit.Assert.assertThrows;
import static org.junit.jupiter.api.Assertions.*;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import domain.BibSystem;
import domain.ExceptionsKlassen.BenutzerNichtGefundenException;
import domain.ExceptionsKlassen.FalscheEingabeException;
class AnmeldenJTest {
private BibSystem bib;
@BeforeEach
void setUp() throws Exception {
this.bib = new BibSystem();
}
@Test
void testUSerIstNichtAngemeldet() {
// Status => True
assertThrows(BenutzerNichtGefundenException.class, () -> bib.userAnmdelden(1110));
}
@Test
void testUSerIstAngemeldet() throws FalscheEingabeException, BenutzerNichtGefundenException {
// Status => True
bib.userRegistrieren("obai", "student", 16, "nein");
int kartennummer = 1000;
assertTrue(bib.userAnmdelden(kartennummer));
}
}

View File

@ -5,8 +5,8 @@ import static org.junit.jupiter.api.Assertions.*;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import domain.Ausweis;
import domain.BibSystem;
import domain.Benutzer.Ausweis;
import domain.Benutzer.Benutzer;
import domain.Benutzer.Kunde;
import domain.ExceptionsKlassen.FalscheEingabeException;
@ -24,7 +24,7 @@ class RegistrierenTest {
String name = "obai";
String type = "schüler";
String istAdmin = "nein";
String test = bib.addUser(name, type, 15,istAdmin);
String test = bib.userRegistrieren(name, type, 15,istAdmin);
assertTrue(test.contains(name));
System.out.println(test);

View File

@ -3,6 +3,7 @@ package tui;
import java.util.Scanner;
import domain.BibSystem;
import domain.ExceptionsKlassen.BenutzerNichtGefundenException;
import domain.ExceptionsKlassen.FalscheEingabeException;
public class Tui {
@ -36,11 +37,33 @@ public class Tui {
case "1":
registrierenProzess();
break;
case "2":
anmeldenProzess();
break;
}
}
}
private void anmeldenProzess() {
int kartennummer;
System.out.println("Geben Sie bitte die Kartennummer Ihres Bibliotheksausweises an: ");
System.out.print(">");
kartennummer = eingabe.nextInt();
try {
if (fassade.userAnmdelden(kartennummer))
System.out.println("Sie sind nun im System Angemeldet");
} catch (BenutzerNichtGefundenException e) {
System.out.println(e.getMessage());
}
startBibProgramm();
}
private void registrierenProzess() {
boolean registrierenProzess = true;
String name;
@ -62,7 +85,7 @@ public class Tui {
System.out.print(">");
istAdmin = eingabe.nextLine();
try {
fassade.addUser(name, type, alter, istAdmin);
fassade.userRegistrieren(name, type, alter, istAdmin);
startBibProgramm();
} catch (FalscheEingabeException e) {
System.out.println(e.getMessage());
@ -70,5 +93,6 @@ public class Tui {
}
}
}
}