/* 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.docs; import com.google.gdata.data.BaseEntry; import com.google.gdata.data.Category; import com.google.gdata.data.ExtensionProfile; import com.google.gdata.data.Kind; import com.google.gdata.util.Namespaces; /** * An entry representing a single audio file with a {@link DocumentListFeed}. * * */ @Kind.Term(AudioEntry.KIND) public class AudioEntry extends DocumentListEntry { /** * Label for category. */ public static final String LABEL = "audio"; /** * Kind category term used to label the entries which are of this document type. */ public static final String KIND = DocsNamespace.DOCS_PREFIX + AudioEntry.LABEL; /** * Category used to label entries which are of this document type. */ public static final Category CATEGORY = new Category(Namespaces.gKind, KIND, LABEL); /** * Constructs a new uninitialized entry, to be populated by the GData parsers. */ public AudioEntry() { super(); getCategories().remove(DocumentListEntry.CATEGORY); getCategories().add(CATEGORY); } /** * Constructs a new entry by doing a shallow copy from another BaseEntry instance. */ public AudioEntry(BaseEntry<?> sourceEntry) { super(sourceEntry); } @Override public void declareExtensions(ExtensionProfile extProfile) { if (extProfile.isDeclared(AudioEntry.class)) { return; } super.declareExtensions(extProfile); extProfile.declare(AudioEntry.class, Album.class); extProfile.declare(AudioEntry.class, AlbumArt.class); extProfile.declare(AudioEntry.class, AlbumArtist.class); extProfile.declare(AudioEntry.class, Artist.class); extProfile.declare(AudioEntry.class, Composer.class); extProfile.declare(AudioEntry.class, Duration.class); extProfile.declare(AudioEntry.class, Genre.class); extProfile.declare(AudioEntry.class, Size.class); extProfile.declare(AudioEntry.class, Track.class); extProfile.declare(AudioEntry.class, Year.class); } /** * Returns the album. */ public Album getAlbum() { return getExtension(Album.class); } /** * Sets the album. * @param album album or <code>null</code> to reset */ public void setAlbum(Album album) { if (album == null) { removeExtension(Album.class); } else { setExtension(album); } } /** * Returns whether it has the album. */ public boolean hasAlbum() { return hasExtension(Album.class); } /** * Returns the album art. */ public AlbumArt getAlbumArt() { return getExtension(AlbumArt.class); } /** * Sets the album art. * @param albumArt album art or <code>null</code> to reset */ public void setAlbumArt(AlbumArt albumArt) { if (albumArt == null) { removeExtension(AlbumArt.class); } else { setExtension(albumArt); } } /** * Returns whether it has the album art. */ public boolean hasAlbumArt() { return hasExtension(AlbumArt.class); } /** * Returns the album artist. */ public AlbumArtist getAlbumArtist() { return getExtension(AlbumArtist.class); } /** * Sets the album artist. * @param albumArtist album artist or <code>null</code> to reset */ public void setAlbumArtist(AlbumArtist albumArtist) { if (albumArtist == null) { removeExtension(AlbumArtist.class); } else { setExtension(albumArtist); } } /** * Returns whether it has the album artist. */ public boolean hasAlbumArtist() { return hasExtension(AlbumArtist.class); } /** * Returns the artist. */ public Artist getArtist() { return getExtension(Artist.class); } /** * Sets the artist. * @param artist artist or <code>null</code> to reset */ public void setArtist(Artist artist) { if (artist == null) { removeExtension(Artist.class); } else { setExtension(artist); } } /** * Returns whether it has the artist. */ public boolean hasArtist() { return hasExtension(Artist.class); } /** * Returns the composer. */ public Composer getComposer() { return getExtension(Composer.class); } /** * Sets the composer. * @param composer composer or <code>null</code> to reset */ public void setComposer(Composer composer) { if (composer == null) { removeExtension(Composer.class); } else { setExtension(composer); } } /** * Returns whether it has the composer. */ public boolean hasComposer() { return hasExtension(Composer.class); } /** * Returns the duration. */ public Duration getDuration() { return getExtension(Duration.class); } /** * Sets the duration * @param duration duration or <code>null</code> to reset */ public void setDuration(Duration duration) { if (duration == null) { removeExtension(Duration.class); } else { setExtension(duration); } } /** * Returns whether it has the duration. */ public boolean hasDuration() { return hasExtension(Duration.class); } /** * Returns the genre. */ public Genre getGenre() { return getExtension(Genre.class); } /** * Sets the genre. * @param genre genre or <code>null</code> to reset */ public void setGenre(Genre genre) { if (genre == null) { removeExtension(Genre.class); } else { setExtension(genre); } } /** * Returns whether it has the genre. */ public boolean hasGenre() { return hasExtension(Genre.class); } /** * Returns the size. */ public Size getSize() { return getExtension(Size.class); } /** * Sets the size. * @param size size or <code>null</code> to reset */ public void setSize(Size size) { if (size == null) { removeExtension(Size.class); } else { setExtension(size); } } /** * Returns whether it has the size. */ public boolean hasSize() { return hasExtension(Size.class); } /** * Returns the track. */ public Track getTrack() { return getExtension(Track.class); } /** * Sets the track. * @param track track or <code>null</code> to reset */ public void setTrack(Track track) { if (track == null) { removeExtension(Track.class); } else { setExtension(track); } } /** * Returns whether it has the track. */ public boolean hasTrack() { return hasExtension(Track.class); } /** * Returns the year. */ public Year getYear() { return getExtension(Year.class); } /** * Sets the year. * @param year year or <code>null</code> to reset */ public void setYear(Year year) { if (year == null) { removeExtension(Year.class); } else { setExtension(year); } } /** * Returns whether it has the year. */ public boolean hasYear() { return hasExtension(Year.class); } }