PR2-Testate/LibrarySystem/domain/medien/Medium.java

103 lines
3.0 KiB
Java

package LibrarySystem.domain.medien;
import java.time.LocalDate;
import java.time.temporal.ChronoUnit;
import java.util.Calendar;
import java.util.Date;
public abstract class Medium implements Ausleihbar{
private String ID;
private String titel;
private String autor;
private int erscheinungsjahr;
private String medienart;
private boolean ausgeliehen;
private Date rueckgabedatum;
public int verlaengerungen;
public Medium(String ID, String titel, String autor, int erscheinungsjahr, String medienart, int verlaengerungen) {
this.ID = ID;
this.titel = titel;
this.autor = autor;
this.erscheinungsjahr = erscheinungsjahr;
this.medienart = medienart;
this.ausgeliehen = false;
this.verlaengerungen =verlaengerungen;
}
//Getter und Setter
public String getID() {
return ID;
}
public void setID(String ID) {
this.ID = ID;
}
public String getTitel() {
return titel;
}
public void setTitel(String titel) {
this.titel = titel;
}
public String getAutor() {
return autor;
}
public void setAutor(String autor) {
this.autor = autor;
}
public int getErscheinungsjahr() {
return erscheinungsjahr;
}
public void setErscheinungsjahr(int erscheinungsjahr) {
this.erscheinungsjahr = erscheinungsjahr;
}
public String getMedienart() {return medienart;}
public void setMedienart(String Medienart) {this.medienart = Medienart;}
public boolean istAusgeliehen() {return ausgeliehen;}
public void setAusgeliehen() {this.ausgeliehen = true;}
public void setRueckgabe(){this.ausgeliehen = false;}
public Date getRueckgabedatum(){return rueckgabedatum;}
public void setRueckgabedatum(Date rueckgabedatum){this.rueckgabedatum = rueckgabedatum;}
public int getVerlaengerungen() {return verlaengerungen;}
public void setVerlaengerungen(int verlaengerungen) {}
//Andere nützliche Methoden
public Date rechneRueckgabedatum(Date systemDatum){
Calendar calendar = Calendar.getInstance();
calendar.setTime(systemDatum);
calendar.add(Calendar.DAY_OF_YEAR, getAusleihdauer());
this.rueckgabedatum = calendar.getTime();
return rueckgabedatum;
}
//Abstrakte Methoden
public abstract int getAusleihdauer();
public abstract boolean istVerlaengerbar();
@Override
public void ausleihen() {
if(!istAusgeliehen()){
setAusgeliehen();
} else{
System.out.println("Medium ist bereits ausgeliehen.");
}
}
@Override
public void rueckgabeMedium() {
setRueckgabe();
}
@Override
public boolean istOverdue() {
return new Date().after(getRueckgabedatum());
}
@Override
public String toString() {
return "ID: " + ID + ", Titel: " + titel + ", Autor: " + autor + ", Erscheinungsjahr: " + erscheinungsjahr;
}
}