package com.gettingmobile.google.reader;
import com.gettingmobile.google.reader.rest.StreamContentOrder;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.TreeSet;
public class Feed extends SortedElement implements TaggedElement {
private Set<ElementId> tags = new TreeSet<ElementId>();
private String htmlUrl = null;
private Map<ElementId, Integer> sortOrderInTag = null;
public Feed() {
}
@Override
public Set<ElementId> getTagIds() {
return tags;
}
@Override
public boolean hasTag(ElementId tagId) {
return tags.contains(tagId);
}
public String getHtmlUrl() {
return htmlUrl;
}
public void setHtmlUrl(String htmlUrl) {
this.htmlUrl = htmlUrl;
}
public void clearSortOrder() {
if (sortOrderInTag != null) {
sortOrderInTag.clear();
}
rootSortOrder = Integer.MAX_VALUE;
}
public void setSortOrder(ElementId tag, int sortOrder) {
if (sortOrderInTag == null) {
sortOrderInTag = new HashMap<ElementId, Integer>();
}
sortOrderInTag.put(tag, sortOrder);
}
public void setSortOrder(StreamContentOrder sortOrder) {
clearSortOrder();
final String sortId = getSortId();
if (sortId != null) {
if (!tags.isEmpty()) {
for (ElementId tag : tags) {
setSortOrder(tag, sortOrder.getSortOrder(tag, sortId));
}
} else {
final Map<String, Integer> sortIdOrder = sortOrder.getSortIdOrder(ItemState.ROOT.getId());
final Integer s = sortIdOrder != null ? sortIdOrder.get(sortId) : null;
if (s != null) {
rootSortOrder = s;
}
}
}
}
public int getSortOrder(ElementId tagId) {
final Integer sortOrder = sortOrderInTag != null ? sortOrderInTag.get(tagId) : null;
return sortOrder != null ? sortOrder : Integer.MAX_VALUE;
}
}