package com.google.gdata.data.douban;
import java.util.List;
import com.google.gdata.data.BaseEntry;
import com.google.gdata.data.ExtensionDescription;
import com.google.gdata.data.ExtensionProfile;
import com.google.gdata.data.extensions.Rating;
//TODO: link elements inauthor can not be processed
@ExtensionDescription.Default(nsAlias = "", nsUri = "http://www.w3.org/2005/Atom", localName = "entry")
public class CollectionEntry extends BaseEntry<CollectionEntry> {
public CollectionEntry() {
super();
}
public CollectionEntry(BaseEntry sourceEntry) {
super(sourceEntry);
}
@Override
public void declareExtensions(ExtensionProfile extProfile) {
super.declareExtensions(extProfile);
ExtensionDescription desc = Tag.getDefaultDescription();
desc.setRepeatable(true);
extProfile.declare(CollectionEntry.class, desc);
extProfile.declare(CollectionEntry.class, Attribute.class);
extProfile.declare(CollectionEntry.class, Status.class);
extProfile.declare(CollectionEntry.class, Subject.class);
extProfile.declare(CollectionEntry.class, Rating
.getDefaultDescription(false));
extProfile.declareArbitraryXmlExtension(CollectionEntry.class);
}
public Status getStatus() {
return getExtension(Status.class);
}
public List<Attribute> getAttributes() {
return getRepeatingExtension(Attribute.class);
}
public Subject getSubjectEntry() {
return getExtension(Subject.class);
}
public List<Tag> getTags() {
return getRepeatingExtension(Tag.class);
}
/** Gets the gd:rating tag. */
public Rating getRating() {
return getExtension(Rating.class);
}
/** Sets the gd:rating tag. */
public void setRating(Rating rating) {
if (rating == null) {
removeExtension(Rating.class);
} else {
setExtension(rating);
}
}
public void setSubjectEntry(Subject subject) {
if (subject == null) {
removeExtension(Subject.class);
} else {
setExtension(subject);
}
}
public void setStatus(Status status) {
if (status == null) {
removeExtension(Status.class);
} else {
setExtension(status);
}
}
public void setTags(List<Tag> tags) {
if (tags == null) {
removeExtension(Tag.class);
} else {
for (Tag tag : tags)
addRepeatingExtension(tag);
}
}
}