/* 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.extensions; import com.google.gdata.data.ExtensionDescription; import com.google.gdata.data.ExtensionPoint; import com.google.gdata.data.ExtensionProfile; import com.google.gdata.util.Namespaces; /** * Name of a person in a structured form. * * */ @ExtensionDescription.Default( nsAlias = Namespaces.gAlias, nsUri = Namespaces.g, localName = Name.XML_NAME) public class Name extends ExtensionPoint { /** XML element name */ static final String XML_NAME = "name"; /** * Default mutable constructor. */ public Name() { super(); } @Override public void declareExtensions(ExtensionProfile extProfile) { if (extProfile.isDeclared(Name.class)) { return; } extProfile.declare(Name.class, AdditionalName.class); extProfile.declare(Name.class, FamilyName.class); extProfile.declare(Name.class, FullName.class); extProfile.declare(Name.class, GivenName.class); extProfile.declare(Name.class, NamePrefix.class); extProfile.declare(Name.class, NameSuffix.class); } /** * Returns the additional name. * * @return additional name */ public AdditionalName getAdditionalName() { return getExtension(AdditionalName.class); } /** * Sets the additional name. * * @param additionalName additional name or <code>null</code> to reset */ public void setAdditionalName(AdditionalName additionalName) { if (additionalName == null) { removeExtension(AdditionalName.class); } else { setExtension(additionalName); } } /** * Returns whether it has the additional name. * * @return whether it has the additional name */ public boolean hasAdditionalName() { return hasExtension(AdditionalName.class); } /** * Returns the family name. * * @return family name */ public FamilyName getFamilyName() { return getExtension(FamilyName.class); } /** * Sets the family name. * * @param familyName family name or <code>null</code> to reset */ public void setFamilyName(FamilyName familyName) { if (familyName == null) { removeExtension(FamilyName.class); } else { setExtension(familyName); } } /** * Returns whether it has the family name. * * @return whether it has the family name */ public boolean hasFamilyName() { return hasExtension(FamilyName.class); } /** * Returns the full name. * * @return full name */ public FullName getFullName() { return getExtension(FullName.class); } /** * Sets the full name. * * @param fullName full name or <code>null</code> to reset */ public void setFullName(FullName fullName) { if (fullName == null) { removeExtension(FullName.class); } else { setExtension(fullName); } } /** * Returns whether it has the full name. * * @return whether it has the full name */ public boolean hasFullName() { return hasExtension(FullName.class); } /** * Returns the given name. * * @return given name */ public GivenName getGivenName() { return getExtension(GivenName.class); } /** * Sets the given name. * * @param givenName given name or <code>null</code> to reset */ public void setGivenName(GivenName givenName) { if (givenName == null) { removeExtension(GivenName.class); } else { setExtension(givenName); } } /** * Returns whether it has the given name. * * @return whether it has the given name */ public boolean hasGivenName() { return hasExtension(GivenName.class); } /** * Returns the name prefix. * * @return name prefix */ public NamePrefix getNamePrefix() { return getExtension(NamePrefix.class); } /** * Sets the name prefix. * * @param namePrefix name prefix or <code>null</code> to reset */ public void setNamePrefix(NamePrefix namePrefix) { if (namePrefix == null) { removeExtension(NamePrefix.class); } else { setExtension(namePrefix); } } /** * Returns whether it has the name prefix. * * @return whether it has the name prefix */ public boolean hasNamePrefix() { return hasExtension(NamePrefix.class); } /** * Returns the name suffix. * * @return name suffix */ public NameSuffix getNameSuffix() { return getExtension(NameSuffix.class); } /** * Sets the name suffix. * * @param nameSuffix name suffix or <code>null</code> to reset */ public void setNameSuffix(NameSuffix nameSuffix) { if (nameSuffix == null) { removeExtension(NameSuffix.class); } else { setExtension(nameSuffix); } } /** * Returns whether it has the name suffix. * * @return whether it has the name suffix */ public boolean hasNameSuffix() { return hasExtension(NameSuffix.class); } @Override protected void validate() { } /** * Returns the extension description, specifying whether it is required, and * whether it is repeatable. * * @param required whether it is required * @param repeatable whether it is repeatable * @return extension description */ public static ExtensionDescription getDefaultDescription(boolean required, boolean repeatable) { ExtensionDescription desc = ExtensionDescription.getDefaultDescription(Name.class); desc.setRequired(required); desc.setRepeatable(repeatable); return desc; } @Override public String toString() { return "{Name}"; } }