/* * Copyright 2012 SURFnet bv, The Netherlands * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package nl.surfnet.coin.api.client.domain; import java.io.Serializable; import java.util.HashSet; import java.util.Set; import org.apache.commons.lang.builder.ReflectionToStringBuilder; import org.apache.commons.lang.builder.ToStringStyle; import org.codehaus.jackson.annotate.JsonIgnore; import org.springframework.util.CollectionUtils; /** * Person representation * */ public class Person implements Serializable { private String nickname; private Set<Email> emails; private String id; private Name name; private Set<String> tags; private Set<Account> accounts; private String displayName; private String voot_membership_role; private Set<Organization> organizations; private Set<PhoneNumber> phoneNumbers; private String error; public void addEmail(Email email) { if (emails == null) { emails = new HashSet<Email>(); } emails.add(email); } public void addTag(String tag) { if (tags == null) { tags = new HashSet<String>(); } tags.add(tag); } public void addAccount(Account account) { if (accounts == null) { accounts = new HashSet<Account>(); } accounts.add(account); } public void addOrganization(Organization organization) { if (organizations == null) { organizations = new HashSet<Organization>(); } organizations.add(organization); } public void addPhoneNumber(PhoneNumber phoneNumber) { if (phoneNumbers == null) { phoneNumbers = new HashSet<PhoneNumber>(); } phoneNumbers.add(phoneNumber); } /** * @return the nickName */ public String getNickname() { return nickname; } /** * @param nickName * the nickName to set */ public void setNickname(String nickName) { this.nickname = nickName; } /** * @return the emails */ public Set<Email> getEmails() { return emails; } /* * Sensible default */ @JsonIgnore public String getEmailValue() { return CollectionUtils.isEmpty(emails) ? null : emails.iterator().next().getValue(); } /** * @param emails * the emails to set */ public void setEmails(Set<Email> emails) { this.emails = emails; } /** * @return the id */ public String getId() { return id; } /** * @param id * the id to set */ public void setId(String id) { this.id = id; } /** * @return the name */ public Name getName() { return name; } /** * @param name * the name to set */ public void setName(Name name) { this.name = name; } /** * @return the tags */ public Set<String> getTags() { return tags; } /** * @param tags * the tags to set */ public void setTags(Set<String> tags) { this.tags = tags; } /** * @return the accounts */ public Set<Account> getAccounts() { return accounts; } /** * @param accounts * the accounts to set */ public void setAccounts(Set<Account> accounts) { this.accounts = accounts; } /** * @return the displayName */ public String getDisplayName() { return displayName; } /** * @param displayName * the displayName to set */ public void setDisplayName(String displayName) { this.displayName = displayName; } /** * @return the voot_membership_role */ public String getVoot_membership_role() { return voot_membership_role; } /** * @param voot_membership_role * the voot_membership_role to set */ public void setVoot_membership_role(String voot_membership_role) { this.voot_membership_role = voot_membership_role; } /** * @return the organizations */ public Set<Organization> getOrganizations() { return organizations; } /** * @param organizations * the organizations to set */ public void setOrganizations(Set<Organization> organizations) { this.organizations = organizations; } /** * @return the phoneNumbers */ public Set<PhoneNumber> getPhoneNumbers() { return phoneNumbers; } /** * @param phoneNumbers * the phoneNumbers to set */ public void setPhoneNumbers(Set<PhoneNumber> phoneNumbers) { this.phoneNumbers = phoneNumbers; } /** * @return the error */ public String getError() { return error; } /** * @param error * the error to set */ public void setError(String error) { this.error = error; } @Override public String toString() { return new ReflectionToStringBuilder(this, ToStringStyle.SHORT_PREFIX_STYLE).toString(); } @Override public int hashCode() { return (this.id == null) ? 0 : id.hashCode(); } @Override public boolean equals(final Object other) { if (this == other) { return true; } if (!(other instanceof Person)) { return false; } // true if both ids null if (id == null && ((Person) other).id == null) { return true; } return id.equals(((Person)other).id); } }