AddressImageCache.ktAddressImageDO (à l'exclusion des données binaires de l'image). Fournit une recherche rapide pour savoir si une adresse possède une image et quel est son type.AddressImageCache étend AbstractCache, la classe de base de ProjectForge pour les caches actualisables. Le framework appelle refresh() périodiquement ou à la demande, synchronisé pour éviter les modifications concurrentes.
Le cache stocke une Map<Long, AddressImageDO> où chaque valeur est un AddressImageDO léger contenant uniquement :
lastUpdate — Horodatage de modification pour les vérifications de fraîcheur du cache.imageType — Le format de l'image (ImageType.PNG par défaut).Les données binaires sont exclues — ni les tableaux d'octets preview ni image ne sont chargés. Cela maintient le cache économe en mémoire tout en répondant instantanément à la question « l'adresse X a-t-elle une image ? ».
refresh() s'exécute dans un contexte de persistance isolé en lecture seule (pour des limites de transaction propres). Il utilise une requête JPQL sélectionnant addressId, lastUpdate et imageType comme projection Tuple, reconstruisant l'intégralité de la carte de manière atomique pour éviter les problèmes de lecture concurrente.
getImage(addressId) est la seule API publique. Elle appelle checkRefresh() (hérité de AbstractCache) pour garantir la fraîcheur avant de consulter la carte. Un retour nul signifie qu'aucune image n'existe pour cette adresse.
L'objet compagnon contient une lateinit var instance définie dans @PostConstruct, permettant un accès statique depuis du code ne pouvant pas utiliser l'injection Spring.
868d6abb7 2025 -> 2026 63081666f En-têtes des fichiers source : 2024 -> 2025. 943947aaa Adresses : support du gif et du jpeg 0ceceb28f Toutes les actualisations de cache s'exécutent désormais dans des transactions isolées 5989b32fd BaseDao : mécanisme de onChangeListener refactorisé. 1b50060c3 BaseDao : renommé : get -> find, save -> insert, getList -> select, load -> select