
Reprezentacja błędów i ostrzeżeń
W tym dziale znajduje się opis:
- Klas reprezentujących błędy i ostrzeżenia
- Monitoringu/statystyk związanego z przetwarzaniem danych o błędach
Rysunek 1 przedstawia diagram klas odpowiedzialnych za reprezentację oraz monitoring danych o błędach.

Klasy reprezentujące błędy i ostrzeżenia
- BrokenDataInfo - posiada informację o błędnych wierszach (BrokenRowInfo) oraz statystyki powstałe w wyniku walidacji w trakcie importu danych.
- BrokenRowInfo - posiada informację o błędnych komórkach (BrokenCellInfo) w wierszu
- metoda canBeConverted() informuje nas czy wiersz pomimo błędów może być konwertowany; zwraca false gdy błędny wiersz posiada błąd typu ERROR
- metoda isRowError() zwraca true gdy informacje o błędach zapisane w BrokenCellInfo dotyczą całego wiersza, a nie pojedyńczych komórek
- BrokenCellInfo - zawiera informacje o błędzie (ErrorInfo) oraz numer kolumny w wierszu, gdzie występuje błąd
- ErrorInfo - zawiera typ błędu ErrorType oraz opcjonalne parametry; obiekty BrokenCellInfo mogą współdzielić obikety klasy ErrorInfo
- ErrorType - opisuje typ błędu; obiekty tej klasy mogą być współdzielone przez obiekty ErrorInfo
- ErrorTypeWithReplacement - specjalny typ błędu z dodatkową informacją o sugerowanej wartości zastępczej dla błędnej komórki
Monitoring związany z przetwarzaniem danych o błędach
Poniższy diagram przedstawia interfejsy i klasy odpowiedzialne na monitorowanie zmian dokonywanych na danych źródłowych (bezpośrednio przez użytkownika lub automatycznie podczas importu).

Interfejs IRawDataObserver definiuje zdarzenia, które podlegają rejestrowaniu. Jego domyślna implementacja (FileDataRawObserver zapisuje wszystkie informacje do pliku z logami. Plik o nazwie identycznej z importowanym zbiorem danych (DataSet) z suffixem .log zapisywany jest w katalogu .
Obecnie rejestrowane są dwa rodzaje zdarzeń:
- usunięcie wiersza (notifyRemoved - bezpośrednio przez użytkownika lub automatycznie jeśli wiersz zawierał błąd, który uniemożliwiał poprawny import
- zmiana wartości w danej komórce (notifyValueChanged)
Interfejs IRawDataMonitorable jest wspólny dla wszystkich klas, w których zachodzą monitorowalne zdarzenia podczas importu. Definiuje dwie metody pozwalającę na rejestrowanie i usuwanie monitorów. Klasy DataRow i TabularData wykorzystują zarejestrowane monitory do rejestrowania zdarzeń jakie występują podczas importu.