throw new ApplicationException(i18n.tr("Keine zu exportierenden Daten angegeben"));
if (!(objects instanceof SammelTransfer[]))
throw new ApplicationException(i18n.tr("Die zu exportierenden Daten enthalten keine Sammel-Auftr�ge"));
DtausDateiWriter writer = null;
try
{
writer = new DtausDateiWriter(os);
for (int i=0;i<objects.length;++i)
{
SammelTransfer transfer = (SammelTransfer) objects[i];
Konto konto = transfer.getKonto();
GenericIterator buchungen = transfer.getBuchungen();
monitor.setPercentComplete(0);
monitor.setStatusText(i18n.tr("Exportiere logische Datei Nr. {0}",""+(i+1)));
double factor = 100d / buchungen.size();
int count = 0;
int success = 0;
long kundenNummer = 0;
String s = konto.getKundennummer();
try
{
kundenNummer = Long.parseLong(s);
}
catch (Exception e)
{
monitor.log(i18n.tr("Ignoriere Kundenkennung {0}: ung�ltig",s));
}
long blz = 0;
s = konto.getBLZ();
try
{
blz = Long.parseLong(s);
}
catch (Exception e)
{
monitor.log(i18n.tr("Ignoriere BLZ {0}: ung�ltig",s));
}
writer.open();
writer.setAAusfuehrungsdatum(transfer.getTermin());
writer.setABLZBank(blz);
String type = (transfer instanceof SammelUeberweisung) ? "GK" : "LK";
writer.setAGutschriftLastschrift(type);
writer.setAKonto(Long.parseLong(konto.getKontonummer()));
writer.setAKundenname(konto.getName());
writer.writeASatz();
while (buchungen.hasNext())
{
// Mit diesem Factor sollte sich der Fortschrittsbalken
// bis zum Ende der DTAUS-Datei genau auf 100% bewegen
monitor.setPercentComplete((int)((++count) * factor));
SammelTransferBuchung buchung = (SammelTransferBuchung) buchungen.next();
monitor.log(i18n.tr("Exportiere Datensatz {0}",buchung.getGegenkontoName()));
writer.setCBetragInEuro(buchung.getBetrag());
writer.setCBLZEndbeguenstigt(Long.parseLong(buchung.getGegenkontoBLZ()));
writer.setCBLZErstbeteiligtesInstitut(blz);
writer.setCKonto(Long.parseLong(buchung.getGegenkontoNummer()));
writer.setCName(buchung.getGegenkontoName());
writer.setCInterneKundennummer(kundenNummer);
writer.setCTextschluessel(mapTextschluesselToDtaus(buchung));
String[] lines = VerwendungszweckUtil.toArray(buchung);
for (String line:lines)
writer.addCVerwendungszweck(line);
writer.writeCSatz();
success++;
}
monitor.setStatusText(i18n.tr("{0} Auftr�ge erfolgreich exportiert",""+success));
}
writer.writeESatz();
}
catch (OperationCanceledException oce)
{
Logger.info("operation cancelled");
monitor.setStatusText(i18n.tr("Export abgebrochen"));
monitor.setStatus(ProgressMonitor.STATUS_CANCEL);
}
catch (ApplicationException ae)
{
throw ae;
}
catch (DtausException dta)
{
Logger.error(dta.getMessage(),dta);
throw new ApplicationException(i18n.tr(dta.getLocalizedMessage()));
}
catch (Exception e)
{
throw new RemoteException(i18n.tr("Fehler beim Export der Daten"),e);
}
finally
{
if (writer != null)
{
try
{
writer.close();
os = null;
}
catch (Exception e)
{
Logger.error("error while closing dtaus writer",e);