ReportStructureBuilder
Abstrakcyjna fabryka do tworzenia struktur raportów.
Używa wzorca Template Method do zdefiniowania szkieletu procesu budowania raportu. Klasy dziedziczące implementują konkretne części:
Zapytanie SQL
Definicje kolumn
Akcje użytkownika
Przykład implementacji:
class UsersReportStructureBuilder : ReportStructureBuilder() {
override fun getReportName() = "users"
override fun buildQuery() = Query("SELECT id, name, email FROM users")
override fun buildColumns() = mapOf(
"id" to NumberColumn("ID"),
"name" to StringColumn("Nazwa"),
"email" to StringColumn("Email")
)
}Functions
Główna metoda budująca. Orkiestruje proces i nie powinna być nadpisywana.
Buduje i zwraca mapę kolumn dla raportu.
Buduje i zwraca domyślną akcję dla wierszy. Domyślnie zwraca null.
Buduje i zwraca listę akcji dla menu "Dodaj". Domyślnie zwraca pustą listę.
Buduje i zwraca obiekt Query dla raportu.
Buduje fragment zapytania dla szybkiego wyszukiwania. Nadpisz tę metodę, aby dostarczyć niestandardową logikę wyszukiwania.
Buduje i zwraca listę akcji dla wierszy. Domyślnie zwraca pustą listę, ponieważ nie każdy raport ma akcje.
Metoda szablonowa, która składa raport z części dostarczonych przez metody abstrakcyjne.
Zwraca nazwę raportu.