Houston mam problem, taki intefejs Dao wspólny dla dwóch implementacji
public interface StudentsDao {
List<Student> list();
void save(Student student);
void initializeDataSource();
}
jedna wykorzystująca bazę danych (korzystam z hibernate), druga moja StudentsTxtDaoImpl
. W przypadku mojej implementacji chciałabym informować komponenty wyżej (żeby na końcu w widoku użytkownik dostał powiadomienie) jeżeli podczas wczytywania pliku wystąpi np. błędna linijka (co się może zdarzyć, bo plik czasem będzie edytowany ręcznie) lub IOException
. W implementacji z Hibernate nie muszę rzucać żadnymi wyjątkami. Zastanawiam się nad 3 wyjściami:
- Łapać
IOException
w swojej implementacjiStudentsTxtDaoImpl
i zrobić interfejstxtDaoClient
dla klienta tej implementacji, który będzie otrzymywać info z tej implementacji np.
} catch (IOException io) {
txtDaoClient.loadError();
io.printStackTrace();
}
albo w przypadku błędnej linijki txtDaoClient.incorrectLine(line);
-
Dodać
throws IOException
i jakieś inne swoje wyjątki do wspólnego interfejsu (mimo, że implementacja z Hibernate wyjątkami nie rzuca) i tym sposobem przekazywać wszystko wyżej. -
Stworzyć osobną klasę
FileChecker
w modelu czy gdzieś żeby najpierw sprawdziła plik, powiadomiła które linijki złe i czy ścieżka okey a potem dopiero użyć StudentsTxtDaoImpl
PS Mam wstrzykiwacza IoC Springa ;]