EN · DE · RU · FR · ES

#794: BuchungssatzImpl.java

Adapter, projectforge-business/src/main/java/org/projectforge/reporting/impl/BuchungssatzImpl.java

Что это — паттерн Adapter

Прокси/адаптер для BuchungssatzDO (JPA-entity бухгалтерской проводки в пакете org.projectforge.business.fibu.kost). Реализует интерфейс Buchungssatz из пакета org.projectforge.reporting. Javadoc: "Proxy for BuchungssatzDO". Это классический паттерн Adapter: JPA-entity не может реализовать reporting-интерфейс напрямую (отдельный модуль, разные зависимости), поэтому создаётся обёртка которая делегирует все вызовы к DO.

143 строки — самая большая Impl-обёртка в reporting-пакете. В конструкторе принимает BuchungssatzDO, извлекает связанные объекты (Konto, GegenKonto, Kost1, Kost2) и оборачивает их в соответствующие Impl-классы: KontoImpl (#795), Kost1Impl, Kost2Impl. Все поля кэшируются в final-полях — создаются один раз при конструировании.

Почему не просто BuchungssatzDO implements Buchungssatz?

JPA-entity находится в модуле projectforge-business, а reporting-интерфейс используется в модуле финансовой отчётности. Прямая зависимость создала бы циклическую связь. Adapter решает эту проблему: DO ничего не знает о reporting, а reporting получает данные через обёртку. Кроме того, Impl может трансформировать данные (форматирование, вычисляемые поля) не загрязняя DO бизнес-логикой отчётов.

Git History

868d6abb7 2025 -> 2026
63081666f Source file headers: 2024-> 2025.
4c04cfd65 MAJOR-CHANGE! Migration of integer id's to Long id's (including fk's etc.)
b6092df09 Copyright 2023 -> 2024
ab45d51fa Copyright 2001-2022 -> 2001-2023.
5f7ef41b8 Copyright 2021 -> 2022
ceb63e8a1 Source code header: (C) 2001-2021.
a6a7aece4 Optimize Imports
78b436d9e Replace instances of java.util.date and java.sql.Date with java.time.LocalDate
7c79f1922 Copyright of source header -> 2020.