parser.setLogischeDatei(i+1);
// Im E-Satz steht die Anzahl der Datensaetze. Die brauchen wir, um
// den Fortschrittsbalken mit sinnvollen Daten fuettern zu koennen.
ASatz a = parser.getASatz();
ESatz e = parser.getESatz();
double factor = 100d / e.getAnzahlDatensaetze();
int count = 0;
int success = 0;
int error = 0;
DBService service = de.willuhn.jameica.hbci.Settings.getDBService();
CSatz c = null;
while ((c = parser.next()) != null)
{
try
{
// Mit diesem Factor sollte sich der Fortschrittsbalken
// bis zum Ende der DTAUS-Datei genau auf 100% bewegen
monitor.setPercentComplete((int)((++count) * factor));
monitor.log(i18n.tr("Importiere Datensatz {0}",c.getNameEmpfaenger()));
// Gewuenschtes Objekt erstellen
final DBObject skel = service.createObject(((MyIOFormat)format).type,null);
// Mit Daten befuellen lassen
create(skel,context,c,a);
success++;
// Jetzt noch ggf. andere ueber das neue Objekt informieren
try
{
Application.getMessagingFactory().sendMessage(new ImportMessage(skel));
}
catch (Exception ex)
{
Logger.error("error while sending import message",ex);
}
}
catch (ApplicationException ace)
{
error++;
StringBuffer sb = new StringBuffer();
sb.append(i18n.tr("BLZ: {0}",Long.toString(c.getBlzEndbeguenstigt())));
sb.append("\n");
sb.append(i18n.tr("Kontonummer: {0}",Long.toString(c.getKontonummer())));
sb.append("\n");
sb.append(i18n.tr("Name: {0}",c.getNameEmpfaenger()));
sb.append("\n");
sb.append(i18n.tr("Betrag: {0}",HBCI.DECIMALFORMAT.format(c.getBetragInEuro())));
String s = i18n.tr("Fehler beim Import eines Datensatzes\n\n{0}\n\n{1}\n\nDatensatz �berspringen und Import fortsetzen?",new String[]{sb.toString(),ace.getMessage()});
if (!Application.getCallback().askUser(s))
{
monitor.setStatusText(i18n.tr("Import abgebrochen"));
monitor.setStatus(ProgressMonitor.STATUS_CANCEL);
return;
}
monitor.log(" " + ace.getMessage());
monitor.log(" " + i18n.tr("�berspringe Datensatz"));
}
catch (OperationCanceledException oce)
{
throw oce;
}
catch (Exception e1)
{
error++;
Logger.error("unable to import transfer",e1);
monitor.log(" " + i18n.tr("Fehler beim Import des Datensatzes, �berspringe Datensatz"));
}
}
if (error > 0)
{
monitor.setStatus(ProgressMonitor.STATUS_ERROR);
monitor.setStatusText(" " + i18n.tr("{0} Datens�tze importiert, {1} wegen Fehlern �bersprungen",new String[]{""+success,""+error}));
}
else
{
monitor.setStatusText(" " + i18n.tr("{0} Datens�tze erfolgreich importiert",""+success));
}
}
}
catch (OperationCanceledException oce)
{
Logger.info("operation cancelled");
monitor.setStatusText(i18n.tr("Import abgebrochen"));
monitor.setStatus(ProgressMonitor.STATUS_CANCEL);
}
catch (Exception e)
{
// Fehlermeldung von obantoo durchreichen - siehe http://www.onlinebanking-forum.de/phpBB2/viewtopic.php?p=64455#64455
String msg = e.getMessage();
if (msg == null || msg.length() == 0)
throw new RemoteException(i18n.tr("Fehler beim Import der DTAUS-Daten"),e);
throw new RemoteException(msg,e);
}
finally