76 lines
1.6 KiB
Java
76 lines
1.6 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 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;
|
|
}
|
|
|
|
}
|