WithTrackingData.java
/*
* The coLAB project
* Copyright (C) 2021-2023 AlbaSim, MEI, HEIG-VD, HES-SO
*
* Licensed under the MIT License
*/
package ch.colabproject.colab.api.model;
import ch.colabproject.colab.api.model.common.Tracking;
import ch.colabproject.colab.api.model.user.User;
import java.time.OffsetDateTime;
/**
* Simple interface which depicts objects having tracking data
*
* @author sandra
*/
public interface WithTrackingData {
/**
* Get the tracking data
*
* @return the tracking data
*/
Tracking getTrackingData();
/**
* Set the tracking data
*
* @param trackingData new tracking data
*/
void setTrackingData(Tracking trackingData);
/**
* Update tracking data
*
* @param user the current user
*/
default void touch(User user) {
String username = user != null ? user.getUsername() : null;
OffsetDateTime now = OffsetDateTime.now();
Tracking trackingData = getTrackingData();
if (trackingData == null) {
setTrackingData(new Tracking());
trackingData = getTrackingData();
trackingData.setCreatedBy(username);
trackingData.setCreationTime(now);
}
trackingData.setModifiedBy(username);
trackingData.setModificationTime(now);
}
/**
* Update the erasure tracking data.
*
* @param user the current user
*/
default void initErasureTrackingData(User user) {
String username = user != null ? user.getUsername() : null;
OffsetDateTime now = OffsetDateTime.now();
Tracking trackingData = getTrackingData();
if (trackingData != null) {
trackingData.setErasedBy(username);
trackingData.setErasureTime(now);
}
}
/**
* Remove the erasure tracking data.
*/
default void resetErasureTrackingData() {
Tracking trackingData = getTrackingData();
if (trackingData != null) {
trackingData.setErasedBy(null);
trackingData.setErasureTime(null);
}
}
}