package de.ph87.tools.group.dto; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.databind.annotation.JsonSerialize; import de.ph87.tools.common.uuid.UuidSerializer; import de.ph87.tools.group.Group; import de.ph87.tools.group.uuid.GroupUuid; import de.ph87.tools.user.UserPublicDto; import lombok.Getter; import lombok.NonNull; import lombok.ToString; import java.time.ZonedDateTime; import java.util.Set; @Getter @ToString public class GroupDto { @NonNull @JsonSerialize(using = UuidSerializer.class) public final GroupUuid uuid; @NonNull public final String title; @NonNull public final ZonedDateTime created; @NonNull @ToString.Exclude public final String password; @NonNull @ToString.Exclude public final UserPublicDto owner; @NonNull @JsonIgnore @ToString.Include public String ownerPublicUuid() { return owner.publicUuid.uuid; } @NonNull @ToString.Exclude public final Set users; @JsonIgnore @ToString.Include public int users() { return users.size(); } @NonNull @ToString.Exclude public final Set banned; @JsonIgnore @ToString.Include public int banned() { return banned.size(); } public final boolean initial; public GroupDto(@NonNull final Group group, @NonNull final UserPublicDto owner, @NonNull final Set users, @NonNull final Set banned) { this.uuid = group.getUuid(); this.title = group.getTitle(); this.created = group.getCreated(); this.password = group.getPassword(); this.owner = owner; this.users = users; this.banned = banned; this.initial = group.isInitial(); } }