001package com.box.sdkgen.managers.memberships; 002 003import com.box.sdkgen.internal.Nullable; 004import com.box.sdkgen.internal.NullableFieldTracker; 005import com.box.sdkgen.internal.SerializableObject; 006import com.box.sdkgen.serialization.json.EnumWrapper; 007import com.fasterxml.jackson.annotation.JsonFilter; 008import com.fasterxml.jackson.annotation.JsonProperty; 009import com.fasterxml.jackson.databind.annotation.JsonDeserialize; 010import com.fasterxml.jackson.databind.annotation.JsonSerialize; 011import java.util.Map; 012import java.util.Objects; 013 014@JsonFilter("nullablePropertyFilter") 015public class CreateGroupMembershipRequestBody extends SerializableObject { 016 017 /** The user to add to the group. */ 018 protected final CreateGroupMembershipRequestBodyUserField user; 019 020 /** The group to add the user to. */ 021 protected final CreateGroupMembershipRequestBodyGroupField group; 022 023 /** The role of the user in the group. */ 024 @JsonDeserialize( 025 using = 026 CreateGroupMembershipRequestBodyRoleField 027 .CreateGroupMembershipRequestBodyRoleFieldDeserializer.class) 028 @JsonSerialize( 029 using = 030 CreateGroupMembershipRequestBodyRoleField 031 .CreateGroupMembershipRequestBodyRoleFieldSerializer.class) 032 protected EnumWrapper<CreateGroupMembershipRequestBodyRoleField> role; 033 034 /** 035 * Custom configuration for the permissions an admin if a group will receive. This option has no 036 * effect on members with a role of `member`. 037 * 038 * <p>Setting these permissions overwrites the default access levels of an admin. 039 * 040 * <p>Specifying a value of `null` for this object will disable all configurable permissions. 041 * Specifying permissions will set them accordingly, omitted permissions will be enabled by 042 * default. 043 */ 044 @JsonProperty("configurable_permissions") 045 @Nullable 046 protected Map<String, Boolean> configurablePermissions; 047 048 public CreateGroupMembershipRequestBody( 049 @JsonProperty("user") CreateGroupMembershipRequestBodyUserField user, 050 @JsonProperty("group") CreateGroupMembershipRequestBodyGroupField group) { 051 super(); 052 this.user = user; 053 this.group = group; 054 } 055 056 protected CreateGroupMembershipRequestBody(Builder builder) { 057 super(); 058 this.user = builder.user; 059 this.group = builder.group; 060 this.role = builder.role; 061 this.configurablePermissions = builder.configurablePermissions; 062 markNullableFieldsAsSet(builder.getExplicitlySetNullableFields()); 063 } 064 065 public CreateGroupMembershipRequestBodyUserField getUser() { 066 return user; 067 } 068 069 public CreateGroupMembershipRequestBodyGroupField getGroup() { 070 return group; 071 } 072 073 public EnumWrapper<CreateGroupMembershipRequestBodyRoleField> getRole() { 074 return role; 075 } 076 077 public Map<String, Boolean> getConfigurablePermissions() { 078 return configurablePermissions; 079 } 080 081 @Override 082 public boolean equals(Object o) { 083 if (this == o) { 084 return true; 085 } 086 if (o == null || getClass() != o.getClass()) { 087 return false; 088 } 089 CreateGroupMembershipRequestBody casted = (CreateGroupMembershipRequestBody) o; 090 return Objects.equals(user, casted.user) 091 && Objects.equals(group, casted.group) 092 && Objects.equals(role, casted.role) 093 && Objects.equals(configurablePermissions, casted.configurablePermissions); 094 } 095 096 @Override 097 public int hashCode() { 098 return Objects.hash(user, group, role, configurablePermissions); 099 } 100 101 @Override 102 public String toString() { 103 return "CreateGroupMembershipRequestBody{" 104 + "user='" 105 + user 106 + '\'' 107 + ", " 108 + "group='" 109 + group 110 + '\'' 111 + ", " 112 + "role='" 113 + role 114 + '\'' 115 + ", " 116 + "configurablePermissions='" 117 + configurablePermissions 118 + '\'' 119 + "}"; 120 } 121 122 public static class Builder extends NullableFieldTracker { 123 124 protected final CreateGroupMembershipRequestBodyUserField user; 125 126 protected final CreateGroupMembershipRequestBodyGroupField group; 127 128 protected EnumWrapper<CreateGroupMembershipRequestBodyRoleField> role; 129 130 protected Map<String, Boolean> configurablePermissions; 131 132 public Builder( 133 CreateGroupMembershipRequestBodyUserField user, 134 CreateGroupMembershipRequestBodyGroupField group) { 135 super(); 136 this.user = user; 137 this.group = group; 138 } 139 140 public Builder role(CreateGroupMembershipRequestBodyRoleField role) { 141 this.role = new EnumWrapper<CreateGroupMembershipRequestBodyRoleField>(role); 142 return this; 143 } 144 145 public Builder role(EnumWrapper<CreateGroupMembershipRequestBodyRoleField> role) { 146 this.role = role; 147 return this; 148 } 149 150 public Builder configurablePermissions(Map<String, Boolean> configurablePermissions) { 151 this.configurablePermissions = configurablePermissions; 152 this.markNullableFieldAsSet("configurable_permissions"); 153 return this; 154 } 155 156 public CreateGroupMembershipRequestBody build() { 157 return new CreateGroupMembershipRequestBody(this); 158 } 159 } 160}