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(){ Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.DAY_OF_YEAR, getAusleihdauer()); this.rueckgabedatum = calendar.getTime(); return rueckgabedatum; } //Abstrakte Methoden public abstract int getAusleihdauer(); public abstract boolean istVerlaengerbar(); public abstract int verlaengern(); @Override public void ausleihen() { if(!istAusgeliehen()){ setAusgeliehen(); rechneRueckgabedatum(); } 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; } }