package model.data.xml.writers;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Collection;
import main.config.Config;
import model.CurrentDate;
import model.InRent;
import model.VideoUnit;
import model.Warning;
import model.data.exceptions.RecordNotFoundException;
/**
* InvoiceWriter.java
* @author Christopher Bertels (chbertel@uos.de)
* 18.09.2008
*
* Schreibt Invoices (Quittungen) in Textdateien.
*/
public class InvoiceWriter extends AbstractTextWriter
{
// default-werte, falls nicht in config.xml gesetzt
private String inVoiceFolder;
private String warningInvoiceFolder;
/**
* Konstruktor für InvoiceWriter.
*/
public InvoiceWriter()
{
this.inVoiceFolder =
Config.get().getSetting(Config.Settings.INVOICEFOLDER);
this.warningInvoiceFolder =
Config.get().getSetting(Config.Settings.WARNINGINVOICEFOLDER);
}
/**
* Schreibt Quittung für Mahnung in Textdatei.
* @param warning Die Mahnung, für die die Quittung
* erstellt werden soll.
* @param videoUnits Die VideoUnits, die einst dem InRent dieser Warning gehört haben.
*/
public void writeInvoiceFor(Warning warning, Collection<VideoUnit> videoUnits)
{
try
{
// Ordner erstellen, falls er nicht existiert.
createDirIfNeeded(this.warningInvoiceFolder);
FileWriter fWriter = new FileWriter(this.warningInvoiceFolder + "/"
+ warning.getInRent().getID() + ".txt");
StringBuilder sb = new StringBuilder();
sb.append("Quittung fuer Mahnung" + formatLeft("", 16));
sb.append(" Datum: " + CurrentDate.get() + "\n");
sb.append("========================================================\n");
sb.append("\n");
sb.append("KundenNr.: \t\t\t" + warning.getInRent().getCustomer().getID() + "\n");
sb.append("Kundenname: \t\t" + warning.getInRent().getCustomer().getName() + "\n");
sb.append("\n");
sb.append("Filme:\n");
for(VideoUnit unit : videoUnits)
{
sb.append(formatInt(unit.getID(), 10) + unit.getVideo().getTitle());
try
{
sb.append(formatLeft("(" + Float.toString(unit.getVideo().getPriceCategory().getPrice())
+ " Euro/Woche)", 18));
}
catch (RecordNotFoundException e)
{
e.printStackTrace();
}
sb.append("\n");
}
sb.append("\n");
sb.append("Rueckgabefrist: \t" + warning.getInRent().getReturnDate() + "\n");
sb.append("Rueckgabedatum: \t" + CurrentDate.get() + "\n");
sb.append("Mahnungskosten: \t" + Warning.getWarningPrice() + " Euro" + "\n");
sb.append("\n\n");
sb.append("========================================================\n");
sb.append("Unterschrift Kunde:\n\n");
sb.append("Unterschrift Mitarbeiter:");
fWriter.append(sb.toString());
fWriter.flush();
fWriter.close();
}
catch(IOException e)
{
e.printStackTrace();
}
}
/**
* Schreibt Quittung für Ausleihe in Textdatei.
* @param inRent Die Ausleihe, für die die Quittung
* erstellt werden soll.
*/
public void writeInvoiceFor(InRent inRent)
{
try
{
// Ordner erstellen, falls er nicht existiert
createDirIfNeeded(inVoiceFolder);
FileWriter fWriter = new FileWriter(inVoiceFolder + inRent.getID() + ".txt");
StringBuilder sb = new StringBuilder();
sb.append("Quittung fuer AusleihNr.: " + formatInt(inRent.getID(), 10));
sb.append(" Datum: " + CurrentDate.get() + "\n");
sb.append("=======================================================\n");
sb.append("\n");
sb.append("KundenNr.: \t\t\t" + inRent.getCustomer().getID() + "\n");
sb.append("Kundenname: \t\t" + inRent.getCustomer().getName() + "\n");
sb.append("\n");
sb.append("Filme:\n");
for(VideoUnit unit : inRent.getVideoUnits())
{
sb.append(formatInt(unit.getID(), 10) + unit.getVideo().getTitle());
try
{
sb.append(formatLeft("(" + Float.toString(unit.getVideo().getPriceCategory().getPrice())
+ " Euro/Woche)", 18));
}
catch (RecordNotFoundException e)
{
e.printStackTrace();
}
sb.append("\n");
}
sb.append("\n");
sb.append("Rueckgabetermin: \t" + inRent.getReturnDate() + "\n");
String weeks = inRent.getDuration() > 1 ? " Wochen" : " Woche";
sb.append("Ausleihdauer: \t\t" + inRent.getDuration() + weeks + " \n");
sb.append("Ausleihpreis: \t\t" + inRent.getPrice() + " Euro" + "\n");
sb.append("\n\n");
sb.append("=======================================================\n");
sb.append("Unterschrift Kunde:\n\n");
sb.append("Unterschrift Mitarbeiter:");
fWriter.append(sb.toString());
fWriter.flush();
fWriter.close();
}
catch (IOException e)
{
e.printStackTrace();
}
}
}