/* 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.youtube; 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.Kind; import com.google.gdata.data.extensions.Email; import com.google.gdata.util.Namespaces; /** * An entry that corresponds to a youtube contact/friend as * displayed on the user contacts feed. * * */ @Kind.Term(YouTubeNamespace.KIND_FRIEND) public class FriendEntry extends BaseEntry<FriendEntry> { /** * Nonstandard categories that might be found in this entry. */ public static final String[] CATEGORIES = { YouTubeNamespace.CONTACT_LIST_SCHEME }; public FriendEntry() { EntryUtils.setKind(this, YouTubeNamespace.KIND_FRIEND); } public FriendEntry(BaseEntry<?> base) { super(base); EntryUtils.setKind(this, YouTubeNamespace.KIND_FRIEND); } /** Gets the youtube username of the contact (for youtube user contacts). */ public String getUsername() { YtUsername username = getExtension(YtUsername.class); return username == null ? null : username.getContent(); } /** Sets the youtube username of the contact (for youtube user contacts). */ public void setUsername(String name) { if (name == null) { removeExtension(YtUsername.class); } else { setExtension(new YtUsername(name)); } } /** Sets the contact status. */ public void setStatus(YtStatus.Value status) { if (status == null) { removeExtension(YtStatus.class); } else { setExtension(new YtStatus(status)); } } /** Gets the contact status. */ public YtStatus.Value getStatus() { YtStatus status = getExtension(YtStatus.class); return status == null ? null : status.getStatus(); } /** Gets the url pointing to the user profile entry of this contact. */ public String getUserProfileLink() { Link link = getLink(Link.Rel.RELATED, Link.Type.ATOM); return link == null ? null : link.getHref(); } /** Adds a link to the user profile. */ public void addUserProfileLink(String url) { Link link = new Link(); link.setRel(Link.Rel.RELATED); link.setType(Link.Type.ATOM); link.setHref(url); getLinks().add(link); } /** Gets the contact e-mail address (for e-mail contacts.) */ public Email getEmail() { return getExtension(Email.class); } /** Sets the contact e-mail address (for e-mail contacs.) */ public void setEmail(Email email) { if (email == null) { removeExtension(Email.class); } else { setExtension(email); } } /** Declares extensions used in this entry. */ @Override public void declareExtensions(ExtensionProfile extProfile) { extProfile.declare(FriendEntry.class, YtStatus.class); extProfile.declare(FriendEntry.class, YtUsername.class); ExtensionDescription emailExtension = Email.getDefaultDescription(); emailExtension.setRepeatable(false); extProfile.declare(FriendEntry.class, emailExtension); extProfile.declareAdditionalNamespace(Namespaces.gNs); extProfile.declareArbitraryXmlExtension(FriendEntry.class); } }