try
{
reader = new XmlReader(is, new ObjectFactory() {
public GenericObject create(String type, String id, Map values) throws Exception
{
AbstractDBObject object = (AbstractDBObject) Settings.getDBService().createObject(loader.loadClass(type),null);
Iterator i = values.keySet().iterator();
while (i.hasNext())
{
String name = (String) i.next();
object.setAttribute(name,values.get(name));
}
return object;
}
});
if (monitor != null)
monitor.setStatusText(i18n.tr("Lese Datei ein"));
Konto konto = null;
try
{
// Wir fragen das Konto grundsaetzlich manuell ab. Siehe BUGZILLA 700
KontoAuswahlDialog d = new KontoAuswahlDialog(KontoAuswahlDialog.POSITION_CENTER);
konto = (Konto) d.open();
}
catch (OperationCanceledException oce)
{
Logger.info("import cancelled");
return;
}
if (konto == null)
throw new ApplicationException(i18n.tr("Kein Konto ausgew�hlt"));
int created = 0;
int error = 0;
SepaSammelTransfer currentTransfer = null;
DBObject object = null;
while ((object = (DBObject) reader.read()) != null)
{
if (monitor != null)
{
monitor.log(i18n.tr("Datensatz {0}", "" + (created+1)));
if (created > 0 && created % 10 == 0) // nur geschaetzt
monitor.addPercentComplete(1);
}
try
{
// Ist noetig, damit die Buchungen die neue ID des Transfers kriegen
if (object instanceof SepaSammelTransfer)
{
currentTransfer = (SepaSammelTransfer) object;
currentTransfer.setKonto(konto);
}
else
{
((SepaSammelTransferBuchung)object).setSammelTransfer(currentTransfer);
}
object.store();
created++;
try
{
Application.getMessagingFactory().sendMessage(new ImportMessage(object));
}