DataTransferAuditDO.ktAnnotations : Indexed, micromata, Table, author, get, NamedQueries, JsonSerialize, Entity
Classes : DataTransferAuditDO, Action
Classes d'énumération : Action
Entités JPA : DataTransferAuditDO (table : t_plugin_datatransfer_audit)
Fonctions (2) : createdByUserAsString, toString
Propriétés (23) : id, timestamp, areaId, byUser, byExternalUser, eventType, description, descriptionOld, uploadByUser, filename, filenameOld, notified, timeAgo, eventAsString, byUserAsString, filenameAsString, descriptionAsString, DELETE_OLD_ENTRIES, FIND_BY_AREA_ID, FIND_BY_ID, FIND_DOWNLOADS_BY_AREA_ID, FIND_QUEUED_ENTRIES_SENT_BY_AREA_ID_IGNORE_TYPES, UPDATE_NOTIFICATION_STATUS
Importations : 11 paquets
Paquet : org.projectforge.plugins.datatransfer
package org.projectforge.plugins.datatransfer
import com.fasterxml.jackson.annotation.JsonProperty
import com.fasterxml.jackson.databind.annotation.JsonSerialize
import org.hibernate.search.mapper.pojo.mapping.definition.annotation.Indexed
import org.projectforge.Constants
import org.projectforge.framework.i18n.TimeAgo
import org.projectforge.framework.i18n.translate
import org.projectforge.framework.jcr.AttachmentsEventType
import org.projectforge.framework.persistence.user.entities.PFUserDO
import java.util.*
import jakarta.persistence.*
import org.projectforge.framework.json.IdOnlySerializer
/**
* @author Kai Reinhard (k.reinhard@micromata.de)
*/
@Entity
@Indexed
@Table(name = "t_plugin_datatransfer_audit")
@NamedQueries(
NamedQuery(
name = DataTransferAuditDO.DELETE_OLD_ENTRIES,
query = "delete from DataTransferAuditDO where timestamp<=:timestamp"
),
NamedQuery(
name = DataTransferAuditDO.FIND_DOWNLOADS_BY_AREA_ID,
query = "from DataTransferAuditDO where areaId=:areaId and eventType in :eventTypes order by timestamp desc"
),
NamedQuery(
name = DataTransferAuditDO.FIND_BY_AREA_ID,
query = "from DataTransferAuditDO where areaId=:areaId order by timestamp desc"
),
NamedQuery(
name = DataTransferAuditDO.FIND_BY_ID,
query = "from DataTransferAuditDO where id=:id"
),
NamedQuery(
name = DataTransferAuditDO.FIND_QUEUED_ENTRIES_SENT_BY_AREA_ID_IGNORE_TYPES,
query = "from DataTransferAuditDO where areaId=:areaId and notified=false and eventType not in :eventTypes order by timestamp desc"
),
NamedQuery(
name = DataTransferAuditDO.UPDATE_NOTIFICATION_STATUS,
query = "update DataTransferAuditDO set notified=true where id IN :idList"
),
)
open class DataTransferAuditDO {
enum class Action { DELETE, DOWNLOAD, MODIFIED, UPLOAD }
@get:Id
@get:GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "hibernate_sequence")
@get:Column(name = "pk")
open var id: Long? = null
@get:Column
open var timestamp: Date? = null
/**
* Aucune contrainte (la zone peut être supprimée entre-temps).
*/
@get:Column(name = "area_fk", nullable = false)
open var areaId: Long? = null
@get:ManyToOne(fetch = FetchType.LAZY)
@get:JoinColumn(name = "by_user_fk")
@JsonSerialize(using = IdOnlySerializer::class)
open var byUser: PFUserDO? = null
@get:Column(name = "by_external_user", length = 4000)
open var byExternalUser: String? = null
@get:Enumerated(EnumType.STRING)
@get:Column(name = "event_type", length = 20, nullable = false)
open var eventType: AttachmentsEventType? = null
@get:Column(length = Constants.LENGTH_TEXT)
open var description: String? = null
/**
* Ancienne valeur de la description (si modifiée).
*/
@get:Column(name = "description_old", length = Constants.LENGTH_TEXT)
open var descriptionOld: String? = null
/**
* L'utilisateur a téléchargé le fichier. Il est stocké ici, car le fichier pourrait être supprimé entre-temps pour informer
* cet utilisateur de la suppression et de toute autre modification et téléchargement.
*/
@get:ManyToOne(fetch = FetchType.LAZY)
@get:JoinColumn(name = "upload_by_user_fk")
@JsonSerialize(using = IdOnlySerializer::class)
open var uploadByUser: PFUserDO? = null
@get:Column(length = 1000)
open var filename: String? = null
/**
* Ancienne valeur de la description (si modifiée).
*/
@get:Column(name = "filename_old", length = 1000)
open var filenameOld: String? = null
/**
* Notification envoyée à tous les observateurs ? Est également défini sur true après le traitement, si aucun observateur n'est enregistré.
*/
@get:Column(name = "notified")
open var notified: Boolean = false
/**
* Horodatage de l'événement sous forme de message temporel lisible.
*/
@get:Transient
@get:JsonProperty(access = JsonProperty.Access.READ_ONLY)
open val timeAgo
get() = TimeAgo.getMessage(timestamp)
@get:Transient
@get:JsonProperty(access = JsonProperty.Access.READ_ONLY)
// ... (tronqué, 160 lignes au total)
868d6abb7 2025 -> 2026 63081666f En-têtes des fichiers source : 2024 -> 2025. 0237d5eba Réorganisation de la sérialisation JSON : introduction de IdOnlySerializer et IdsOnlySerializer. ca9851ba0 WIP : gradle... 1ffa5a1ef WIP : gradle...