PR2-Testate/LibrarySystem/domain/benutzern/Benutzer.java

102 lines
3.1 KiB
Java

package LibrarySystem.domain.benutzern;
import LibrarySystem.domain.medien.*;
import java.util.*;
public abstract class Benutzer {
private String kartennummer;
private String name;
private int alter;
private List<Medium> ausleihen;
private double offeneGebuehren;
private boolean gebuehrenBezahlt;
Benutzer(String kartennummer, String name, int alter, String prefix) {
this.kartennummer = prefix + kartennummer;
this.name = name;
this.alter = alter;
this.ausleihen = new ArrayList<>();
this.offeneGebuehren = 0.0;
this.gebuehrenBezahlt = true; // Zu Beginn keine Gebühren offen
}
//Getter und Setter
public String getKartennummer() {return kartennummer;}
public void setkartennummer(String kartennummer) {this.kartennummer = kartennummer;}
public String getName() {return name;}
public void setName(String name) {this.name = name;}
public int getAlter() {return alter;}
public void setAlter(int alter) {this.alter = alter;}
public List<Medium> getAusleihen() {return ausleihen;}
// Abstrakte Methode für die Jahresgebühr
public abstract double getJahresgebuehr();
//Methode fürs Ausleihen
public void ausleihen(Medium medium) {
if(!medium.istAusgeliehen()){
ausleihen.add(medium);
medium.ausleihen();
//System.out.println(name + " hat \"" + medium.getTitel() + "\" ausgeliehen. Rückgabefrist: " + medium.getRueckgabedatum());
} else{
System.out.println("Das Medium ist bereits ausgeliehen.");
}
//gebuehrenBezahlt = false; // Neue Ausleihe bedeutet potenziell offene Gebühren
}
//Methode für die Rückgabe
public void rueckgabe(Medium medium) {
if(ausleihen.contains(medium)){
ausleihen.remove(medium);
medium.rueckgabeMedium();
}
else{
System.out.println("Dieses Medium von diesem Benutzer nicht ausgeliehen.");
}
}
//Methode zum Anzeigen der Ausleihen eines Benutzers
public void anzeigenAusleihen() {
System.out.println("Aktuell ausgeliehene Medien von " + name + ":\n");
for (Medium medium : ausleihen) {
System.out.println("- " + medium.getTitel() + " (Fällig am: " + medium.getRueckgabedatum() + ")\n");
}
}
public double setOffeneGebuehren(double gebuehren){
return gebuehren+= gebuehren;
}
public double getOffeneGebuehren() {
return offeneGebuehren;
}
public boolean sindGebuehrenBezahlt() {
return gebuehrenBezahlt;
}
/*public void aktualisiereGebuehren(Date aktuellesDatum) {
if (gebuehrenBezahlt) return; // Keine Aktualisierung erforderlich, wenn bezahlt
offeneGebuehren = 0.0;
for (Medium ausleihe : ausleihen) {
offeneGebuehren += ausleihe.berechneGebuehren(aktuellesDatum);
}
}*/
public void bezahleGebuehren() {
offeneGebuehren = 0.0;
gebuehrenBezahlt = true;
}
@Override
public String toString() {
return "Name: " + name + ", Alter: " + alter + ", Kartennummer: " + kartennummer;
}
}