Tools/src/main/java/de/ph87/tools/group/dto/GroupDto.java

79 lines
1.7 KiB
Java

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<UserPublicDto> users;
@JsonIgnore
@ToString.Include
public int users() {
return users.size();
}
@NonNull
@ToString.Exclude
public final Set<UserPublicDto> 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<UserPublicDto> users, @NonNull final Set<UserPublicDto> 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();
}
}