Tytuł taki nic niemówiący w sumie, ale ciężko mi to nazwać jednym zdaniem. Cel jaki chcę osiągnąć to formularz www, który narzuca userowi pola, które ma wypełnić, ale liczba/rodzaj/opis tych pól jest możliwa do zmiany przez admina (bez ingerencji w kod). Czyli np. mamy formularz konfiguracji wyboru samochodu (punkt wyjścia) i jednocześnie klasę:
class Samochod{
String typ;
boolean klimatyzacja;
String kolor;
}
no teraz mogłyby się pojawić różne samochody, które mają różne własności, czyli pola klasy np.
class NissanMicra extends Samochod{
boolean smiesznaNaklejka;
}
class MercedesS {
boolean pokrowiecNaKapcie;
List<JakasKlasa> cosFajnego;
}
Oczywiście to zadziała, ale jak dojdzie nowy model samochodu to trzeba dopisać nową klasę i prawdopodobnie nowy formularz. Pytanie w jaki sposób zaprojektować aplikację, aby administrator mógł sam dodawać nowe typy samochodów, a formularz dynamicznie dostosowywał do danych. Na razie jedyny pomysł jaki mi przychodzi do głowy to coś w ty stylu:
class Samochod{
String model;
List<PoleString> teksty;
List<PoleRadio> radio;
}
class SamochodSchemat{
String model;
List<PoleString> teksty;
List<PoleRadio> radio;
}
class PoleString{
String nazwa;
String wartosc;
}
class PoleRadio{
String nazwa;
boolean wartosc;
}
Tworzymy SamochodSchemat dla każdego modelu jaki chcemy mieć w bazie, a jak mamy wyświetlić formularz to tworzymy obiekt Samochod i rzutujemy na niego wybrany SamochodSchemat. Nie wiem czy to zadziała, ale powinno. Jedyny 'problem' to fakt, że na formularzu dostaniemy pogrupowane pytania: wszystkie tekstowe obok siebie, wszystkie radio obok siebie (choć można by to rozwiązać jakoś na przykład javascriptem - ale to najmniejszy problem).
No ale to tylko mój pomysł i dam sobie rękę obciąć, że właśnie próbuje wymyślić koło :) Będę wdzięczny za wszystkie podpowiedzi.