Unfertiges Ausleiheprozess
parent
9c65ba768f
commit
ed1d66f3d1
|
@ -179,3 +179,5 @@ fabric.properties
|
||||||
# Android studio 3.1+ serialized cache file
|
# Android studio 3.1+ serialized cache file
|
||||||
.idea/caches/build_file_checksums.ser
|
.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?
|
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?
|
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 java.util.ArrayList;
|
||||||
|
|
||||||
|
import domain.MediumZumAusleihen;
|
||||||
import domain.Medium.Medium;
|
import domain.Medium.Medium;
|
||||||
|
|
||||||
public abstract class Benutzer {
|
public abstract class Benutzer {
|
||||||
|
@ -10,7 +11,7 @@ public abstract class Benutzer {
|
||||||
private String name;
|
private String name;
|
||||||
private int alter;
|
private int alter;
|
||||||
private boolean istStudent;
|
private boolean istStudent;
|
||||||
private ArrayList<Medium> ausgeliehenenMedien;
|
private ArrayList<MediumZumAusleihen> ausgeliehenenMedien;
|
||||||
private boolean angemeldet;
|
private boolean angemeldet;
|
||||||
|
|
||||||
|
|
||||||
|
@ -56,15 +57,15 @@ public abstract class Benutzer {
|
||||||
this.istStudent = istStudent;
|
this.istStudent = istStudent;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ArrayList<Medium> getAusgeliehenenMedien() {
|
public ArrayList<MediumZumAusleihen> getAusgeliehenenMedien() {
|
||||||
return ausgeliehenenMedien;
|
return ausgeliehenenMedien;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addMedium(Medium medium) {
|
public void ausleihen(MediumZumAusleihen medium) {
|
||||||
this.ausgeliehenenMedien.add(medium);
|
this.ausgeliehenenMedien.add(medium);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void removeMedium(Medium medium) {
|
public void removeMedium(MediumZumAusleihen medium) {
|
||||||
this.ausgeliehenenMedien.remove(medium);
|
this.ausgeliehenenMedien.remove(medium);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -5,12 +5,20 @@ import java.util.stream.Stream;
|
||||||
|
|
||||||
import domain.Benutzer.*;
|
import domain.Benutzer.*;
|
||||||
import domain.ExceptionsKlassen.*;
|
import domain.ExceptionsKlassen.*;
|
||||||
|
import domain.Medium.Buch;
|
||||||
|
import domain.Medium.Medium;
|
||||||
|
|
||||||
public class BibSystem {
|
public class BibSystem {
|
||||||
private ArrayList<Benutzer> alleBibBenutzer;
|
private ArrayList<Benutzer> alleBibBenutzer;
|
||||||
|
private ArrayList<Medium> alleMediums;
|
||||||
|
private AusleiheSystem ausleiheSystem;
|
||||||
|
|
||||||
public BibSystem() {
|
public BibSystem() {
|
||||||
|
|
||||||
this.alleBibBenutzer = new ArrayList<>();
|
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 {
|
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 {
|
public boolean userAnmdelden(int kartennummer) throws BenutzerNichtGefundenException {
|
||||||
Benutzer tempUser = findBenutzer(kartennummer);
|
Benutzer tempUser = findBenutzer(kartennummer);
|
||||||
if (tempUser == null)
|
|
||||||
throw new BenutzerNichtGefundenException("Benutzer mit Kartennummer " + kartennummer + " nicht gefunden");
|
|
||||||
|
|
||||||
tempUser.setAngemeldet(true);
|
tempUser.setAngemeldet(true);
|
||||||
return tempUser.isAngemeldet();
|
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()
|
return alleBibBenutzer.stream()
|
||||||
.filter(k -> k.getBibAusweis().getKartenNummer() == kartennummer)
|
.filter(k -> k.getBibAusweis().getKartenNummer() == kartennummer)
|
||||||
.findFirst() // nimmt das erste Element des Streams, das die Filterbedingung erfüllt.
|
.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;
|
package domain.Medium;
|
||||||
|
|
||||||
import java.util.Date;
|
|
||||||
|
|
||||||
public class Brettspiel extends Medium {
|
public class Brettspiel extends Medium {
|
||||||
|
|
||||||
public Brettspiel(int kennungNummer, String title, Date erscheinungsjahr, String autor) {
|
public Brettspiel(String eindeutigeKennung, String title, int erscheinungsjahr, String autor) {
|
||||||
super(kennungNummer, title, erscheinungsjahr, autor);
|
super(eindeutigeKennung, title, erscheinungsjahr, autor);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,9 +3,16 @@ package domain.Medium;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
|
||||||
public class Buch extends Medium {
|
public class Buch extends Medium {
|
||||||
|
|
||||||
public Buch(int kennungNummer, String title, Date erscheinungsjahr, String autor) {
|
private int anzahlVerlängerung;
|
||||||
super(kennungNummer, title, erscheinungsjahr, autor);
|
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 class Cd extends Medium {
|
||||||
|
|
||||||
public Cd(int kennungNummer, String title, Date erscheinungsjahr, String autor) {
|
public Cd(String eindeutigeKennung, String title, int erscheinungsjahr, String autor) {
|
||||||
super(kennungNummer, title, erscheinungsjahr, autor);
|
super(eindeutigeKennung, title, erscheinungsjahr, autor);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,11 +1,10 @@
|
||||||
package domain.Medium;
|
package domain.Medium;
|
||||||
|
|
||||||
import java.util.Date;
|
|
||||||
|
|
||||||
public class Dvd extends Medium {
|
public class Dvd extends Medium {
|
||||||
|
|
||||||
public Dvd(int kennungNummer, String title, Date erscheinungsjahr, String autor) {
|
public Dvd(String eindeutigeKennung, String title, int erscheinungsjahr, String autor) {
|
||||||
super(kennungNummer, title, erscheinungsjahr, autor);
|
super(eindeutigeKennung, title, erscheinungsjahr, autor);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,25 +4,27 @@ import java.util.Date;
|
||||||
|
|
||||||
public abstract class Medium {
|
public abstract class Medium {
|
||||||
|
|
||||||
private int KennungNummer;
|
private String eindeutigeKennung;
|
||||||
private String title;
|
private String title;
|
||||||
private Date erscheinungsjahr;
|
private int erscheinungsjahr;
|
||||||
private String autor;
|
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();
|
super();
|
||||||
KennungNummer = kennungNummer;
|
this.eindeutigeKennung = eindeutigeKennung;
|
||||||
this.title = title;
|
this.title = title;
|
||||||
this.erscheinungsjahr = erscheinungsjahr;
|
this.erscheinungsjahr = erscheinungsjahr;
|
||||||
this.autor = autor;
|
this.autor = autor;
|
||||||
|
this.anzahlWochen = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getKennungNummer() {
|
public String getKennungNummer() {
|
||||||
return KennungNummer;
|
return eindeutigeKennung;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setKennungNummer(int kennungNummer) {
|
public void setKennungNummer(String kennungNummer) {
|
||||||
KennungNummer = kennungNummer;
|
eindeutigeKennung = kennungNummer;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getTitle() {
|
public String getTitle() {
|
||||||
|
@ -33,11 +35,11 @@ public abstract class Medium {
|
||||||
this.title = title;
|
this.title = title;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Date getErscheinungsjahr() {
|
public int getErscheinungsjahr() {
|
||||||
return erscheinungsjahr;
|
return erscheinungsjahr;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setErscheinungsjahr(Date erscheinungsjahr) {
|
public void setErscheinungsjahr(int erscheinungsjahr) {
|
||||||
this.erscheinungsjahr = erscheinungsjahr;
|
this.erscheinungsjahr = erscheinungsjahr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -48,6 +50,23 @@ public abstract class Medium {
|
||||||
public void setAutor(String autor) {
|
public void setAutor(String autor) {
|
||||||
this.autor = 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;
|
import java.util.Date;
|
||||||
|
|
||||||
public class Videospiel extends Medium {
|
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);
|
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();
|
istAdmin = eingabe.nextLine();
|
||||||
try {
|
try {
|
||||||
fassade.userRegistrieren(name, type, alter, istAdmin);
|
fassade.userRegistrieren(name, type, alter, istAdmin);
|
||||||
|
registrierenProzess = false;
|
||||||
startBibProgramm();
|
startBibProgramm();
|
||||||
} catch (FalscheEingabeException e) {
|
} catch (FalscheEingabeException e) {
|
||||||
System.out.println(e.getMessage());
|
System.out.println(e.getMessage());
|
||||||
|
|
Loading…
Reference in New Issue