Napisz program, który pozwoli tworzyć dynamicznie formularze do wprowadzania danych na podstawie skompilowanych klas (ładowanych ze wskazanego miejsca dowolnym ładowaczem, zawierających zaprojektowane wcześniej adnotacje, posiadających metody serializacji danych do formatu json). Praca z progamem polegać ma na: 1. wyborze formularza (nazwa formularza może pokrywać się z nazwą klasy lub może być wygenerowana metodami klasy) 2. wypełnieniu formularza (na formularzu mają pojawić się etykiety i pola zgodnie z tym, co zapisano w adnotacjach), 3. zapamiętaniu danych z formularza w pliku (dane wprowadzne na formularzu powinny być wykorzystane do utworzenia obiektu danej klasy, zaś ich zapamiętanie w pliku ma się odbywać poprzez serializację tego obiektu) W adnotowanych, ładowanych dynamicznie klasach powinny istnieć odpowiednie gettery i settery oraz bezargumentowy konstruktor. Założono, że obsługiwane będą pola, których typ jest jednym z typów podstawowych lub typ String (POJO). Oprócz specjalnych adnotacji powinny być obsłużone również adnotacje z pakietu javax.validation.constraints. Mają one pomóc w walidacji wartości przekazanych na formularzu wprowadzania danych. Walidacja może odbywać się na dwa sposoby: 1. jak w przykładowych testach (źródła w załączeniu): najpierw jest tworzony obiekt, potem obiekt ten jest sprawdzony walidatorem, i jeśli są jakieś błędy, na formularzu pojawiają się odpowiednie komunikaty. 2. przez prześwietlenie adnotacji: zanim odpalony zostanie odpowiedni setter aplikacja odczyta z adnotacji, czy wartość odczytana z pola spełnia określone warunki, jeśli nie - pojawia się odpowiedni komunikat, jeśli tak - następuje przepisanie wartości do obiektu odpowiednim setterem. Materiały: https://docs.oracle.com/javaee/6/tutorial/doc/gircz.html, http://www.baeldung.com/javax-validation, http://tomasz.kubik.staff.iiar.pwr.wroc.pl/dydaktyka/Java/Zadania/example.zip