package org.asamk.signal.manager.api; import java.util.Set; public class UpdateGroup { private final String name; private final String description; private final Set members; private final Set removeMembers; private final Set admins; private final Set removeAdmins; private final Set banMembers; private final Set unbanMembers; private final boolean resetGroupLink; private final GroupLinkState groupLinkState; private final GroupPermission addMemberPermission; private final GroupPermission editDetailsPermission; private final String avatarFile; private final Integer expirationTimer; private final Boolean isAnnouncementGroup; private UpdateGroup(final Builder builder) { name = builder.name; description = builder.description; members = builder.members; removeMembers = builder.removeMembers; admins = builder.admins; removeAdmins = builder.removeAdmins; banMembers = builder.banMembers; unbanMembers = builder.unbanMembers; resetGroupLink = builder.resetGroupLink; groupLinkState = builder.groupLinkState; addMemberPermission = builder.addMemberPermission; editDetailsPermission = builder.editDetailsPermission; avatarFile = builder.avatarFile; expirationTimer = builder.expirationTimer; isAnnouncementGroup = builder.isAnnouncementGroup; } public static Builder newBuilder() { return new Builder(); } public static Builder newBuilder(final UpdateGroup copy) { return new Builder(copy.name, copy.description, copy.members, copy.removeMembers, copy.admins, copy.removeAdmins, copy.banMembers, copy.unbanMembers, copy.resetGroupLink, copy.groupLinkState, copy.addMemberPermission, copy.editDetailsPermission, copy.avatarFile, copy.expirationTimer, copy.isAnnouncementGroup); } public static Builder newBuilder( final String name, final String description, final Set members, final Set removeMembers, final Set admins, final Set removeAdmins, final Set banMembers, final Set unbanMembers, final boolean resetGroupLink, final GroupLinkState groupLinkState, final GroupPermission addMemberPermission, final GroupPermission editDetailsPermission, final String avatarFile, final Integer expirationTimer, final Boolean isAnnouncementGroup ) { return new Builder(name, description, members, removeMembers, admins, removeAdmins, banMembers, unbanMembers, resetGroupLink, groupLinkState, addMemberPermission, editDetailsPermission, avatarFile, expirationTimer, isAnnouncementGroup); } public String getName() { return name; } public String getDescription() { return description; } public Set getMembers() { return members; } public Set getRemoveMembers() { return removeMembers; } public Set getAdmins() { return admins; } public Set getRemoveAdmins() { return removeAdmins; } public Set getBanMembers() { return banMembers; } public Set getUnbanMembers() { return unbanMembers; } public boolean isResetGroupLink() { return resetGroupLink; } public GroupLinkState getGroupLinkState() { return groupLinkState; } public GroupPermission getAddMemberPermission() { return addMemberPermission; } public GroupPermission getEditDetailsPermission() { return editDetailsPermission; } public String getAvatarFile() { return avatarFile; } public Integer getExpirationTimer() { return expirationTimer; } public Boolean getIsAnnouncementGroup() { return isAnnouncementGroup; } public static final class Builder { private String name; private String description; private Set members; private Set removeMembers; private Set admins; private Set removeAdmins; private Set banMembers; private Set unbanMembers; private boolean resetGroupLink; private GroupLinkState groupLinkState; private GroupPermission addMemberPermission; private GroupPermission editDetailsPermission; private String avatarFile; private Integer expirationTimer; private Boolean isAnnouncementGroup; private Builder() { } private Builder( final String name, final String description, final Set members, final Set removeMembers, final Set admins, final Set removeAdmins, final Set banMembers, final Set unbanMembers, final boolean resetGroupLink, final GroupLinkState groupLinkState, final GroupPermission addMemberPermission, final GroupPermission editDetailsPermission, final String avatarFile, final Integer expirationTimer, final Boolean isAnnouncementGroup ) { this.name = name; this.description = description; this.members = members; this.removeMembers = removeMembers; this.admins = admins; this.removeAdmins = removeAdmins; this.banMembers = banMembers; this.unbanMembers = unbanMembers; this.resetGroupLink = resetGroupLink; this.groupLinkState = groupLinkState; this.addMemberPermission = addMemberPermission; this.editDetailsPermission = editDetailsPermission; this.avatarFile = avatarFile; this.expirationTimer = expirationTimer; this.isAnnouncementGroup = isAnnouncementGroup; } public Builder withName(final String val) { name = val; return this; } public Builder withDescription(final String val) { description = val; return this; } public Builder withMembers(final Set val) { members = val; return this; } public Builder withRemoveMembers(final Set val) { removeMembers = val; return this; } public Builder withAdmins(final Set val) { admins = val; return this; } public Builder withRemoveAdmins(final Set val) { removeAdmins = val; return this; } public Builder withBanMembers(final Set val) { banMembers = val; return this; } public Builder withUnbanMembers(final Set val) { unbanMembers = val; return this; } public Builder withResetGroupLink(final boolean val) { resetGroupLink = val; return this; } public Builder withGroupLinkState(final GroupLinkState val) { groupLinkState = val; return this; } public Builder withAddMemberPermission(final GroupPermission val) { addMemberPermission = val; return this; } public Builder withEditDetailsPermission(final GroupPermission val) { editDetailsPermission = val; return this; } public Builder withAvatarFile(final String val) { avatarFile = val; return this; } public Builder withExpirationTimer(final Integer val) { expirationTimer = val; return this; } public Builder withIsAnnouncementGroup(final Boolean val) { isAnnouncementGroup = val; return this; } public UpdateGroup build() { return new UpdateGroup(this); } } }