Code- Verbesserung

MedienAusleihen
obai 2024-11-12 19:43:41 +01:00
parent 387ce18c3a
commit e373060af4
12 changed files with 96 additions and 66 deletions

View File

@ -1,38 +1,49 @@
package domain.AusleiheSystem; package domain.AusleiheSystem;
import java.util.ArrayList; import java.util.*;
import domain.Benutzer.Benutzer; import domain.Benutzer.Benutzer;
import domain.ExceptionsKlassen.MediumNichtGefundenException; import domain.ExceptionsKlassen.MediumNichtGefundenException;
import domain.Medium.Brettspiel; import domain.Medium.*;
import domain.Medium.Medium;
public class AusleiheSystem { public class AusleiheSystem {
private ArrayList<Medium> mediums; private ArrayList<Medium> mediums;
private Benutzer benutzer; private Date ausleiheBeginn;
private Date ausleiheEnde;
private Calendar calendar;
private int wocheAnzahlZuAusleihen;
public AusleiheSystem(ArrayList<Medium> mediums) { public AusleiheSystem(ArrayList<Medium> mediums) {
this.mediums = mediums; this.mediums = mediums;
} }
public void mediumAusleihen(Benutzer benutzer, String eindutigenummer) throws MediumNichtGefundenException { public void mediumAusleihen(Benutzer benutzer, String eindutigenummer) throws MediumNichtGefundenException {
this.benutzer = benutzer;
Medium mediumAusleihen = findMedium(eindutigenummer); Medium mediumAusleihen = findMedium(eindutigenummer);
MediumZumAusleihen medium; this.ausleiheBeginn = new Date();
if (mediumAusleihen instanceof Brettspiel) this.calendar = Calendar.getInstance();
calendar.setTime(ausleiheBeginn);
medium = new MediumZumAusleihen(false,mediumAusleihen); if (mediumAusleihen instanceof Buch || mediumAusleihen instanceof Videospiel)
else wocheAnzahlZuAusleihen = 4;
medium = new MediumZumAusleihen(true,mediumAusleihen);
else if (mediumAusleihen instanceof Dvd)
benutzer.ausleihen(medium); wocheAnzahlZuAusleihen = 1;
else if (mediumAusleihen instanceof Cd || mediumAusleihen instanceof Brettspiel)
wocheAnzahlZuAusleihen = 2;
calendar.add(Calendar.WEEK_OF_YEAR, wocheAnzahlZuAusleihen);
this.ausleiheEnde = calendar.getTime();
benutzer.ausleihen(new MediumZumAusleihen(mediumAusleihen,ausleiheBeginn,ausleiheEnde,wocheAnzahlZuAusleihen));
benutzer.getAusgeliehenenMedien().stream() benutzer.getAusgeliehenenMedien().stream()
.forEach(System.out::println); .forEach(System.out::println);
} }
private Medium findMedium(String eindeutigeKennung) throws MediumNichtGefundenException { private Medium findMedium(String eindeutigeKennung) throws MediumNichtGefundenException {
return mediums.stream() return mediums.stream()
.filter(m -> m.getKennungNummer().equalsIgnoreCase(eindeutigeKennung)) .filter(m -> m.getKennungNummer().equalsIgnoreCase(eindeutigeKennung))

View File

@ -7,44 +7,53 @@ import domain.Medium.Medium;
public class MediumZumAusleihen { public class MediumZumAusleihen {
private Date ausleihefrist; private SimpleDateFormat simpleFormatter;
private SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss"); private Date ausleiheBeginn, ausleiheEnde;
private String formattedDate;
private Medium medium; private Medium medium;
private boolean verlängerbar; private int wochenAnzahl;
public MediumZumAusleihen(boolean verlängerbar, Medium medium) { public MediumZumAusleihen(Medium medium,Date ausleiheBeginn, Date ausleiheEnde, int wochenAnzahl) {
this.ausleihefrist = new Date();
formattedDate = formatter.format(this.ausleihefrist);
this.verlängerbar = verlängerbar;
this.medium = medium; this.medium = medium;
} this.ausleiheBeginn = ausleiheBeginn;
this.ausleiheEnde = ausleiheEnde;
this.wochenAnzahl = wochenAnzahl;
public Date getAusleihefrist() { this.simpleFormatter = new SimpleDateFormat("dd-MM-yyyy HH:mm");
return ausleihefrist;
} }
public Date getAusleiheBeginn() {
public void setAusleihefrist(Date ausleihefrist) { return ausleiheBeginn;
this.ausleihefrist = ausleihefrist;
} }
public void setAusleiheBeginn(Date ausleiheBeginn) {
this.ausleiheBeginn = ausleiheBeginn;
}
public Date getAusleiheEnde() {
return ausleiheEnde;
}
public void setAusleiheEnde(Date ausleiheEnde) {
this.ausleiheEnde = ausleiheEnde;
}
public Medium getMedium() { public Medium getMedium() {
return medium; return medium;
} }
public void setMedium(Medium medium) { public void setMedium(Medium medium) {
this.medium = medium; this.medium = medium;
} }
public int getWochenAnzahl() {
@Override return wochenAnzahl;
public String toString() {
return "MediumZumAusleihen [ausleihefrist=" + formattedDate + ", verlängerbar="
+ verlängerbar + ", medium=" + medium + "]";
} }
public void setWochenAnzahl(int wochenAnzahl) {
this.wochenAnzahl = wochenAnzahl;
}
@Override
public String toString() {
return "Ausgeliehene Medium: Ausleihe Beginn= " +simpleFormatter.format(ausleiheBeginn) + " ,Ausleihe Ende= " + simpleFormatter.format(ausleiheEnde) + " ,Wochenanzahl zum Ausleihen= "+ this.wochenAnzahl+" ,Medium= " + medium.toString();
}
} }

View File

@ -60,20 +60,12 @@ public class BibSystem {
private void mediumAufladen() { private void mediumAufladen() {
alleMediums.add(new Buch("B001","Effektives Java Programmieren",2018,"Joshua Bloch")); alleMediums.add(new Buch("B001","Effektives Java Programmieren",2018,true,"Joshua Bloch"));
alleMediums.add(new Buch("B00","Effektives C++ Programmieren",2012,"XY Müller")); alleMediums.add(new Buch("B00","Effektives C++ Programmieren",2012,true,"XY Müller"));
alleMediums.add(new Brettspiel("BG001","Die Siedler von Catan",2012,"XY Müller")); alleMediums.add(new Brettspiel("BG001","Die Siedler von Catan",2012,true,"XY Müller"));
} }
private boolean checkIfUserImSystemAngemeldetIst(int kartennummer) { private boolean checkIfUserImSystemAngemeldetIst(int kartennummer) {
return alleBibBenutzer.stream() return alleBibBenutzer.stream()

View File

@ -6,6 +6,7 @@ import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import domain.BibSystem; import domain.BibSystem;
import domain.Benutzer.Benutzer;
import domain.ExceptionsKlassen.BenutzerNichtAngemeldetException; import domain.ExceptionsKlassen.BenutzerNichtAngemeldetException;
import domain.ExceptionsKlassen.BenutzerNichtGefundenException; import domain.ExceptionsKlassen.BenutzerNichtGefundenException;
import domain.ExceptionsKlassen.FalscheEingabeException; import domain.ExceptionsKlassen.FalscheEingabeException;
@ -26,8 +27,6 @@ class AusleihenJTest {
bib.userRegistrieren("obai", "student", 15, "nein"); bib.userRegistrieren("obai", "student", 15, "nein");
bib.userAnmdelden(1000); bib.userAnmdelden(1000);
bib.mediumAusleihen(1000,"B001" ); bib.mediumAusleihen(1000,"B001" );
bib.mediumAusleihen(1000,"B00" );
bib.mediumAusleihen(1000,"BG001" );
} }

View File

@ -4,8 +4,8 @@ package domain.Medium;
public class Brettspiel extends Medium { public class Brettspiel extends Medium {
private String Verlag; private String Verlag;
public Brettspiel(String eindeutigeKennung, String title, int erscheinungsjahr, String Verlag) { public Brettspiel(String eindeutigeKennung, String title, int erscheinungsjahr,boolean verlängerbar, String Verlag) {
super(eindeutigeKennung, title, erscheinungsjahr); super(eindeutigeKennung, title, erscheinungsjahr, verlängerbar);
this.Verlag = Verlag; this.Verlag = Verlag;
} }

View File

@ -5,8 +5,8 @@ import java.util.Date;
public class Buch extends Medium { public class Buch extends Medium {
private String autor; private String autor;
public Buch(String eindeutigeKennung, String title, int erscheinungsjahr, String autor) { public Buch(String eindeutigeKennung, String title, int erscheinungsjahr,boolean verlängerbar, String autor) {
super(eindeutigeKennung, title, erscheinungsjahr); super(eindeutigeKennung, title, erscheinungsjahr,verlängerbar);
this.autor = autor; this.autor = autor;
} }
public String getAutor() { public String getAutor() {

View File

@ -5,8 +5,8 @@ import java.util.Date;
public class Cd extends Medium { public class Cd extends Medium {
private String Künstler; private String Künstler;
public Cd(String eindeutigeKennung, String title, int erscheinungsjahr, String Künstler) { public Cd(String eindeutigeKennung, String title, int erscheinungsjahr,boolean verlängerbar, String Künstler) {
super(eindeutigeKennung, title, erscheinungsjahr); super(eindeutigeKennung, title, erscheinungsjahr,verlängerbar);
this.Künstler = Künstler; this.Künstler = Künstler;
} }
public String getKünstler() { public String getKünstler() {

View File

@ -4,8 +4,8 @@ package domain.Medium;
public class Dvd extends Medium { public class Dvd extends Medium {
private String regisseur; private String regisseur;
public Dvd(String eindeutigeKennung, String title, int erscheinungsjahr, String regisseur) { public Dvd(String eindeutigeKennung, String title, int erscheinungsjahr,boolean verlängerbar,String regisseur) {
super(eindeutigeKennung, title, erscheinungsjahr); super(eindeutigeKennung, title, erscheinungsjahr,verlängerbar);
this.regisseur = regisseur; this.regisseur = regisseur;
} }

View File

@ -7,12 +7,14 @@ public abstract class Medium {
private String eindeutigeKennung; private String eindeutigeKennung;
private String title; private String title;
private int erscheinungsjahr; private int erscheinungsjahr;
private boolean verlängerbar;
public Medium(String eindeutigeKennung, String title, int erscheinungsjahr) { public Medium(String eindeutigeKennung, String title, int erscheinungsjahr,boolean verlängerbar) {
super(); super();
this.eindeutigeKennung = eindeutigeKennung; this.eindeutigeKennung = eindeutigeKennung;
this.title = title; this.title = title;
this.erscheinungsjahr = erscheinungsjahr; this.erscheinungsjahr = erscheinungsjahr;
this.verlängerbar = verlängerbar;
} }
public String getKennungNummer() { public String getKennungNummer() {
@ -38,12 +40,27 @@ public abstract class Medium {
public void setErscheinungsjahr(int erscheinungsjahr) { public void setErscheinungsjahr(int erscheinungsjahr) {
this.erscheinungsjahr = erscheinungsjahr; this.erscheinungsjahr = erscheinungsjahr;
} }
public String getEindeutigeKennung() {
return eindeutigeKennung;
}
public void setEindeutigeKennung(String eindeutigeKennung) {
this.eindeutigeKennung = eindeutigeKennung;
}
public boolean isVerlängerbar() {
return verlängerbar;
}
public void setVerlängerbar(boolean verlängerbar) {
this.verlängerbar = verlängerbar;
}
@Override @Override
public String toString() { public String toString() {
return "eindeutigeKennung=" + eindeutigeKennung + ", title=" + title + ", erscheinungsjahr=" return "eindeutigeKennung=" + eindeutigeKennung + ", title=" + title + ", erscheinungsjahr="
+ erscheinungsjahr ; + erscheinungsjahr + " ,Verlängerbar= " + verlängerbar ;
} }

View File

@ -6,8 +6,8 @@ public class Videospiel extends Medium {
private String plattform; private String plattform;
public Videospiel(String kennungNummer, String title, int erscheinungsjahr, String plattform) { public Videospiel(String kennungNummer, String title, int erscheinungsjahr,boolean verlängerbar, String plattform) {
super(kennungNummer, title, erscheinungsjahr); super(kennungNummer, title, erscheinungsjahr, verlängerbar);
this.plattform = plattform; this.plattform = plattform;
} }

View File

@ -1,5 +1,6 @@
package main; package main;
import tui.Tui; import tui.Tui;
public class Main { public class Main {

View File

@ -31,6 +31,7 @@ public class Tui {
System.out.println("6.Ausgeliehene Gegenstände, Fälligkeitsdaten und aufgelaufene Gebühren anzeigen"); System.out.println("6.Ausgeliehene Gegenstände, Fälligkeitsdaten und aufgelaufene Gebühren anzeigen");
System.out.println("7.Verlängern der Leihfrist"); System.out.println("7.Verlängern der Leihfrist");
System.out.println("8.Verbuchen von überfälligen Gebühren (Admin)"); System.out.println("8.Verbuchen von überfälligen Gebühren (Admin)");
System.out.println("9.Abmlden");
System.out.println("Wählen Sie bitte eine Aktion aus: "); System.out.println("Wählen Sie bitte eine Aktion aus: ");
System.out.print(">"); System.out.print(">");
aktion = eingabe.nextLine(); aktion = eingabe.nextLine();