AddressImageCache.ktAddressImageDO-Metadaten abbildet (ohne binäre Bilddaten). Bietet schnelle Abfragen, ob eine Adresse ein Bild hat und welchen Typ es besitzt.AddressImageCache erweitert AbstractCache, die Basisklasse von ProjectForge für aktualisierbare Caches. Das Framework ruft refresh() periodisch oder bei Bedarf auf, synchronisiert, um gleichzeitige Änderungen zu verhindern.
Der Cache speichert eine Map<Long, AddressImageDO>, wobei jeder Wert ein leichtgewichtiges AddressImageDO ist, das nur enthält:
lastUpdate — Zeitstempel der letzten Änderung für Frischeprüfungen des Caches.imageType — Das Bildformat (ImageType.PNG standardmäßig).Binärdaten sind ausgeschlossen — weder preview- noch image-Byte-Arrays werden geladen. Dies hält den Cache speichereffizient, während die Frage „Hat Adresse X ein Bild?“ sofort beantwortet werden kann.
refresh() wird innerhalb eines schreibgeschützten, isolierten Persistenzkontexts ausgeführt (für saubere Transaktionsgrenzen). Es verwendet eine JPQL-Abfrage, die addressId, lastUpdate und imageType als Tuple-Projektion auswählt und die gesamte Karte atomar neu aufbaut, um Probleme durch gleichzeitiges Lesen zu vermeiden.
getImage(addressId) ist die einzige öffentliche API. Sie ruft checkRefresh() (von AbstractCache geerbt) auf, um die Aktualität vor dem Nachschlagen in der Karte sicherzustellen. Ein Null-Rückgabewert bedeutet, dass für diese Adresse kein Bild existiert.
Das Companion-Objekt enthält eine lateinit var instance, die in @PostConstruct gesetzt wird, um statischen Zugriff aus Code zu ermöglichen, der keine Spring-Injektion verwenden kann.
868d6abb7 2025 -> 2026 63081666f Quelltext-Dateiköpfe: 2024 -> 2025. 943947aaa Adressen: Unterstützung von GIF und JPEG 0ceceb28f Alle Cache-Aktualisierungen laufen jetzt in isolierten Transaktionen 5989b32fd BaseDao: Mechanismus von onChangeListener umgestaltet. 1b50060c3 BaseDao: umbenannt: get -> find, save -> insert, getList -> select, load -> select