/*
* Copyright (C) 2010-2014 Geometer Plus <contact@geometerplus.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
* 02110-1301, USA.
*/
package org.geometerplus.fbreader.network.rss;
import java.util.LinkedList;
import java.util.List;
import org.geometerplus.fbreader.network.NetworkBookItem;
import org.geometerplus.fbreader.network.atom.ATOMAuthor;
import org.geometerplus.fbreader.network.atom.ATOMCategory;
import org.geometerplus.fbreader.network.urlInfo.UrlInfoCollection;
public class RSSBookItem extends NetworkBookItem {
public RSSBookItem(
RSSNetworkLink link, String id, int index,
CharSequence title, CharSequence summary,
List<AuthorData> authors, List<String> tags,
String seriesTitle, float indexInSeries,
UrlInfoCollection<?> urls
) {
super(link, id, index,
title, summary,
authors, tags,
seriesTitle, indexInSeries,
urls
);
}
RSSBookItem(RSSNetworkLink networkLink, RSSItem entry, String baseUrl, int index) {
this(networkLink, entry.Id.Uri, index,
entry.Title, getAnnotation(entry),
getAuthors(entry), getTags(entry), null, 0, null
);
}
private static CharSequence getAnnotation(RSSItem entry) {
if (entry.Content != null) {
return entry.Content;
}
if (entry.Summary != null) {
return entry.Summary;
}
return null;
}
private static List<AuthorData> getAuthors(RSSItem entry) {
final LinkedList<AuthorData> authors = new LinkedList<AuthorData>();
for (ATOMAuthor author: entry.Authors) {
authors.add(new AuthorData(author.Name, null));
}
return authors;
}
private static List<String> getTags(RSSItem entry) {
final LinkedList<String> tags = new LinkedList<String>();
for (ATOMCategory category : entry.Categories) {
String label = category.getLabel();
if (label == null) {
label = category.getTerm();
}
if (label != null) {
tags.add(label);
}
}
return tags;
}
}