Unfertiges Ausleiheprozess
parent
9c65ba768f
commit
ed1d66f3d1
|
@ -179,3 +179,5 @@ fabric.properties
|
|||
# Android studio 3.1+ serialized cache file
|
||||
.idea/caches/build_file_checksums.ser
|
||||
|
||||
/.classpath
|
||||
/.project
|
||||
|
|
|
@ -17,3 +17,9 @@ Zum Ausleihen von Medien muss sich der Benutzer laut Anforderung vorher im Syste
|
|||
|
||||
Frage: Wie wird jedoch der Ausleihprozess gehandhabt, wenn der Benutzer die Medien direkt vor Ort in der Bibliothek ausleihen möchte?
|
||||
Ist eine Anmeldung im System dafür zwingend erforderlich, oder gibt es eine andere Möglichkeit für den Vor-Ort-Ausleihprozess?
|
||||
|
||||
Aspekt4:
|
||||
gibt es in der Bib begrenzte Anzahl von der Mediums oder wie?
|
||||
|
||||
Aspekt5:
|
||||
wie viel soll die Benutzer Gebühren bezahlen
|
||||
|
|
|
@ -1,5 +0,0 @@
|
|||
package domain;
|
||||
|
||||
public class Ausleihe {
|
||||
|
||||
}
|
|
@ -0,0 +1,33 @@
|
|||
package domain;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import domain.Benutzer.Benutzer;
|
||||
import domain.ExceptionsKlassen.MediumNichtGefundenException;
|
||||
import domain.Medium.Medium;
|
||||
|
||||
public class AusleiheSystem {
|
||||
|
||||
private ArrayList<Medium> mediums;
|
||||
private Benutzer benutzer;
|
||||
|
||||
public AusleiheSystem(ArrayList<Medium> mediums) {
|
||||
this.mediums = mediums;
|
||||
}
|
||||
|
||||
public void mediumAusleihen(Benutzer benutzer, String eindutigenummer) throws MediumNichtGefundenException {
|
||||
this.benutzer = benutzer;
|
||||
Medium mediumAusleihen = findMedium(eindutigenummer);
|
||||
MediumZumAusleihen medium = new MediumZumAusleihen();
|
||||
medium.getMedium(mediumAusleihen);
|
||||
benutzer.getAusgeliehenenMedien().add(medium);
|
||||
System.out.println(benutzer.getAusgeliehenenMedien().toString());
|
||||
}
|
||||
|
||||
private Medium findMedium(String eindeutigeKennung) throws MediumNichtGefundenException {
|
||||
return mediums.stream()
|
||||
.filter(m -> m.getKennungNummer().equalsIgnoreCase(eindeutigeKennung))
|
||||
.findFirst()
|
||||
.orElseThrow(() -> new MediumNichtGefundenException("Das ausgewählte Medium ist nicht verfügbar"));
|
||||
}
|
||||
}
|
|
@ -2,6 +2,7 @@ package domain.Benutzer;
|
|||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import domain.MediumZumAusleihen;
|
||||
import domain.Medium.Medium;
|
||||
|
||||
public abstract class Benutzer {
|
||||
|
@ -10,7 +11,7 @@ public abstract class Benutzer {
|
|||
private String name;
|
||||
private int alter;
|
||||
private boolean istStudent;
|
||||
private ArrayList<Medium> ausgeliehenenMedien;
|
||||
private ArrayList<MediumZumAusleihen> ausgeliehenenMedien;
|
||||
private boolean angemeldet;
|
||||
|
||||
|
||||
|
@ -56,15 +57,15 @@ public abstract class Benutzer {
|
|||
this.istStudent = istStudent;
|
||||
}
|
||||
|
||||
public ArrayList<Medium> getAusgeliehenenMedien() {
|
||||
public ArrayList<MediumZumAusleihen> getAusgeliehenenMedien() {
|
||||
return ausgeliehenenMedien;
|
||||
}
|
||||
|
||||
public void addMedium(Medium medium) {
|
||||
public void ausleihen(MediumZumAusleihen medium) {
|
||||
this.ausgeliehenenMedien.add(medium);
|
||||
}
|
||||
|
||||
public void removeMedium(Medium medium) {
|
||||
public void removeMedium(MediumZumAusleihen medium) {
|
||||
this.ausgeliehenenMedien.remove(medium);
|
||||
}
|
||||
|
||||
|
|
|
@ -5,12 +5,20 @@ import java.util.stream.Stream;
|
|||
|
||||
import domain.Benutzer.*;
|
||||
import domain.ExceptionsKlassen.*;
|
||||
import domain.Medium.Buch;
|
||||
import domain.Medium.Medium;
|
||||
|
||||
public class BibSystem {
|
||||
private ArrayList<Benutzer> alleBibBenutzer;
|
||||
private ArrayList<Medium> alleMediums;
|
||||
private AusleiheSystem ausleiheSystem;
|
||||
|
||||
public BibSystem() {
|
||||
|
||||
this.alleBibBenutzer = new ArrayList<>();
|
||||
this.alleMediums = new ArrayList<>();
|
||||
this.ausleiheSystem = new AusleiheSystem(alleMediums);
|
||||
mediumAufladen();
|
||||
}
|
||||
|
||||
public String userRegistrieren(String name, String type, int alter,String istAdmin) throws FalscheEingabeException {
|
||||
|
@ -32,19 +40,48 @@ public class BibSystem {
|
|||
}
|
||||
|
||||
public boolean userAnmdelden(int kartennummer) throws BenutzerNichtGefundenException {
|
||||
Benutzer tempUser = findBenutzer(kartennummer);
|
||||
if (tempUser == null)
|
||||
throw new BenutzerNichtGefundenException("Benutzer mit Kartennummer " + kartennummer + " nicht gefunden");
|
||||
|
||||
Benutzer tempUser = findBenutzer(kartennummer);
|
||||
tempUser.setAngemeldet(true);
|
||||
return tempUser.isAngemeldet();
|
||||
}
|
||||
|
||||
private Benutzer findBenutzer(int kartennummer) {
|
||||
public void mediumAusleihen(int kartennummer, String eindeutigeKennung) throws BenutzerNichtAngemeldetException, BenutzerNichtGefundenException, MediumNichtGefundenException {
|
||||
Benutzer tempBenutzer = findBenutzer(kartennummer);
|
||||
|
||||
if (!checkIfUserImSystemAngemeldetIst(kartennummer))
|
||||
throw new BenutzerNichtAngemeldetException("Sie müssen sich erst im System anmelden");
|
||||
|
||||
|
||||
ausleiheSystem.mediumAusleihen(tempBenutzer,eindeutigeKennung);
|
||||
|
||||
}
|
||||
|
||||
private void mediumAufladen() {
|
||||
|
||||
alleMediums.add(new Buch("B001","Effektives Java Programmieren",2018,"Joshua Bloch"));
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
private boolean checkIfUserImSystemAngemeldetIst(int kartennummer) {
|
||||
|
||||
return alleBibBenutzer.stream()
|
||||
.anyMatch(user -> user.isAngemeldet());
|
||||
|
||||
}
|
||||
|
||||
private Benutzer findBenutzer(int kartennummer) throws BenutzerNichtGefundenException {
|
||||
return alleBibBenutzer.stream()
|
||||
.filter(k -> k.getBibAusweis().getKartenNummer() == kartennummer)
|
||||
.findFirst() // nimmt das erste Element des Streams, das die Filterbedingung erfüllt.
|
||||
.orElse(null);
|
||||
.orElseThrow(() -> new BenutzerNichtGefundenException ("Benutzer mit Kartennummer " + kartennummer + " nicht gefunden"));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -0,0 +1,8 @@
|
|||
package domain.ExceptionsKlassen;
|
||||
|
||||
public class BenutzerNichtAngemeldetException extends Exception {
|
||||
|
||||
public BenutzerNichtAngemeldetException(String error) {
|
||||
super(error);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,8 @@
|
|||
package domain.ExceptionsKlassen;
|
||||
|
||||
public class MediumNichtGefundenException extends Exception {
|
||||
|
||||
public MediumNichtGefundenException(String error) {
|
||||
super(error);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,32 @@
|
|||
package domain.JTests;
|
||||
|
||||
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.BenutzerNichtAngemeldetException;
|
||||
import domain.ExceptionsKlassen.BenutzerNichtGefundenException;
|
||||
import domain.ExceptionsKlassen.FalscheEingabeException;
|
||||
import domain.ExceptionsKlassen.MediumNichtGefundenException;
|
||||
|
||||
class AusleihenJTest {
|
||||
|
||||
private BibSystem bib;
|
||||
|
||||
@BeforeEach
|
||||
void setUp() throws Exception {
|
||||
this.bib = new BibSystem();
|
||||
}
|
||||
|
||||
@Test
|
||||
void test() throws FalscheEingabeException, BenutzerNichtAngemeldetException, BenutzerNichtGefundenException, MediumNichtGefundenException {
|
||||
|
||||
bib.userRegistrieren("obai", "student", 15, "nein");
|
||||
bib.userAnmdelden(1000);
|
||||
bib.mediumAusleihen(1000,"B001" );
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -1,11 +1,10 @@
|
|||
package domain.Medium;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
public class Brettspiel extends Medium {
|
||||
|
||||
public Brettspiel(int kennungNummer, String title, Date erscheinungsjahr, String autor) {
|
||||
super(kennungNummer, title, erscheinungsjahr, autor);
|
||||
public Brettspiel(String eindeutigeKennung, String title, int erscheinungsjahr, String autor) {
|
||||
super(eindeutigeKennung, title, erscheinungsjahr, autor);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -3,9 +3,16 @@ package domain.Medium;
|
|||
import java.util.Date;
|
||||
|
||||
public class Buch extends Medium {
|
||||
|
||||
public Buch(int kennungNummer, String title, Date erscheinungsjahr, String autor) {
|
||||
super(kennungNummer, title, erscheinungsjahr, autor);
|
||||
|
||||
private int anzahlVerlängerung;
|
||||
public Buch(String eindeutigeKennung, String title, int erscheinungsjahr, String autor) {
|
||||
super(eindeutigeKennung, title, erscheinungsjahr, autor);
|
||||
}
|
||||
|
||||
public int getAnzahlVerlängerung() {
|
||||
return anzahlVerlängerung;
|
||||
}
|
||||
public void setAnzahlVerlängerung(int anzahlVerlängerung) {
|
||||
this.anzahlVerlängerung = anzahlVerlängerung;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -4,8 +4,8 @@ import java.util.Date;
|
|||
|
||||
public class Cd extends Medium {
|
||||
|
||||
public Cd(int kennungNummer, String title, Date erscheinungsjahr, String autor) {
|
||||
super(kennungNummer, title, erscheinungsjahr, autor);
|
||||
public Cd(String eindeutigeKennung, String title, int erscheinungsjahr, String autor) {
|
||||
super(eindeutigeKennung, title, erscheinungsjahr, autor);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1,11 +1,10 @@
|
|||
package domain.Medium;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
public class Dvd extends Medium {
|
||||
|
||||
public Dvd(int kennungNummer, String title, Date erscheinungsjahr, String autor) {
|
||||
super(kennungNummer, title, erscheinungsjahr, autor);
|
||||
public Dvd(String eindeutigeKennung, String title, int erscheinungsjahr, String autor) {
|
||||
super(eindeutigeKennung, title, erscheinungsjahr, autor);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -4,25 +4,27 @@ import java.util.Date;
|
|||
|
||||
public abstract class Medium {
|
||||
|
||||
private int KennungNummer;
|
||||
private String eindeutigeKennung;
|
||||
private String title;
|
||||
private Date erscheinungsjahr;
|
||||
private int erscheinungsjahr;
|
||||
private String autor;
|
||||
private int anzahlWochen;
|
||||
|
||||
public Medium(int kennungNummer, String title, Date erscheinungsjahr, String autor) {
|
||||
public Medium(String eindeutigeKennung, String title, int erscheinungsjahr, String autor) {
|
||||
super();
|
||||
KennungNummer = kennungNummer;
|
||||
this.eindeutigeKennung = eindeutigeKennung;
|
||||
this.title = title;
|
||||
this.erscheinungsjahr = erscheinungsjahr;
|
||||
this.autor = autor;
|
||||
this.anzahlWochen = 0;
|
||||
}
|
||||
|
||||
public int getKennungNummer() {
|
||||
return KennungNummer;
|
||||
public String getKennungNummer() {
|
||||
return eindeutigeKennung;
|
||||
}
|
||||
|
||||
public void setKennungNummer(int kennungNummer) {
|
||||
KennungNummer = kennungNummer;
|
||||
public void setKennungNummer(String kennungNummer) {
|
||||
eindeutigeKennung = kennungNummer;
|
||||
}
|
||||
|
||||
public String getTitle() {
|
||||
|
@ -33,11 +35,11 @@ public abstract class Medium {
|
|||
this.title = title;
|
||||
}
|
||||
|
||||
public Date getErscheinungsjahr() {
|
||||
public int getErscheinungsjahr() {
|
||||
return erscheinungsjahr;
|
||||
}
|
||||
|
||||
public void setErscheinungsjahr(Date erscheinungsjahr) {
|
||||
public void setErscheinungsjahr(int erscheinungsjahr) {
|
||||
this.erscheinungsjahr = erscheinungsjahr;
|
||||
}
|
||||
|
||||
|
@ -48,6 +50,23 @@ public abstract class Medium {
|
|||
public void setAutor(String autor) {
|
||||
this.autor = autor;
|
||||
}
|
||||
|
||||
public int getAnzahlWochen() {
|
||||
return anzahlWochen;
|
||||
}
|
||||
|
||||
public void setAnzahlWochen(int anzahlWochen) {
|
||||
this.anzahlWochen = anzahlWochen;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Medium [eindeutigeKennung=" + eindeutigeKennung + ", title=" + title + ", erscheinungsjahr="
|
||||
+ erscheinungsjahr + ", autor=" + autor + ", anzahlWochen=" + anzahlWochen + "]";
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -3,9 +3,17 @@ package domain.Medium;
|
|||
import java.util.Date;
|
||||
|
||||
public class Videospiel extends Medium {
|
||||
|
||||
public Videospiel(int kennungNummer, String title, Date erscheinungsjahr, String autor) {
|
||||
|
||||
private int anzahlVerlängerung;
|
||||
public Videospiel(String kennungNummer, String title, int erscheinungsjahr, String autor) {
|
||||
super(kennungNummer, title, erscheinungsjahr, autor);
|
||||
}
|
||||
|
||||
public int getAnzahlVerlängerung() {
|
||||
return anzahlVerlängerung;
|
||||
}
|
||||
public void setAnzahlVerlängerung(int anzahlVerlängerung) {
|
||||
this.anzahlVerlängerung = anzahlVerlängerung;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -0,0 +1,45 @@
|
|||
package domain;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
import domain.Medium.Medium;
|
||||
|
||||
public class MediumZumAusleihen {
|
||||
|
||||
private Date ausleihefrist;
|
||||
private Medium medium;
|
||||
|
||||
|
||||
public void getMedium(Medium medium) {
|
||||
this.ausleihefrist = new Date();
|
||||
this.medium = medium;
|
||||
}
|
||||
|
||||
|
||||
public Date getAusleihefrist() {
|
||||
return ausleihefrist;
|
||||
}
|
||||
|
||||
|
||||
public void setAusleihefrist(Date ausleihefrist) {
|
||||
this.ausleihefrist = ausleihefrist;
|
||||
}
|
||||
|
||||
|
||||
public Medium getMedium() {
|
||||
return medium;
|
||||
}
|
||||
|
||||
|
||||
public void setMedium(Medium medium) {
|
||||
this.medium = medium;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "MediumZumAusleihen [ausleihefrist=" + ausleihefrist + ", medium=" + medium.toString() + "]";
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -86,6 +86,7 @@ public class Tui {
|
|||
istAdmin = eingabe.nextLine();
|
||||
try {
|
||||
fassade.userRegistrieren(name, type, alter, istAdmin);
|
||||
registrierenProzess = false;
|
||||
startBibProgramm();
|
||||
} catch (FalscheEingabeException e) {
|
||||
System.out.println(e.getMessage());
|
||||
|
|
Loading…
Reference in New Issue