Package com.google.gdata.data.contacts

Source Code of com.google.gdata.data.contacts.BasePersonEntry

/* Copyright (c) 2008 Google Inc.
*
* 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 com.google.gdata.data.contacts;

import com.google.gdata.util.common.xml.XmlNamespace;
import com.google.gdata.data.BaseEntry;
import com.google.gdata.data.ExtensionDescription;
import com.google.gdata.data.ExtensionProfile;
import com.google.gdata.data.Link;
import com.google.gdata.data.batch.BatchId;
import com.google.gdata.data.batch.BatchInterrupted;
import com.google.gdata.data.batch.BatchOperation;
import com.google.gdata.data.batch.BatchStatus;
import com.google.gdata.data.extensions.Email;
import com.google.gdata.data.extensions.ExtendedProperty;
import com.google.gdata.data.extensions.Im;
import com.google.gdata.data.extensions.Name;
import com.google.gdata.data.extensions.Organization;
import com.google.gdata.data.extensions.PhoneNumber;
import com.google.gdata.data.extensions.PostalAddress;
import com.google.gdata.data.extensions.StructuredPostalAddress;
import com.google.gdata.data.extensions.Where;

import java.util.List;

/**
* Describes a person entry.
*
* @param <E> concrete entry type
*
*/
public abstract class BasePersonEntry<E extends BasePersonEntry<E>> extends
    BaseEntry<E> {

  /**
   * Default mutable constructor.
   */
  public BasePersonEntry() {
    super();
  }

  /**
   * Constructs a new instance by doing a shallow copy of data from an existing
   * {@link BaseEntry} instance.
   *
   * @param sourceEntry source entry
   */
  public BasePersonEntry(BaseEntry<?> sourceEntry) {
    super(sourceEntry);
  }

  @Override
  public void declareExtensions(ExtensionProfile extProfile) {
    if (extProfile.isDeclared(BasePersonEntry.class)) {
      return;
    }
    super.declareExtensions(extProfile);
    extProfile.declare(BasePersonEntry.class,
        new ExtensionDescription(BatchId.class, new XmlNamespace("batch",
        "http://schemas.google.com/gdata/batch"), "id", false, false, false));
    extProfile.declare(BasePersonEntry.class,
        new ExtensionDescription(BatchInterrupted.class,
        new XmlNamespace("batch", "http://schemas.google.com/gdata/batch"),
        "interrupted", false, false, false));
    extProfile.declare(BasePersonEntry.class,
        new ExtensionDescription(BatchOperation.class, new XmlNamespace("batch",
        "http://schemas.google.com/gdata/batch"), "operation", false, false,
        false));
    extProfile.declare(BasePersonEntry.class,
        new ExtensionDescription(BatchStatus.class, new XmlNamespace("batch",
        "http://schemas.google.com/gdata/batch"), "status", false, false,
        false));
    extProfile.declare(BasePersonEntry.class, BillingInformation.class);
    extProfile.declare(BasePersonEntry.class, Birthday.class);
    extProfile.declare(BasePersonEntry.class,
        CalendarLink.getDefaultDescription(false, true));
    extProfile.declare(BasePersonEntry.class, DirectoryServer.class);
    extProfile.declare(BasePersonEntry.class,
        new ExtensionDescription(Email.class, new XmlNamespace("gd",
        "http://schemas.google.com/g/2005"), "email", false, true, false));
    extProfile.declare(BasePersonEntry.class, Event.getDefaultDescription(false,
        true));
    new Event().declareExtensions(extProfile);
    extProfile.declare(BasePersonEntry.class,
        new ExtensionDescription(ExtendedProperty.class, new XmlNamespace("gd",
        "http://schemas.google.com/g/2005"), "extendedProperty", false, true,
        false));
    extProfile.declare(BasePersonEntry.class,
        ExternalId.getDefaultDescription(false, true));
    extProfile.declare(BasePersonEntry.class, FileAs.class);
    extProfile.declare(BasePersonEntry.class, Gender.class);
    extProfile.declare(BasePersonEntry.class, Hobby.getDefaultDescription(false,
        true));
    extProfile.declare(BasePersonEntry.class, Im.getDefaultDescription(false,
        true));
    extProfile.declare(BasePersonEntry.class, Initials.class);
    extProfile.declare(BasePersonEntry.class, Jot.getDefaultDescription(false,
        true));
    extProfile.declare(BasePersonEntry.class,
        Language.getDefaultDescription(false, true));
    extProfile.declare(BasePersonEntry.class, MaidenName.class);
    extProfile.declare(BasePersonEntry.class, Mileage.class);
    extProfile.declare(BasePersonEntry.class, Name.class);
    new Name().declareExtensions(extProfile);
    extProfile.declare(BasePersonEntry.class, Nickname.class);
    extProfile.declare(BasePersonEntry.class, Occupation.class);
    extProfile.declare(BasePersonEntry.class,
        Organization.getDefaultDescription(false, true));
    new Organization().declareExtensions(extProfile);
    extProfile.declare(BasePersonEntry.class,
        new ExtensionDescription(PhoneNumber.class, new XmlNamespace("gd",
        "http://schemas.google.com/g/2005"), "phoneNumber", false, true,
        false));
    extProfile.declare(BasePersonEntry.class,
        new ExtensionDescription(PostalAddress.class, new XmlNamespace("gd",
        "http://schemas.google.com/g/2005"), "postalAddress", false, true,
        false));
    extProfile.declare(BasePersonEntry.class, Priority.class);
    extProfile.declare(BasePersonEntry.class,
        Relation.getDefaultDescription(false, true));
    extProfile.declare(BasePersonEntry.class, Sensitivity.class);
    extProfile.declare(BasePersonEntry.class, ShortName.class);
    extProfile.declare(BasePersonEntry.class, Status.class);
    extProfile.declare(BasePersonEntry.class,
        StructuredPostalAddress.getDefaultDescription(false, true));
    new StructuredPostalAddress().declareExtensions(extProfile);
    extProfile.declare(BasePersonEntry.class, Subject.class);
    extProfile.declare(BasePersonEntry.class,
        UserDefinedField.getDefaultDescription(false, true));
    extProfile.declare(BasePersonEntry.class,
        Website.getDefaultDescription(false, true));
    extProfile.declare(BasePersonEntry.class,
        new ExtensionDescription(Where.class, new XmlNamespace("gd",
        "http://schemas.google.com/g/2005"), "where", false, false, false));
    new Where().declareExtensions(extProfile);
  }

  /**
   * Returns the batch identifier.
   *
   * @return batch identifier
   */
  public BatchId getBatchId() {
    return getExtension(BatchId.class);
  }

  /**
   * Sets the batch identifier.
   *
   * @param batchId batch identifier or <code>null</code> to reset
   */
  public void setBatchId(BatchId batchId) {
    if (batchId == null) {
      removeExtension(BatchId.class);
    } else {
      setExtension(batchId);
    }
  }

  /**
   * Returns whether it has the batch identifier.
   *
   * @return whether it has the batch identifier
   */
  public boolean hasBatchId() {
    return hasExtension(BatchId.class);
  }

  /**
   * Returns the batch interruption information.
   *
   * @return batch interruption information
   */
  public BatchInterrupted getBatchInterrupted() {
    return getExtension(BatchInterrupted.class);
  }

  /**
   * Sets the batch interruption information.
   *
   * @param batchInterrupted batch interruption information or <code>null</code>
   *     to reset
   */
  public void setBatchInterrupted(BatchInterrupted batchInterrupted) {
    if (batchInterrupted == null) {
      removeExtension(BatchInterrupted.class);
    } else {
      setExtension(batchInterrupted);
    }
  }

  /**
   * Returns whether it has the batch interruption information.
   *
   * @return whether it has the batch interruption information
   */
  public boolean hasBatchInterrupted() {
    return hasExtension(BatchInterrupted.class);
  }

  /**
   * Returns the batch operation.
   *
   * @return batch operation
   */
  public BatchOperation getBatchOperation() {
    return getExtension(BatchOperation.class);
  }

  /**
   * Sets the batch operation.
   *
   * @param batchOperation batch operation or <code>null</code> to reset
   */
  public void setBatchOperation(BatchOperation batchOperation) {
    if (batchOperation == null) {
      removeExtension(BatchOperation.class);
    } else {
      setExtension(batchOperation);
    }
  }

  /**
   * Returns whether it has the batch operation.
   *
   * @return whether it has the batch operation
   */
  public boolean hasBatchOperation() {
    return hasExtension(BatchOperation.class);
  }

  /**
   * Returns the batch response status information.
   *
   * @return batch response status information
   */
  public BatchStatus getBatchStatus() {
    return getExtension(BatchStatus.class);
  }

  /**
   * Sets the batch response status information.
   *
   * @param batchStatus batch response status information or <code>null</code>
   *     to reset
   */
  public void setBatchStatus(BatchStatus batchStatus) {
    if (batchStatus == null) {
      removeExtension(BatchStatus.class);
    } else {
      setExtension(batchStatus);
    }
  }

  /**
   * Returns whether it has the batch response status information.
   *
   * @return whether it has the batch response status information
   */
  public boolean hasBatchStatus() {
    return hasExtension(BatchStatus.class);
  }

  /**
   * Returns the billing information.
   *
   * @return billing information
   */
  public BillingInformation getBillingInformation() {
    return getExtension(BillingInformation.class);
  }

  /**
   * Sets the billing information.
   *
   * @param billingInformation billing information or <code>null</code> to reset
   */
  public void setBillingInformation(BillingInformation billingInformation) {
    if (billingInformation == null) {
      removeExtension(BillingInformation.class);
    } else {
      setExtension(billingInformation);
    }
  }

  /**
   * Returns whether it has the billing information.
   *
   * @return whether it has the billing information
   */
  public boolean hasBillingInformation() {
    return hasExtension(BillingInformation.class);
  }

  /**
   * Returns the birthday.
   *
   * @return birthday
   */
  public Birthday getBirthday() {
    return getExtension(Birthday.class);
  }

  /**
   * Sets the birthday.
   *
   * @param birthday birthday or <code>null</code> to reset
   */
  public void setBirthday(Birthday birthday) {
    if (birthday == null) {
      removeExtension(Birthday.class);
    } else {
      setExtension(birthday);
    }
  }

  /**
   * Returns whether it has the birthday.
   *
   * @return whether it has the birthday
   */
  public boolean hasBirthday() {
    return hasExtension(Birthday.class);
  }

  /**
   * Returns the calendar links.
   *
   * @return calendar links
   */
  public List<CalendarLink> getCalendarLinks() {
    return getRepeatingExtension(CalendarLink.class);
  }

  /**
   * Adds a new calendar link.
   *
   * @param calendarLink calendar link
   */
  public void addCalendarLink(CalendarLink calendarLink) {
    getCalendarLinks().add(calendarLink);
  }

  /**
   * Returns whether it has the calendar links.
   *
   * @return whether it has the calendar links
   */
  public boolean hasCalendarLinks() {
    return hasRepeatingExtension(CalendarLink.class);
  }

  /**
   * Returns the directory server.
   *
   * @return directory server
   */
  public DirectoryServer getDirectoryServer() {
    return getExtension(DirectoryServer.class);
  }

  /**
   * Sets the directory server.
   *
   * @param directoryServer directory server or <code>null</code> to reset
   */
  public void setDirectoryServer(DirectoryServer directoryServer) {
    if (directoryServer == null) {
      removeExtension(DirectoryServer.class);
    } else {
      setExtension(directoryServer);
    }
  }

  /**
   * Returns whether it has the directory server.
   *
   * @return whether it has the directory server
   */
  public boolean hasDirectoryServer() {
    return hasExtension(DirectoryServer.class);
  }

  /**
   * Returns the contact emails.
   *
   * @return contact emails
   */
  public List<Email> getEmailAddresses() {
    return getRepeatingExtension(Email.class);
  }

  /**
   * Adds a new contact email.
   *
   * @param emailAddress contact email
   */
  public void addEmailAddress(Email emailAddress) {
    getEmailAddresses().add(emailAddress);
  }

  /**
   * Returns whether it has the contact emails.
   *
   * @return whether it has the contact emails
   */
  public boolean hasEmailAddresses() {
    return hasRepeatingExtension(Email.class);
  }

  /**
   * Returns the events.
   *
   * @return events
   */
  public List<Event> getEvents() {
    return getRepeatingExtension(Event.class);
  }

  /**
   * Adds a new event.
   *
   * @param event event
   */
  public void addEvent(Event event) {
    getEvents().add(event);
  }

  /**
   * Returns whether it has the events.
   *
   * @return whether it has the events
   */
  public boolean hasEvents() {
    return hasRepeatingExtension(Event.class);
  }

  /**
   * Returns the contact extended properties.
   *
   * @return contact extended properties
   */
  public List<ExtendedProperty> getExtendedProperties() {
    return getRepeatingExtension(ExtendedProperty.class);
  }

  /**
   * Adds a new contact extended property.
   *
   * @param extendedProperty contact extended property
   */
  public void addExtendedProperty(ExtendedProperty extendedProperty) {
    getExtendedProperties().add(extendedProperty);
  }

  /**
   * Returns whether it has the contact extended properties.
   *
   * @return whether it has the contact extended properties
   */
  public boolean hasExtendedProperties() {
    return hasRepeatingExtension(ExtendedProperty.class);
  }

  /**
   * Returns the external ids.
   *
   * @return external ids
   */
  public List<ExternalId> getExternalIds() {
    return getRepeatingExtension(ExternalId.class);
  }

  /**
   * Adds a new external id.
   *
   * @param externalId external id
   */
  public void addExternalId(ExternalId externalId) {
    getExternalIds().add(externalId);
  }

  /**
   * Returns whether it has the external ids.
   *
   * @return whether it has the external ids
   */
  public boolean hasExternalIds() {
    return hasRepeatingExtension(ExternalId.class);
  }

  /**
   * Returns the person file as.
   *
   * @return person file as
   */
  public FileAs getFileAs() {
    return getExtension(FileAs.class);
  }

  /**
   * Sets the person file as.
   *
   * @param fileAs person file as or <code>null</code> to reset
   */
  public void setFileAs(FileAs fileAs) {
    if (fileAs == null) {
      removeExtension(FileAs.class);
    } else {
      setExtension(fileAs);
    }
  }

  /**
   * Returns whether it has the person file as.
   *
   * @return whether it has the person file as
   */
  public boolean hasFileAs() {
    return hasExtension(FileAs.class);
  }

  /**
   * Returns the gender.
   *
   * @return gender
   */
  public Gender getGender() {
    return getExtension(Gender.class);
  }

  /**
   * Sets the gender.
   *
   * @param gender gender or <code>null</code> to reset
   */
  public void setGender(Gender gender) {
    if (gender == null) {
      removeExtension(Gender.class);
    } else {
      setExtension(gender);
    }
  }

  /**
   * Returns whether it has the gender.
   *
   * @return whether it has the gender
   */
  public boolean hasGender() {
    return hasExtension(Gender.class);
  }

  /**
   * Returns the hobbies.
   *
   * @return hobbies
   */
  public List<Hobby> getHobbies() {
    return getRepeatingExtension(Hobby.class);
  }

  /**
   * Adds a new hobby.
   *
   * @param hobby hobby
   */
  public void addHobby(Hobby hobby) {
    getHobbies().add(hobby);
  }

  /**
   * Returns whether it has the hobbies.
   *
   * @return whether it has the hobbies
   */
  public boolean hasHobbies() {
    return hasRepeatingExtension(Hobby.class);
  }

  /**
   * Returns the contact ims.
   *
   * @return contact ims
   */
  public List<Im> getImAddresses() {
    return getRepeatingExtension(Im.class);
  }

  /**
   * Adds a new contact im.
   *
   * @param imAddress contact im
   */
  public void addImAddress(Im imAddress) {
    getImAddresses().add(imAddress);
  }

  /**
   * Returns whether it has the contact ims.
   *
   * @return whether it has the contact ims
   */
  public boolean hasImAddresses() {
    return hasRepeatingExtension(Im.class);
  }

  /**
   * Returns the initials.
   *
   * @return initials
   */
  public Initials getInitials() {
    return getExtension(Initials.class);
  }

  /**
   * Sets the initials.
   *
   * @param initials initials or <code>null</code> to reset
   */
  public void setInitials(Initials initials) {
    if (initials == null) {
      removeExtension(Initials.class);
    } else {
      setExtension(initials);
    }
  }

  /**
   * Returns whether it has the initials.
   *
   * @return whether it has the initials
   */
  public boolean hasInitials() {
    return hasExtension(Initials.class);
  }

  /**
   * Returns the jots.
   *
   * @return jots
   */
  public List<Jot> getJots() {
    return getRepeatingExtension(Jot.class);
  }

  /**
   * Adds a new jot.
   *
   * @param jot jot
   */
  public void addJot(Jot jot) {
    getJots().add(jot);
  }

  /**
   * Returns whether it has the jots.
   *
   * @return whether it has the jots
   */
  public boolean hasJots() {
    return hasRepeatingExtension(Jot.class);
  }

  /**
   * Returns the languages.
   *
   * @return languages
   */
  public List<Language> getLanguages() {
    return getRepeatingExtension(Language.class);
  }

  /**
   * Adds a new language.
   *
   * @param language language
   */
  public void addLanguage(Language language) {
    getLanguages().add(language);
  }

  /**
   * Returns whether it has the languages.
   *
   * @return whether it has the languages
   */
  public boolean hasLanguages() {
    return hasRepeatingExtension(Language.class);
  }

  /**
   * Returns the maiden name.
   *
   * @return maiden name
   */
  public MaidenName getMaidenName() {
    return getExtension(MaidenName.class);
  }

  /**
   * Sets the maiden name.
   *
   * @param maidenName maiden name or <code>null</code> to reset
   */
  public void setMaidenName(MaidenName maidenName) {
    if (maidenName == null) {
      removeExtension(MaidenName.class);
    } else {
      setExtension(maidenName);
    }
  }

  /**
   * Returns whether it has the maiden name.
   *
   * @return whether it has the maiden name
   */
  public boolean hasMaidenName() {
    return hasExtension(MaidenName.class);
  }

  /**
   * Returns the mileage.
   *
   * @return mileage
   */
  public Mileage getMileage() {
    return getExtension(Mileage.class);
  }

  /**
   * Sets the mileage.
   *
   * @param mileage mileage or <code>null</code> to reset
   */
  public void setMileage(Mileage mileage) {
    if (mileage == null) {
      removeExtension(Mileage.class);
    } else {
      setExtension(mileage);
    }
  }

  /**
   * Returns whether it has the mileage.
   *
   * @return whether it has the mileage
   */
  public boolean hasMileage() {
    return hasExtension(Mileage.class);
  }

  /**
   * Returns the contact name.
   *
   * @return contact name
   */
  public Name getName() {
    return getExtension(Name.class);
  }

  /**
   * Sets the contact name.
   *
   * @param name contact name or <code>null</code> to reset
   */
  public void setName(Name name) {
    if (name == null) {
      removeExtension(Name.class);
    } else {
      setExtension(name);
    }
  }

  /**
   * Returns whether it has the contact name.
   *
   * @return whether it has the contact name
   */
  public boolean hasName() {
    return hasExtension(Name.class);
  }

  /**
   * Returns the nickname.
   *
   * @return nickname
   */
  public Nickname getNickname() {
    return getExtension(Nickname.class);
  }

  /**
   * Sets the nickname.
   *
   * @param nickname nickname or <code>null</code> to reset
   */
  public void setNickname(Nickname nickname) {
    if (nickname == null) {
      removeExtension(Nickname.class);
    } else {
      setExtension(nickname);
    }
  }

  /**
   * Returns whether it has the nickname.
   *
   * @return whether it has the nickname
   */
  public boolean hasNickname() {
    return hasExtension(Nickname.class);
  }

  /**
   * Returns the occupation.
   *
   * @return occupation
   */
  public Occupation getOccupation() {
    return getExtension(Occupation.class);
  }

  /**
   * Sets the occupation.
   *
   * @param occupation occupation or <code>null</code> to reset
   */
  public void setOccupation(Occupation occupation) {
    if (occupation == null) {
      removeExtension(Occupation.class);
    } else {
      setExtension(occupation);
    }
  }

  /**
   * Returns whether it has the occupation.
   *
   * @return whether it has the occupation
   */
  public boolean hasOccupation() {
    return hasExtension(Occupation.class);
  }

  /**
   * Returns the contact organizations.
   *
   * @return contact organizations
   */
  public List<Organization> getOrganizations() {
    return getRepeatingExtension(Organization.class);
  }

  /**
   * Adds a new contact organization.
   *
   * @param organization contact organization
   */
  public void addOrganization(Organization organization) {
    getOrganizations().add(organization);
  }

  /**
   * Returns whether it has the contact organizations.
   *
   * @return whether it has the contact organizations
   */
  public boolean hasOrganizations() {
    return hasRepeatingExtension(Organization.class);
  }

  /**
   * Returns the contact phone numbers.
   *
   * @return contact phone numbers
   */
  public List<PhoneNumber> getPhoneNumbers() {
    return getRepeatingExtension(PhoneNumber.class);
  }

  /**
   * Adds a new contact phone number.
   *
   * @param phoneNumber contact phone number
   */
  public void addPhoneNumber(PhoneNumber phoneNumber) {
    getPhoneNumbers().add(phoneNumber);
  }

  /**
   * Returns whether it has the contact phone numbers.
   *
   * @return whether it has the contact phone numbers
   */
  public boolean hasPhoneNumbers() {
    return hasRepeatingExtension(PhoneNumber.class);
  }

  /**
   * Returns the contact postal addresses.
   *
   * @return contact postal addresses
   */
  public List<PostalAddress> getPostalAddresses() {
    return getRepeatingExtension(PostalAddress.class);
  }

  /**
   * Adds a new contact postal address.
   *
   * @param postalAddress contact postal address
   */
  public void addPostalAddress(PostalAddress postalAddress) {
    getPostalAddresses().add(postalAddress);
  }

  /**
   * Returns whether it has the contact postal addresses.
   *
   * @return whether it has the contact postal addresses
   */
  public boolean hasPostalAddresses() {
    return hasRepeatingExtension(PostalAddress.class);
  }

  /**
   * Returns the priority.
   *
   * @return priority
   */
  public Priority getPriority() {
    return getExtension(Priority.class);
  }

  /**
   * Sets the priority.
   *
   * @param priority priority or <code>null</code> to reset
   */
  public void setPriority(Priority priority) {
    if (priority == null) {
      removeExtension(Priority.class);
    } else {
      setExtension(priority);
    }
  }

  /**
   * Returns whether it has the priority.
   *
   * @return whether it has the priority
   */
  public boolean hasPriority() {
    return hasExtension(Priority.class);
  }

  /**
   * Returns the relations.
   *
   * @return relations
   */
  public List<Relation> getRelations() {
    return getRepeatingExtension(Relation.class);
  }

  /**
   * Adds a new relation.
   *
   * @param relation relation
   */
  public void addRelation(Relation relation) {
    getRelations().add(relation);
  }

  /**
   * Returns whether it has the relations.
   *
   * @return whether it has the relations
   */
  public boolean hasRelations() {
    return hasRepeatingExtension(Relation.class);
  }

  /**
   * Returns the sensitivity.
   *
   * @return sensitivity
   */
  public Sensitivity getSensitivity() {
    return getExtension(Sensitivity.class);
  }

  /**
   * Sets the sensitivity.
   *
   * @param sensitivity sensitivity or <code>null</code> to reset
   */
  public void setSensitivity(Sensitivity sensitivity) {
    if (sensitivity == null) {
      removeExtension(Sensitivity.class);
    } else {
      setExtension(sensitivity);
    }
  }

  /**
   * Returns whether it has the sensitivity.
   *
   * @return whether it has the sensitivity
   */
  public boolean hasSensitivity() {
    return hasExtension(Sensitivity.class);
  }

  /**
   * Returns the short name.
   *
   * @return short name
   */
  public ShortName getShortName() {
    return getExtension(ShortName.class);
  }

  /**
   * Sets the short name.
   *
   * @param shortName short name or <code>null</code> to reset
   */
  public void setShortName(ShortName shortName) {
    if (shortName == null) {
      removeExtension(ShortName.class);
    } else {
      setExtension(shortName);
    }
  }

  /**
   * Returns whether it has the short name.
   *
   * @return whether it has the short name
   */
  public boolean hasShortName() {
    return hasExtension(ShortName.class);
  }

  /**
   * Returns the status.
   *
   * @return status
   */
  public Status getStatus() {
    return getExtension(Status.class);
  }

  /**
   * Sets the status.
   *
   * @param status status or <code>null</code> to reset
   */
  public void setStatus(Status status) {
    if (status == null) {
      removeExtension(Status.class);
    } else {
      setExtension(status);
    }
  }

  /**
   * Returns whether it has the status.
   *
   * @return whether it has the status
   */
  public boolean hasStatus() {
    return hasExtension(Status.class);
  }

  /**
   * Returns the contact structured addresses.
   *
   * @return contact structured addresses
   */
  public List<StructuredPostalAddress> getStructuredPostalAddresses() {
    return getRepeatingExtension(StructuredPostalAddress.class);
  }

  /**
   * Adds a new contact structured address.
   *
   * @param structuredPostalAddress contact structured address
   */
  public void addStructuredPostalAddress(StructuredPostalAddress
      structuredPostalAddress) {
    getStructuredPostalAddresses().add(structuredPostalAddress);
  }

  /**
   * Returns whether it has the contact structured addresses.
   *
   * @return whether it has the contact structured addresses
   */
  public boolean hasStructuredPostalAddresses() {
    return hasRepeatingExtension(StructuredPostalAddress.class);
  }

  /**
   * Returns the subject.
   *
   * @return subject
   */
  public Subject getSubject() {
    return getExtension(Subject.class);
  }

  /**
   * Sets the subject.
   *
   * @param subject subject or <code>null</code> to reset
   */
  public void setSubject(Subject subject) {
    if (subject == null) {
      removeExtension(Subject.class);
    } else {
      setExtension(subject);
    }
  }

  /**
   * Returns whether it has the subject.
   *
   * @return whether it has the subject
   */
  public boolean hasSubject() {
    return hasExtension(Subject.class);
  }

  /**
   * Returns the user defined fields.
   *
   * @return user defined fields
   */
  public List<UserDefinedField> getUserDefinedFields() {
    return getRepeatingExtension(UserDefinedField.class);
  }

  /**
   * Adds a new user defined field.
   *
   * @param userDefinedField user defined field
   */
  public void addUserDefinedField(UserDefinedField userDefinedField) {
    getUserDefinedFields().add(userDefinedField);
  }

  /**
   * Returns whether it has the user defined fields.
   *
   * @return whether it has the user defined fields
   */
  public boolean hasUserDefinedFields() {
    return hasRepeatingExtension(UserDefinedField.class);
  }

  /**
   * Returns the websites.
   *
   * @return websites
   */
  public List<Website> getWebsites() {
    return getRepeatingExtension(Website.class);
  }

  /**
   * Adds a new website.
   *
   * @param website website
   */
  public void addWebsite(Website website) {
    getWebsites().add(website);
  }

  /**
   * Returns whether it has the websites.
   *
   * @return whether it has the websites
   */
  public boolean hasWebsites() {
    return hasRepeatingExtension(Website.class);
  }

  /**
   * Returns the person location.
   *
   * @return person location
   */
  public Where getWhere() {
    return getExtension(Where.class);
  }

  /**
   * Sets the person location.
   *
   * @param where person location or <code>null</code> to reset
   */
  public void setWhere(Where where) {
    if (where == null) {
      removeExtension(Where.class);
    } else {
      setExtension(where);
    }
  }

  /**
   * Returns whether it has the person location.
   *
   * @return whether it has the person location
   */
  public boolean hasWhere() {
    return hasExtension(Where.class);
  }

  /**
   * Returns the link to edit contact photo.
   *
   * @return Link to edit contact photo or {@code null} for none.
   */
  public Link getContactEditPhotoLink() {
    return getLink(ContactLink.Rel.EDIT_CONTACT_PHOTO, ContactLink.Type.IMAGE);
  }

  /**
   * Returns the link that provides the contact photo.
   *
   * @return Link that provides the contact photo or {@code null} for none.
   */
  public Link getContactPhotoLink() {
    return getLink(ContactLink.Rel.CONTACT_PHOTO, ContactLink.Type.IMAGE);
  }

  @Override
  protected void validate() {
  }

  @Override
  public String toString() {
    return "{BasePersonEntry " + super.toString() + "}";
  }

}
TOP

Related Classes of com.google.gdata.data.contacts.BasePersonEntry

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.