Nullpointer-Exception bei Import von korrupter CSV-Datei

Hier melden JVerein-Benutzer ihre Fehler

Moderator: heiner

Antworten
umbilo
Beiträge: 18
Registriert: Samstag 18. September 2010, 14:09

Nullpointer-Exception bei Import von korrupter CSV-Datei

Beitrag von umbilo »

Hallo Heiner,

ein "Fehler" der zwar wahrscheinlich nicht oft jemanden trifft, der mich jedoch einiges an Zeit gekostet hat:
Ich habe mir mit Excel - ich weiß nicht wie - eine CSV-Datei erstellt die leider nicht in jeder Zeile die gleiche Anzahl an Spalten hatte. Wie der Zufall es wollte fehlten in einigen Zeilen die letzen (in der Exceltabelle leeren !!) Eigenschafts-Spalten.

Beispiel:

Code: Alles auswählen

Mitglieds_Nr;Personenart;Anrede;Titel;Nachname;Vorname;Strasse;Plz;Ort;Geburtsdatum;Geschlecht;Bankleitzahl;Kontonummer;Zahlungsart;Zahler;Telefon_privat;Telefon_dienstlich;Email;Eintritt;Beitragsart_1;Beitrag_1;Austritt;Kuendigung;;Eigenschaft_Datengruppe;Vermerk1;Eigenschaft_Status;Eigenschaft_Einladung
800;j;;;ABC-Firma;;Abc-Straße;12345;MeinOrt;;;;;u;;;;;;KeinBeitrag;0;;;;2 Spender;;Sp;Einladung
803;n;Frau;;ABC;DEFG;Asdf-Str. 50;54321;NochOrt;;w;;;u;;;;;;KeinBeitrag;0;;;;2 Spender;Test-Vermerk;
Dies führt zu einer Null-Pointerexception die du abfängst. Leider wird der Benutzer nur sehr spärlich über das Problem informiert:
[04.10.2010 21:22:13] ID= 800 NAME= ABC-Firma
[04.10.2010 21:22:13] ID= 803 NAME= ABC
[04.10.2010 21:22:13] nicht importiert: null
Daher ist mein Vorschlag die Import.java etwa wie folgt zu ändern (Patch gegen CVS-Version 1.30)

Code: Alles auswählen

382c382,383
<         for (String feld : eigenschaftenspalten)
---
>         
>         try 
384,393c385,403
<           String eig = results.getString(feld);
<           if (eig.length() == 0)
<           {
<             continue;
<           }
<           Eigenschaften eigenschaften = (Eigenschaften) Einstellungen
<               .getDBService().createObject(Eigenschaften.class, null);
<           eigenschaften.setMitglied(m.getID());
<           eigenschaften.setEigenschaft(getEigenschaftID(eig));
<           eigenschaften.store();
---
>             for (String feld : eigenschaftenspalten)
>             {
>               String eig = results.getString(feld);
>               if (eig.length() == 0)
>               {
>                 continue;
>               }
>               Eigenschaften eigenschaften = (Eigenschaften) Einstellungen
>                   .getDBService().createObject(Eigenschaften.class, null);
>               eigenschaften.setMitglied(m.getID());
>               eigenschaften.setEigenschaft(getEigenschaftID(eig));
>               eigenschaften.store();
>             }
>         }
>         catch (Exception e)
>         {
>               monitor.log(" Datensatz unvollständing (Eigenschaften) -> Import wird abgebrochen: ID= " + results.getString("Mitglieds_Nr") + " NAME= "
>                       + results.getString("Nachname") + " " + e.getMessage());     
>               return;
;)

Viele Grüße,
Umbilo
Benutzeravatar
heiner
Administrator
Beiträge: 4509
Registriert: Freitag 30. Oktober 2009, 16:44
JVerein-Version: aktuelle Entwicklerversion
Betriebssystem: W10
Kontaktdaten:

Re: Nullpointer-Exception bei Import von korrupter CSV-Datei

Beitrag von heiner »

Hallo umbilo,

Eclipse meldet mir "Clipboard does not contain valid patch.". Stellst du mir den Patch mal als Datei per Mail zur Verfügung.

Heiner
PS: Denkt daran, eure Vereine unter viewforum.php?f=3 vorzustellen.
Antworten